あつまれ インターネットの森

社会人になってから暇なときにはてなブックマークを見てたりするんだけど、その時に見つけた気に入ってるWebを紹介するよ。

クソ酷いウェブサイト

超クールだね。

頑張るは悪い言葉

でも伊東ライフは好き。俺、伊東ライフ君と誕生日一緒なんだよね。

クソ簡単にgitの説明をする

git完全に理解した。

これは水です。

唯一無二のシンジツとは、「どう物事を見るかは自分で選択できる」ということです。これこそが君たちが受けた教育が生み出す自由の意味です。

灰と幻想のグリムガル

の話をする。俺はアニメから入って小説も読んでるけど、ふとアニメを見返してこの世界が好きだということを改めて思ったのでそのことについて綴る。

命のやりとりなんだ

敵と戦っているという実体はあるものの実感はなく、どこか浮ついた仲間に送られたこのセリフが俺はとっても好きで、この世界をよく表している言葉だと思っている。

灰と幻想のグリムガルのアニメは2016年冬に放送されていて、同時期にはこの素晴らしい世界に祝福を!とかも放送されていて、前々から漂っていた異世界ものが丸みを帯びてきたような時期だったと思う。灰と幻想のグリムガルはそんな異世界ものの中でも、現実感というものが一段上の世界だと思っている。

この世界ではゴブリンですら初めはまともに倒せない。数人がかりでやっと一匹のゴブリンを仕留めることで精一杯だ。今の俺が武器を持ったところでまともに使いこなせない、ましてや肉や骨を切ることの重みを受け入れることはできないだろう。そんな現実さがひしひしと伝わってくるんだ。相手は敵で魔物だが、相手の命を絶つという覚悟が持てていないのがよくわかる。それが如何に難しいことかがよくわかる。

「これは、命のやりとりなんだ」

そうやってようやく、生きていることを実感する。これは現実なんだと実感する。ゴブリン一匹を倒す。一匹しか倒していないけど時間が必要だった。命のやりとりという重みを受け入れる時間が。この世界はそういう余韻すら持たせてくれる。ゴブリン一匹に必死になって、死ぬ思いをしながら彼の命を絶つ。そうやって生きていかなければならないことを受け入れる。生きている喜びを知る。今まで見ていた景色さえ変わって見える。夕日ってこんなに奇麗だったんだな。

命のやりとりなんだ

似たような感情を抱いた作品がある。SAO。SAOも、あれは異世界じゃなくてバーチャルだけど、あの世界で生きている実感がある。だって死んだら死ぬ。ログアウトもできないから、あの世界で生きている。相手はバーチャルっていうところが違うところ。命のやりとりは教えてくれなかった世界。(PvPは命のやりとりだが)

似ているようでちょっと違う。俺はどっちも好き。命のやりとりというか、本物が好きなんだろうな。

命のやりとりなんだ

グリムガルはそういう世界観の他にも好きなものがたくさんある。よくありそうなあの環境も、水彩画チックな背景も、地味で頼りなくて可愛くてカッコよくてむかつく多彩なキャラクターも、それを完璧に演技している声優も、急に流れる音楽も、テンポが良いのか悪いのかわからないあのストーリーも。

アニメは小説2巻までぐらいの内容だと思うんだけど、それも丁度良いね。アニメの続きはなくても良いと思ってる。小説もそれなりにリアルに続いていくんだけど、だんだんそうも言っていられなくなっていくので、あれをアニメのクオリティでやろうとするのは大変だと思う。でも大丈夫、この12話で伝えたかったであろう世界観はちゃんと伝わってきたし、あのキャラクター達はちゃんとあの世界で生きている。

Webアプリ作った話

Webアプリを作って公開するまで。アプリ自体は過去記事参照

構想

イデア自体は随分昔からあった。そもそもNegitaku.orgがあったし、新しいことじゃない。数年前から作る機会があれば作りたいなとは思ってたし、サービス名(Looking for GG)もその時すでに考えていた。具体的な要件だったり、技術選定はいざ作ろうとなってから考えた。

技術選定

思い返してみると最初にそんなに考えてなかった。

  • 開発用OS:MacOS

    Windowsは頭に入ってなかった。ゲーム用OSだと思っている節があるし、ゲームの環境を汚したくないので。最近は仮想環境の面もあるし、元のOSはそこまで気にしなくてもよくなってるとは思う。開発するものによってはWindowsが選ばれることも多いし。Win+VirtualBox(Ubuntu)はなんかよく落ちるからなしにした。そのまんまUbuntuでもよかったけど「Mac使ってる俺カッケー」が体験したかったのでMacにした。でもこのMacbook pro、2011年モデルで対応はHigh Sierraまで。死んでいる。

  • 言語(フレームワーク):Python/Django

    普通にPython/DjangoRuby/Railsだと思ってた。で、触ったことがあるPythonにした。PythonWebフレームワークは他にもあるけど、Djangoなのは記事が一番多そうなので。Vue.jsとかReactとかフロントサイドらしき技術は何も考えてなかった。どこまで出来るのかとかも知らない。もともとUIとかデザイン的なところはあんまり考えるつもりがなかった。Django、開発は3.0でやってたけど、サポートの期間短いらしいので本番は2.2にしてる。

  • サーバー:さくらのVPS(Ubuntu)

    最初はHerokuかVPSかで考えてた。せっかくだからVPSにしてWebサーバーとかその辺りも勉強できるようにしようと思った。さくらのVPSは使ったことがあったからConohaにしようと思ってたら、既にさくらのVPSが契約中だった。解約したもんだと思ってた。 OSは皆CentOSを使っているのでUbuntuにしました。

  • Webサーバー:Nginx

    Apacheとどっちでもいいなら、これから先よく使われるだろうと思う方にした。

  • WSGI:Gunicorn

    最初はuWSGIにしようと思ってたけど参考書(あとで書く)がGunicornだったので。

  • DB:PostgreSQL

    MySQLPostgreSQLでなんとなくPosgre。理由はない。

要件

対人で楽をしたかった。責任を負いたくなかった。

  • シンプルに

    小難しいこととか、機能いろいろつけたりとかで面倒になって投げ出さないようにしたかった。あとは、デザイン面で頑張るつもりがなかったので、機能もシンプルに行くのが良いと思った。

  • 個人情報をもらわない

    本当はユーザー登録すらさせたくなかったけど、投稿したものの管理とかを考えるとユーザー機能を実装した方がスッキリ済むと思った。実はユーザー機能なしで実装してて詰まってしまって、それでユーザー機能を実装した。ただ、もらう情報はメールアドレスぐらいにとどめた。

  • デザインは考えない

    考えないは嘘だけど、なにも考えずBootstrapベースのBootstrapっぽさも消すこともしなかった。オタクゲーマーが使うサイトだし色は黒ベースにしようかな〜(キリト並感)、とか考えてヘッダーを黒(Bootstrapテンプレート)にしたらもうベースはこれでいいや感が出た。テンプレート名、Darkやぞ。イカしてる。

  • 機能

    投稿/編集/削除、リスト形式で投稿を一覧化/ゲームタイトルごとに絞れる

  • 投稿できること

    名前、ゲームタイトル、内容文、Twitterリンク、HPリンク

中身については作りながら考えてるものが多い、チームの募集は、最近はいろいろ部門を抱えてるゲーミングチームが多いので、個人が複数チーム募集できるようにした。スカウト登録は1件のみ。

開発

基本ネットの情報鵜呑みベースだけど、何か基準になるものがあると良いと思って本を購入した。現場で使える Django の教科書《基礎編》。実際の開発に役立つようなTips的な情報が載ってて良かった。ネットを検索すれば実装方法とかはいくらでも出てくるけど、Tips的な情報は探せばあるんだろうけど、簡単に見つからなかったりする。それがまとまってるのが楽だった。デプロイの時もこれの実践編を買ったけど超助かった。

そもそも特別な機能を盛り込んでないからほとんどDjangoに用意された機能で実現できるし、調べれば大抵のことは出てくるので、そこまで苦労した感がない。ただ、Djangoそもそもの動きをあまり理解せずに実装していったので、ちょっと道がそれるだけでわからなくなる。まあそれも調べれば大抵出てくるんだけど。あまりこだわりすぎなければ大抵は簡単に実装できそうだと思う。

若干こだわった部分とかもあって、ユーザーページのURLを同じにしたいとか。苦労した覚えもあるんだけど、コードをみると大したことじゃなさそうな感を今感じている。ユーザー機能(メールアドレス認証とかログインの機能とか)は調べて出てきた情報でいけたし、どこで躓いたっけな。。。苦労した感がないって書いたけど苦労はしてて、でも大抵は調べることに苦労してただけ。知恵を振り絞って解決した覚えがあまりないので、そういう点で苦労した感はない。

  • デザイン

    Bootstarpに丸投げ。とりあえず自分で見た感じで違和感ないようにしてたぐらい。もともとの構想からデザイン面は苦労せず作ろうと思ってたのでこれでヨシ! サイト内で使ってるアイコンはいらすとやから。ツイッターとかfaviconのアイコンは自作です。サイト内はまあええかーと思ってるけど、SNS系のアイコンとかは何とかしたいなーと思ってる。ロゴの発注ってそれなりにお値段がすることを初めて知った。安くて2万ぐらいからだけど、5万ぐらいは出したいなーと思ってる。お値段がかかることなので考え中。 あとは最近はWeb=スマートフォンなぐらいだと思ってるから、一応スマホでちゃんと見れるかぐらいはチェックしながら作ったつもり。

  • テスト

    やろう、やるぞ。とは思ってたけど結局あまりやってない。というかうまくやれていない。フォームの部分だったり、リストの部分だったり、ページネーションの部分だったりは動作確認をそれなりにしたけど、ユニットテストを含め再帰性のあるテストコードを書いていない。カバレッジすら取ってない。そのうちやるかーと思ってるけど、さっさとやらないとずっとやらないことになると思う。機能実装したらその都度テストを書くぐらいのアレじゃないと、どんどんめんどくさポイントが貯まって手がつけられなくなると実感した。

本番環境

実はVPSに環境を整える前に自前でUbuntu Server機をこしらえて、テストがてらデプロイ環境を構築しようと思ってやってたけど、なんか上手くできなくてやめた。その時はuWSGIを使ってた。Ubuntuのブートから既に苦労してたので、そう思うと自家製サーバー運用は大変そうだ。

上の経験があって、デプロイ環境構築に苦労しろうだなーと思ったので、現場で使える Django の教科書《実践編》を購入した。VPSの環境構築に関してはこの本でほぼ網羅できた。

本番環境はそれなりに課題が残ってる。ログ管理とかもそうだし、GunicornとNginxも無知なので勉強しときたいと思う。あとはデプロイ方法について。今はgithubを介してデプロイしてるんだけど、これでいいのか感が否めないので調べたい。

サービス開始から

サービス開始の告知ツイートをする時は結構ドキドキした。ドキドキしながら画面の前に座ってるのが嫌だったから、ツイートだけして風呂に行った。風呂でもドキドキしてた。リラックスできない風呂はよくないと思った。内心バズるかなーと思ってたけど、全然そんなこともなく収束した。そんなに流行らなくても良いと思ってたけど、まったく使われないのもアレだよなーと思った。

チームも個人も少ないが登録してもらって、せっかく登録してくれたからもうちょっと宣伝していこうかと思った。そもそも見られることがなかったら、登録してくれたのにあまり意味がないことになってしまう。

Negitaku.orgの管理者に頼んで記事を掲載してもらった。超ありがたい。ほかに頼むところが思いつかないのでここからどうするかって感じ。地道に宣伝していくしかないのかな。

感想

構想からリリースまで終始楽しかった。ひと段落終えて、今はなにもする気がなくなっている。この現象って何か名前ついてない? 触れたことのない技術に触れたし、いろいろ勉強もできてよかった。あとはとりあえずリリースできて良かった。 とりあえずやってみるのは大事だと思う。考えすぎると何もできない。

Django、完璧に理解したぞ!

よく参考にしてたサイト

Looking for GG - ゲーミングリクルートサイト

Webサービスを公開したのでそれについて書く。今回は技術的な話ではなくて、そもそもの話。

What

Looking for GG

https://lookingforgg.jp/

一言でどういうサービスと言えばいいのか決めていないというか分からない(追記:ゲーミングリクルートサイトでどうすかね)。ゲーミングチームのメンバーを募集したり、逆にチームを探してますアピールをしたりすることができます。名前とゲームと募集内容ぐらいしか書く所がないシンプルなサービスです。

ゲームはリストから選ぶことができて、今の所の対象はPCのチームゲームで、ある程度の競技シーンが存在するようなゲームです。※俺判断

Why

なんでそんなもの作ったか。

今のPCゲーマーの人々は、Negitaku.orgは知ってますか?

Negitaku.org は「esports」(eスポーツ)、「FPS」(First Pesron Shooter)、「MOBA(Multiplayer online battle arena)」、「ゲーミングデバイス」関する話題を中心に、それらに関連するゲーム等の国内外の情報を紹介する個人運営のニュースサイトです。2002年8月24日サイト設立。

今はニュースサイトとして運営しているNegitakuは、以前はユーザー登録機能があって、チームのページを作成できたり、メンバー募集を行ったりすることができる仕組みがありました。SAやAVAなどの無料ゲームには公式サイトにメンバー募集ページが備わっていたり、ゲーム内でメンバー募集をするような文化がありましたが、その他PCゲーム(CS, CoD, etc...)にはそういう環境がなく、メンバー募集などにはNegitakuがよく使われていたと思います。僕が初めてチームに加入した時(2010年頃)もNegitakuを使ったのを覚えています。

時代は進みました。Negitakuからユーザー機能が失われて以降、今のPCゲーマー達はいろいろな方法でメンバー募集だったりをしていると思います。CS:GOはリーグ運営を行っている「宴」のソーシャルページにメンバー募集機能があります。PUBGにはスクリム運営のDiscordにメンバー募集を行えるチャンネルがあります。

ただ、そういった環境がないゲームも含めて、よく使われているのはTwitterだと思っています。実際に僕もPUBGのチームを探したり、メンバーを募集したりするときにTwitterも使いました。都合よくタイムラインに募集ツイートがまわってこれば良いのですが、そう上手くはいきません。なので普通に検索して探すんですけど、いろんな問題点があります。

  • 検索ワードによって、見つけられるツイートが変わる
  • モバイルやコンシューマの情報が混ざる
  • 不要な情報がたくさんあるので探すのが大変

CS:GOのように競技シーンのコミュニティページにメンバー募集などの機能があるのが一番良いですが、そういうものがないゲームもたくさんあります。PUBGのスクリムDiscordも招待されないと入れない半クローズドなものです。

チームゲームを競技シーンでプレイしているチームやプレイヤーが、メンバーを探す/チームを探すことが簡単にできる仕組みがあれば良いと思ってこのサービスを作りました。

あとは勉強ついでに。

こだわりポイント

  • 必要以上に情報をもらわない
  • シンプル
  • esportsという言葉をサイトに入れない

聞かれそうなこと

モバイルやコンシューマへの対応

面倒だったっていうのが正直な所です。すみません怠惰です。モバイルとコンシューマの規模の大きさは理解しているつもりです。ただ、モバイルとコンシューマの競技シーンを実際あまり知らないっていうのもあります。声が多ければ対応したいと思います。(するとは言ってない) ただ、PCユーザーでなくても普通に募集はできちゃうので、あまりにも増えてきたら対応せざるを得ないっていうのが事実です。

〇〇(ゲームタイトル)がないけど?

教えてください。

サービス名(Looking for GG)について

海外とかだとチーム探しとかにLFT(Looking For Team)という言葉がよく使われます。そこから取りました。あとは、メンバー/チームを見つけて、仲間とGood Gameをしましょうって意味を込めてGGを。

最後に

チームゲームは良いことも悪いことも含めて様々なことを教えてくれます。仲間と共に同じ目標を目指して試行錯誤を繰り返すこと、時にはぶつかりあったりしていろいろな人間関係を学ぶことは、人生にとって良い経験になると思うし、日々のモチベーションにもなります。ひとりでは勝てない敵でも、仲間と一緒なら勝てるはずです。最高の仲間と最高に楽しいゲームをすることへの手助けになれれば幸いです。glhf

PUBG,

約2年間のPUBGを振り返る。

始まり

最初に見た大会は覚えている。IEM XII Katowice PUBG Invitational。何がきっかけで見たかは覚えてないけど、偶々見たような感じだったと思う。PUBGはちょろっと遊んだことがあるぐらい。ドン勝の体験も良いものだったし、面白いゲームだなーとは思ってたけど、ほとんどプレイはしてなかった。大会形式のものを見るのは初めてだったし、最初はなんとなく見てたと思う。ただ、それまでPUBGに抱いていた印象は異なるものに変化していた。

「これめっちゃ面白いんじゃね?」

それまでPUBGはTPPモードのゲームだと思ってた。動かず覗かなくても視界が取れるゲーム。ただ、その大会はFPPモードで行われていて、動いて覗きにいかないと視界が取れないゲーム。リスクをマネジメントしながら情報を取って、相手の動きを予測して動いていく。めっちゃ難しそうでめっちゃ楽しそうなゲームがそこにはあった。

Team Soil

フレンドに声をかけてチームを作った。メンバーを募集して4人集めることができた。その時の日本の競技シーン(PJS)はTPPが主流で、スクリム(練習試合)もTPPがメインで行われていたけど、幸いにもFPPのみのスクリムを行ってくれるコミュニティがあって、そこで練習をさせてもらっていた。その時はPJSに憧れはあったものの、特に目指している場所ではなかった。TPPはやりたくなかったからね。チーム活動も何か目標がないとモチベーションを保つのが難しい。その時は仕事もしてたし、メンバーも社会人が多かったから、活動はだんだんとまちまちになっていった。そんなわけでスクリムにはあまり出れなかったけど、PUBGの練習は常に行っていたと思う。働いていてゲームする時間が少なかったし、使える時間だけPUBGに注ぎ込まないとトップに追いつけないと思っていた。

2019年に入ってからPJSもFPPに切り替わり、ようやく具体的な目標を据えることができた。チームは解散した。自分で作ったチームだったし、メンバーも皆いい奴らだったけど、PJSを目標にしているわけではなかったし、次のステップに進むにはそれが必要だった。申し訳なくも思っていたけど、次のことに目が向いていたせいか、あまり気にはしていなかったと思う。そして俺は仕事をやめた。

Icicle Romy

自信に満ち溢れていた。雰囲気さえ良ければどんなチームでもよかった。下手くそ(直球)なチームでもついてきてくれさえすれば、俺がPJSに連れていくつもりだった。Icicle Romyに加入した。

井の中の蛙大海を知らず

味方もまともに動かせない。かと言って自分が最強な訳でもない。自分の中にあったロジックを最後まで信じきれない。やればやるほど自分の弱さを知る。

でもそんなのは普通で、それら全てを受け入れて努力できる人間が強い人間なんだ。俺はできなかった。練習時間は段々と減っていった。空の青さを知ることができなかった。

最近はそんな自分を受け入れてしまっている。最後になるだろうPaRに出れないことに悔しいと思わない。出ている他のチームを羨ましいとも思わない。そんな自分にちょっとだけ悔しさを感じる。

勝ちたかったと言うならどうして手を尽くさなかったのか。何も言い返すことができない。

それでもやっぱりこのチームでPJSに行きたかったな。それだけは言える。

無職という選択

無職になってまでゲームをして、結局何の成果も得られていない。

俺はプロになりたいわけじゃなかった。自分の打ち込んだもので1番になりたかった。人生に「勝利」の二文字を与えたかった。その手段にゲームを選んだだけ。

仕事が原因で勝負の機会を逃すのが嫌だった。仲間は許してくれても自分が許せないだろうと思っていた。だから仕事は辞めた。

無職なんてできるのは今しかないとも思っていた。結婚して子供もできたらこんなことはできない。

何を言っても1行目が正しい。そうは思う。

それでもこの無職の経験は、自分自身を知るうえでは必要なことだったかもしれない。随分な回り道をして、結局元の道に戻ってきただけなんだけど、この回り道で見てきたものも全部自分なんだ。

人は過ちを繰り返す

※フィクションです。

PUBGに夢中になってすっかり忘れていたけど、似たような経験はしてた気がする。あのSAO時代だ。当時俺はキリトや血盟騎士団などの攻略組からひとつ後ろ、要は攻略組が命を張って開いてきた道で甘い蜜を吸うだけのプレイヤーだった。ゲームに自信はあるけど、命を張るようなそこまでの覚悟のない奴らの場所に居た。

そんな俺も一時期攻略組と行動をともにしたことがある。何も知らず自分達が強いと錯覚していた。すぐにここは俺の居場所じゃないとわかった。そもそもの覚悟が違うのだからそれはそうだ。

トップを走るというのはそういうことだ。足を止めたらその時点で終わり。あの時の俺は何も学べていなかった。

終わりと始まり

俺のPUBGはこれで終わり。でも俺はまだ続く。だからピリオドは止めてコンマにしておくよ。

チームメイトとチームには本当に感謝しています。あざまる水産