気合を入れると風邪を引く
風邪を引いた
鼻風邪を引いた.
呼吸の乱れから酸素不足に陥ったのか,今朝からずっと慢性的な頭痛が続いている.
口呼吸をしたせいで若干喉も荒れている様子だ.
今日は今朝からずっと寝ていた.
寝汗がすごいあたり,割と真面目に風邪を引いていたようだ.
熱は出なかったが,今も思考がぼんやりとしている.
この風邪が明日に響かなければ良いのだが……
思い返すと,僕は気合を入れるとその翌日に風邪を引きがちな体質だったように思う.
高専の研究のつながりで実験協力者の団体のイベントで発表することになったとき,前日の夜にインフルエンザにかかって参加を断念した経験がある.
訳あってボランティアをしていたときも,僕が抜ける最終日にささやかなパーティを開いてくれることになっていたのだが,その日も僕は風邪を引いて欠席した.
気合を入れると一定確率で風邪を引いてしまうという,悲しい体質だかめぐり合わせだかが僕にはあるらしい.
昨日あれだけ気合を入れていたのに,このザマである.
唯一幸運なのは,僕は今ニートであり誰にも迷惑がかからないことだろうか.
それでも僕には迷惑がかかっているのだから,幸運か不幸かで言えば不幸なのだが.
さて,このブログは就活を始めてから終えるまでに毎日更新しようと決めていたので,今日も更新しなければならない.
ぼやけた思考で大した文章など書けるはずもないのだが,普段も大した文章など書いていなかったので問題はないだろう.
風邪で朝も昼も睡眠し続けていたので,夜眠れるかが不安だ.
まぁ風邪薬でも飲めば自然に眠気が襲ってきてくれるだろうから,それに期待する.
むしろ眠くなってくれなければ困る.
今日はこのあたりで記事を更新しよう.
夕飯食って薬を飲んで,明日に備えようと思う.
休息とは静的ではなく動的な概念である
休んだ
今日は就活や勉強をせず,一日を休息に費やした.
昨日の勉強では集中力が持続せず,また今朝のコンディションも悪いと判断したからだ.
結論から言うと,その判断は正解だったのだと思う.
振り返ると,なんだかんだで12日間ほど無休で就活と勉強を続けていた.
最近までニートをしてた人間としては,割と無茶をしていたのである.
特に就活による気疲れは酷いものだった.
一度エントリーしたら,後は待つしかないというのはとても気が楽でない.
何か作って気を紛らわせていないと,すぐに不安が襲ってくる.
最初にカジュアル面談を受けてくれた企業の方が,とても良い人だったのが救いだ.
就活という枠組みではあるものの,来週に予定している二次面談が楽しみで仕方がない.
もしも面談者が気の休まる方でなかったら,僕はぼっちソンの後にまたニートに戻っていたかもしれない.
ぼっちソンを含め,ものを作るというのは楽しいものだ.
技術について調べ,学び,実践することで僕は楽しいという感情を手に入れることができる.
しかし困ったことに,ものづくりは楽しいのだが,気づかないうちに疲れが蓄積していくものでもあるらしい.
情動にせよ思考にせよ,脳を働かせるというのは疲れを蓄積させるらしい.
らしいらしいと言うが,実際に披露が蓄積する.
それが原因で大学院から逃げることになったのだから,少なくとも私にとっては自明なことであった.
まぁ久しぶりに疲れるという感覚を得られたのだ.
これも楽しまなければ損というものであろう.
そういうわけで,僕は今日という一日を休息に使った.
アニメを見たり,漫画を読んだり,ドライブしたり,バーガーキングでワッパー(世界レベルで最高クラスに美味しい食事)を食べたり,昼寝したり,とにかく休息と呼ぶにふさわしい堕落を味わった.
やってること自体は,ニート生活を送っていた時と何ら変わらないものである.
今日という一日を非生産的に消費し,悦楽だけを求めて時の針を進めていく.
だが面白いことに,そこに休息というラベルが貼られることで,どうやらそのあり方は大きく変わるらしいのだ.
休息を経て感じたのは,楽しいという感情だった.
以前はこの堕落を罪と感じて日々を過ごしていたが,休息というラベルが貼られることにより,この無為な時間が明日の希望を強化するのだということを知った.
一日を無駄にしたという後悔のような感情は,僕の中にないわけではない.
今日という日でできたことが,この堕落によって失われたのは,間違いのない事実だ.
それでも今日という日を楽しむことで,明日の自分は今日の自分よりも多くのことができるようになる.そんな気力が湧いてくる.
これはニート生活を送らなければ知ることのなかった事実であるように思う.
休息とは停滞することではなく,蓄えることを意味するのだ.
前には進まずとも,前に進むための糧を得る行いではあるのだ.
ただただ停滞をするために引きこもるのではなく,動き出すために英気を養うのだ.
今日,僕は明確な意思を持ち,積極的に休息を取った.
考えうる限りに怠惰な行いをし,楽しめる分だけ楽しめることを楽しんだ.
唯一怠惰でないと言えるのは,暴飲暴食をせず,また酒を断ったという点だけだろう.
まぁ胃のキャパシティは減ったし,飲酒も今はあまり乗り気ではない.
ラーメンはもうライスを頼もうと思わなくなってしまったし,晩酌も最近はさっぱりだ.
まぁクラフトビールやワインなどの酒は,楽しみたいと思ったらまたその時に楽しもうと思う.
何はともあれ僕は今日,一日中休息していた.
これからも定期的に休息をしようと思う.
OnとOffを明確にし,自分のパフォーマンスを最大化できるようにしたい.
良く生きるために,良く休める人間になろうと思った.
そして良く休むために,良く頑張れる,そんな人間になれたらと思う.
明日のこととか
まぁ色々と言葉で遊んで今日一日就活と勉強をサボったのは事実である.
明日はまた,勉強をしなければならない.
昨日のブログで今日やると言っていたことを,まずは明日やろうと思う.
すなわち,TypeScriptで簡易的なゲームライブラリを作ろうと思う.
休んでいる最中も,実はどうやって実装しようかという考えが定期的に頭を支配していた.
ものづくりは楽しむべき行為であるが,そこから少し離れることでも,また別のワクワクを得られるのだと思う.
明日はこの高揚感を形にしたい.
さて,今日の進捗はゼロなので,何か備忘録に書くこともない.
今日も23時には就寝するので,後2時間半程度も休息に充てようと思う.
そして明日の朝にツナマヨおにぎりを食べ,希望のうちにものづくりを再開しよう.
疲れは負荷や時間よりも特に不快感に強く比例して発生する
不快感を疲れを生む
今日は疲れた.
ブログを書くのをサボって寝ようかという邪念が,先程3回くらい襲ってきた.
今週の始めにぼっちソンを開催し,その翌日は一日中就活,そしてその翌日2日はネットワークのお勉強.
今感じている疲れは,そうした達成感や知識習得の負荷によるものなのだと思う.
だがそれとは別に,不快感による疲れも強く感じる今日この頃である.
就活を始めてからというもの,Googleアカウントをベースとした個人情報による広告の最適化により,大量の就職・転職情報が僕のデジタル環境を支配するようになった.
これは非常に不快だ.
興味もない大手SIerの生涯年収を見せられて喜ぶ20代は,果たしてどれだけ存在するのだろうか.
これだけITエンジニアたちが就活マナーについて意義を唱えているのに,なぜ営業の就活マナーを知らなければならないのだろうか.
これから僕を拾い,育ててくれる企業を探しているというのに,なぜ今から転職のことについて心配をされなければならないのだろうか.
就活をするという行為は,僕の生活に就活情報の洪水をもたらした.
そして能動的に調べた以外のほぼすべての情報が,僕にとっては無価値であり,不快であった.
なぜ就活には建前が必要なのだろう.
なぜ僕は僕のことを雇ってくれる企業に対して,自分を偽らなければならないのだろう.
なるほど,企業は経営を第一に考えているのだから,求職者である僕が妥協したり企業に合わせるという考えは,確かに必要なのだろう.
自分のやりたいこと以外したくないけど雇ってください,なんてことを言えるほど僕は人材的価値のある人間ではない.
「僕はこれがしたくて,そのためにこういうことをしてきて,その過程で得た経験や知識とはこういうもので,それらをベースにあなたの企業で成長しつつ貢献したい」
僕が採用担当の人に,志望動機として伝えられるテンプレートはこれしかない.
「僕はモバイル/WEBアプリエンジニアやゲームプログラマーといったエンターテイメントに近い部分の仕事をしたくて,そのために情報系の高専や大学を出たり,趣味や学外活動でゲームやアプリを作ったりしていて,それを通じて人を助けたり,楽しませたり,幸せにするということを経験して,そういったことをしてきたからこそ,これからは仕事として開発現場に携わり,1人前のエンジニアとして成長し,ユーザや社会,そしてあなたの企業に貢献できる人間になりたい」
具体的に一文で済ませるなら,こういった具合だ.
これは僕の望みであり,偽ることができない本心だ.
だから企業の採用にエントリーする時は,この理由を文語体にして提出している.
僕は,僕を尊重してくれる企業で働きたい.
楽して稼ぎたいという気持ちがないといったら,それは嘘になる.
だけど仕事の中で刺激を得つつ,知らないことを知り,価値を生み出せる人間になって,その恩を周囲の人間に返したいという気持ちも,僕の偽らざる本心だ.
僕は就活に建前を持ちたくない.
僕は本音で就活をしたい.
僕は,僕がなりたい自分になるための道程がその企業の利益になると感じて応援してくれる,そんな会社や経営者の下で働きたい.
僕はやりたくない仕事なんてしたくない.
だけどやりたいことだけして恩を返さない人間にもなりたくない.
これは矛盾していることなのだろうか.
その矛盾を解決するために,僕は建前を持たなければならないのだろうか.
まだ僕は,社会人として世の中に出るという経験をしたことがない.
だからきっと子供の論理として,資本主義経済下にある企業に対しても理想を抱こうとしてしまうのだろう.
僕はまだ,大人になりきることができていない.
きっと大人になる過程で,子供の僕の理想は薄れ,楽したい,金がほしいという気持ちが本心の大部分を占めるようになるのかもしれない.
そうなったら,僕は理想の替わりに建前で自分を着飾らないといけなくなってしまうのかもしれない.
僕は,欲が怖いのではない.
自分の夢や目標に対して怠惰になることが,たまらなく怖いのである.
建前で自分を着飾ろうとすると,そんな恐怖が僕を襲ってくる.
恐怖や不安は,不快感の最たるものの一つだ.
僕はそうしたものに疲れをいだき,まぶたを閉じようとしているのだ.
ITエンジニアという人種は,偉大であると思う.
不安感や劣等感を抱かせようとする誇大広告の中で,自我を保ち誇りを持って仕事ができるというのは,きっとすごいことなのだと思う.
僕はまだ,それができない.
だからそれを含めて,僕を一人前にしてくれる企業に出会いたい.
疲れとか不安とかについて色々と書いていたら,僕が求める企業像が少しはっきりした気がする.
これも就活と呼べるのだろうか.
わからないが,きっとそれを反芻するのは,僕にとって大切な儀式なのだろう.
今日の勉強内容とか
今日はHTML5のゲームを作るのに必要なことについて勉強した.
とりあえず備忘録的なものも兼ねてまとめておこうと思う.
環境構築
結論から言うと,しばらくの間はVSCodeだけで十分に開発ができることがわかった.
ツールとしてはバージョン管理にGit+Githubを使う以外,後はVSCodeだけで事足りるのである.
VSCodeにLive Serverを入れれば,ローカルでHTML+js+cssを動かすのに不満はほとんど出なかった.
あとはビルドにPowerShellを使う程度で,基本的には軽量なツール郡で開発できる.
後はTypeScriptを使うために,Node.jsをインストールすれば環境構築は完了だ.
まとめると,次のツール郡をインストールするだけで開発環境は十分に整ったということだ.
- Visual Stadio Code
- Git (Github)
- Node.js (TypeScript)
- WIndows Power Shell
- Google Chrome
思っていたよりも簡単な構成だ.
まぁフロントエンド開発するだけならこれだけで本当に十分なのだから,当たり前と言えば当たり前だが.
サンプルを動かしてみた感想
今日はいくつかPIXI.jsのサンプルを動かしてみた.
感想としては,ブラウザをゲームエンジンに見立てて作っていけば良いんだなという印象があった.
基本的にはループを立てて,フレームごとに入力,データ処理,描画を繰り返していくだけである.
1からゲームライブラリをスクラッチする必要はあるが,なんとかなるだろうという実感は得られたと思う.
サンプルを実装した印象だと,Androidアプリ開発に近いものであると感じた.
GameのViewさえ実装してしまえば,後はそれをページの埋め込みたい場所に配置すれば良いのである.
それよりもデータのキャッシュが最も大きな問題である.
ローカルで動かしている分には何にも気にならないが,本番環境で動かした際にどうなるのかが完全に未知数である.
まぁ今からビビっていてもしょうがないので,まずはjsのゲームライブラリの実装と試作ゲームの開発を急ぐことにする.
実を言うと今日の進捗は芳しくない
疲れていたからしょうがないと言い訳するのは簡単である.
まぁ実際に疲れからか集中を欠いていた一日ではあった.
昨日調べたことが実際に合っているか確認した程度のことしか,今日はしていない.
まぁおそらくは合ってそうなので,この方針で学習を進めていけばなんとかブラウザゲームのサイトが作れそうという感じはする.
前向きな情報は収集できているが,実のところモチベーションが保てていないのではないかという危惧が,僕の中で芽生えている.
これは非常にまずいため,早急にアクションが必要そうだ.
具体的には,第二回ぼっちソンを開催したいと考えている.
それと,今回の開発はローカルマシンの性能が低くてもできるため,9年モノのノートPCにも環境を用意しようと思う.
Gitベースの開発の練習にもなるだろうし,Githubのアカウントを2つ用意して試してみようと思う.
拙速でも,少しずつ進んでいる.
これは去年できなかったことだ.
焦らず,マイペースに自分を変えていこうと思う.
とはいえ一生ゆっくりするわけにもいかないため,計画は立てておく必要がある.
具体的には,来週までにはゲームライブラリを完成させておきたい.
実装は完全でなくても良いので,4月からはHTMLゲームが作れるように準備をしようと思う.
さて,今日はこのあたりで寝ようと思う.
ここ数日はよく眠れるようになってきた.
今日の夜もよく眠り,希望を持って明日を迎えよう.
HTML5ゲームのデファクトスタンダードな開発環境ってどこにあるんだよ
そんなものはない
どうやらHTML5ゲームの開発界隈はまだ成熟しきっていないようなので,当然ながら開発のスタンダードとなる環境も定まっていないらしい.
まぁゲーム作れるって言われ始めたのが2018年くらいのことっぽい上にデベロッパーもパブリッシャーも少ないから情報がほとんどないのが実情なのだ.
なのでフロントエンドの開発と同様にVSCodeとかを使って頑張ってゴリゴリ書くのが一般的なようである.
基本的にはPIXI.jsとかThree.jsとかいったライブラリを使い,あとはTypeScriptで書いてくことになるらしい.
2Dゲーム作るならPIXI.js,3DやりたいならThree.jsを選択するのが賢いらしい.
ちなみにボラギノールタウンはThree.jsを使って作られてるらしい.
商用ゲームだと,Egret EngineとかPlayCanvas,CocosとかPhaserとかを使ってたりもするらしい.
後はTiny UnityとかLayaboxとかいうのもあるらしい.
らしいらしいといって何もやらないのもアレなので簡単にまとめよう.
選択肢は2つ.描画ライブラリを使って残りをフルスクラッチするか,今出てる未成熟のゲームエンジンを使うかという2択だ.
なにはともあれ,今の僕がやるべきことはとりあえず決まっている.
ローカルに仮想マシンを立てて,そこにサーバ立てて,そこに作ったHTML5入れて,ブラウザからアクセスして動くかどうかを試す.
HTML5ゲーム本体の開発については,今回はPIXI.jsを使ってみようと思う.
理由としては,ゲームエンジンを介さない方がプリミティブなフロントエンド開発の知識を多く得られるのではないかと考えたからだ.
作るゲームは,パフォーマンスのチューニングについての経験も得られるだろうから,簡単なシューティングゲームにしようと思う.
簡易的なゲームエンジンをスクラッチすることになるが,高度な物理演算を実装せずとも衝突判定の実装だけでゲームが作れる点も,STGをテーマにすることのメリットの一つだ.
開発に使うサーバは,とりあえずVSCodeのLive Serverを使う.
まずはフロントエンド開発の基礎を学びつつ,Windows PC上のローカルで動くものを作り上げることが大切だ.
その後はWSL Ubuntu上でDockerを使ってサーバを立てて動かしてみようと思う.
ローカルで立てた仮想マシン上に設置したサーバで問題がないようであれば,最後にレンタルサーバないしVPSを使ってデプロイするという算段だ.
よって,勉強の方針をまとめると以下の通りとなる.
- VSCodeにフロントエンドの開発環境を整える
- HTML5+TypeScript+PIXI.jsで簡単なゲームを作る
- VSCode上に立てた簡易サーバでテストする
- WSL Ubuntu上にDockerを用いてサーバを立ててテストする
- VPSかIaaSかを使ってデプロイする
意外となんとかなるかも知れない.
まぁWEB開発については完全なる無知of無知なので,間違っている部分や見通しの甘い部分もあるだろう.
おそらく,この方針に従って行動するだけでは不十分だろう.
だが上手く行かなかったとしても,そこで何かを学ぶことはできるはずだ.
今はまずがむしゃらにやってみて,問題にぶつかった時に,またそこで考えて見ようと思う.
茶番がないので茶番も入れる
今日も朝早くに起きて,セブンイレブンのツナマヨおにぎりを購入し,食した.
睡眠をしっかりとって朝食も摂るのは,僕のメンタルの健全化に大きく貢献しているように感じる.
寝起き30分はなんもやる気が出ないが,それでも7時に起きて8時におにぎり食ってなんやかんやすれば,8:30には活動できるコンディションが整ってくれている.
それはとてもありがたいことだ.
1年間ニートして引きこもっていたが,人間の身体というものは健全な生命活動を望んでいるということを,良く感じることができる.
喜びとともに起きて,誠実に今日を生き,明日に希望を持って夜に寝ようと思う.
それがいつまで継続できるかはわからないが,それを楽しいと思える範囲で,実行し続けていきたい.
よし,今日も頑張ることが楽しいと思える範囲で頑張るぞ!!!うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
いい感じに小汚いおっさんが美味しそうに食べてるものは本当に美味しい
でも汚いから広告効果はほとんどない
でも僕はそういう人を見るのが好きである.
悦びを得るためにものを食べることができる人間は,とても魅力的に見える.
就活を始めてから,僕は食欲が減退した.
白米の摂取量が6割ほど現象したし,ラーメンも1杯食べるのに苦労するようになった.
それでも身体は生きようと,僕に何かを摂取させるために腹を空かせて音を鳴らしてくる.
だから僕はお腹が減ってると考えて,何かを食べようとする.
でも食事があまり喉を通らない.
バターと醤油と出汁で味付けした焼きうどんは,僕の好みの料理だった.
沢山の野菜と豚肉に彩られたその皿は,最後は鰹節をまぶして完成する.
肉と醤油が少し焦げて,いい香りが僕の食欲をそそる.
でも,僕はその皿を平らげることができなかった.
美味しいのに,本当に美味しいのに,半分を食べた段階で残してしまった.
今の僕は自虐的な体質で,悦びを得ることに対して強い忌避感を持っているのだと思う.
楽しむこと,喜ぶことを恐れ,感情の起伏を抑え込もうとしているのだ.
だから悦びを得るために食べることができない.
だから僕は食べるために生きることもできなければ,生きるために食べることもできないのだ.
それはとても悲しくて,つらいことだ.
僕はそんな自分が嫌いだ.
美味しいものは美味しいと感じて,悦びとともに糧としたい.
コンビニのホットスナックを素手で持ってうまそうに食っていたあのおっさんのように,僕も食事で悦びたい.
今朝食べたツナマヨおにぎりは,本当に美味しかった.
今朝の僕は今日という一日に希望を持っていた.
だから逆説的に考えるなら,不安な気持ちに押しつぶされながら食べていると,食事というものは不味くなるのだろう.
以前に友人と食べたケーキは,とても美味しかった.
今日の夕飯だって,美味しかった.
一回食欲が減退して食事量が減ったからと言って,僕が食事を楽しめなくなったわけではないはずなのだ.
きっと夕飯の量を減らしたから,朝お腹が減るようになっただけなのだ.
良いことではないか.
何も不安に思うことなんてないじゃないか.
僕は以前と同じ量が食べられないことに違和感を覚えているだけなのだ.
そんな小事に気を取られて,食事の質を下げてはダメなのだ.
睡眠の質だって,意識を変えたら良くなったではないか.
食事の質も,きっと本質は同じなのだ.
明日はもっと,食事を楽しもうと思う.
生きるために食べるならば,それは生きることへの悦びを見出すことと同じなはずだ.
まずは明日,ツナマヨおにぎりを美味しく食べることから始めよう.
そうすればきっと,昼食も夕飯も美味しく食べられるはずなのだ.
自作ゲームサイトを作るためにとりあえず勉強した
たんしおレモンさんってすごいなって思う.
自分の作った作品を自分のHPにおいて無料で遊んでもらうというのは,相当に技術力や経験を積んでいないとできないのではないか.
今日はブラウザゲームをおいて遊んでもらうためのサイトを作るにあたって必要な技術はどういったものなのかについて調査していた.
結果,そういったサイトを作る方法は全くわからなかった.
WEBサービスを作るための触りやアーキテクチャについては,最低限の理解はできたと思う.
だが僕のやりたいことを実現するための方針は,具体化されていないのが現状だ.
それもそのはずであり,HTML5製ブラウザゲームをWEBサイトで提供するというのは僕が想像してたよりも遥かに技術的なハードルが高いようなのだ.
肥大化したアセットによる膨大な通信量と,それを制御するための完璧なデータキャッシュだけに対応する技術力を磨くだけで,おそらく1年以上の学びを必要とする程には.
だが壁の高さに物怖じしていては始まらない.
とりあえず今日は,今日学んだことについて軽くブログにまとめようと思う.
WEB開発のトレンドってなんか横文字だらけで気持ち悪い
ITビジネスの何割がそうなのかは知らないけど,現在のソフトウェア開発の主流はWEB開発にあるのは疑いようのない現実である.
まぁ今のところ便利だと思うようなサービスはだいたい全部WEBサービスなのだから,当然といえば当然である.
そんなビジネス真っ盛りなWEB開発を調べていると,どこもかしこも「エンジニアはトレンドを追え」みたいな記事が大量に出てくる.
なんかよくわからないけど栄枯盛衰な界隈らしいので,遅れた技術に触ることに対して危機感を持つべきらしい.
さて,WEB開発をするためにはまず,アーキテクチャについて知らなければならない.
大体のWEBサイトは,WEBサーバ,データベースサーバ,アプリケーションサーバの3層構造になっている.
昔はstaticなページを表示させるだけのWEBサーバしかない構成もあったらしいが,なんかちょっとずつ増えて今の形になったらしい.
とりあえずWEBページを作るために知らなければならない技術は,大まかに分けて次のような感じらしい
クライアントサイド
WEBページのGUIを作る部分.
ITエンジニアの仕事だとフロントエンドだとかWEBデザイナーだとか言われるやつである.
使用技術としてはHTML+css+jsが一般的である.
クライアントからのリクエストに対してWEBサーバがこの情報を返せば,最低限はWEBページが表示されてくれる.
この部分をもっと楽にいい感じに作るために使われるのがWordPressなどのCMSである.
WEBサーバ上にこれらのファイルを設置し,リクエストに応じて返せばWEBページが表示される.
ただしこれだけではWEBページの見かけ上の動作しか実現することができないため,後述するアプリケーションサーバを用いて動的なWEBページを作ることになる.
サーバとのインタラクションが必要ない場合は,HTMLとjsだけで動くプログラムを作り,クライアント側で全部動かしてしまうことも可能.
これはネイティブ開発に多く見られる,ダウンロードして後はオフラインでも動作するタイプのアプリケーションと仕組みが酷似している.
わざわざサーバに対して逐一通信をせずとも,クライアント側のプロセスでその機能を動かすために必要なリソースをWEBページとしてキャッシュすれば,後はオフラインでも動作するという仕組みである.
Flashゲームも同様の方法で動いており,WEBサーバに設置されたゲームや動画のデータをキャッシュしてクライアント側のプロセスとして動作させるという技術である.
クライアントのプロセスとして動くという点がセキュリティ面で大きな問題を孕んでおり,それが原因でAdobe Flashは終焉を迎えた.
HTML5製のゲームはFlashゲームと同様にクライアント側のプロセスでゲームを動かすものである.
すなわちWEBページとしてゲームを実装することができれば,極論を言うとアプリケーションサーバを導入する必要はない.
WEBサーバ
クライアントが直接通信を送る部分.
物理的に設置されたサーバというハードウェアと密接な関係のある部分であり,ここについて専門的なことをする人間を特にインフラエンジニアだとかネットワークエンジニアだとか言う.
物理的に構築したサーバにLinuxなどのOSを導入し,ApacheやNginxなどのミドルウェアを入れることでWEBサーバとして機能する.
最近はDockerというコンテナ技術を使い,Linuxカーネル上にコンテナを設置して仮想マシンを動かすことで設計や管理を楽にする手法が取られている.
さらにDockerを便利に使うためにKubernetesとかいうやつまで出てきていてこいつを使うとさらに便利になる.
自宅にサーバを設置する変態が,この世界には少数ながら存在しているとまことしやかに囁かれている.
ハードウェア自体にとんでもなく金がかかる上に電気代と回線使用料金でアホみたいにコスパは悪いらしい.
多くの場合,レンタルサーバ,もしくはIaaS(Infrastructure as a Service)を利用してサーバを設置する.
レンタルサーバの場合,共有サーバ,仮想化専用サーバ,専用サーバなどの種類がある.
仮想化専用サーバはVPSと呼ばれ,共有サーバ上に割り当てられた仮想マシンを専用サーバとして使用する形となる.
IaaSはいわゆるクラウドと呼ばれるサービスであり,基本的にはVPSと変わらないが,従量課金制による柔軟なマシンリソースの割り当てにより,1台から複数台までの仮想マシンを流動的に使用することができる.
共有サーバ以外のレンタルサーバは,基本的に1からOSやミドルウェアをインストールする必要がある.
こうしたケースにおいて,Dockerなどのコンテナ技術が使われる.
IaaSを本格的に利用する場合,同じ環境で複数のサーバを立てるため,コンテナ技術の理解と利活用が特に重要となる.
アプリケーションサーバ
そのWEBサービスがサービスとして提供する機能を動かしている部分.
例えば電卓をWEBアプリ化した場合,クライアントからの入力をWEBサーバを介して受け取り,実際に数字の計算をしてWEBサーバに返すのがアプリケーションサーバの役割.
この部分を開発している人間を特にサーバーサイドエンジニアだとかバックエンドエンジニアだとか言う.
StaticなWEBページには必要ないが,DynamicなWEBページを作る際には必要となる.
UI的な意味でStaticというわけではなく,ユーザーとのやり取りに応じてWEBページの振る舞いが変わるという意味でのDynamicである.
WEBサービスが実際にサービスを提供する上で必要不可欠な部分であり,サービスとしての個性が出てくる箇所.
ECサイトで商品を買うために注文を作って送るためにも必要だし,ゲームとかの攻略wikiで攻略情報を書いてもらってページ更新してもらうためにも必要だし,就活先の企業にES書いてエントリーするためにも必要.
Perl,PHP,Python,Ruby,Go,Java,Kotlinなどとにかく大量に言語があって,更にはDjango,Laravel,Ruby on Rails,Node.jsなど大量のフレームワークがありもう何がなんだかわからん状態と化している.
こうした言語やフレームワークが沢山あるということはそれぞれに得手不得手があるということでもあり,開発シーンやサービス内容と照らし合わせて使用言語やフレームワークを選定するのが重要となる.
例えば機械学習系のサービスをするなら,機械学習に強い(=よく使われている)とされるPythonやそのフレームワークを選択する必要がある.
WEBサーバからの入力に対して逐一処理を行うため,瞬間的にアクセスが増大すると処理が追いつかなくなる場合がある.
その場合はサーバを増設する,プロセスをチューニングするなど,ネイティブ開発にはない知識と対応力が求められる.
WEBアプリ開発において最も花形となる部分であるため,プログラミングスクールとかがこぞってこの部分の勉強をさせたがる.
チュートリアルも豊富であり,ここだけしかやってなくてもHerokuなどのクラウドにアプリケーションをデプロイするのはそれほどハードルが高くない.
データベースサーバ
アプリケーションサーバで駆動しているアプリケーションを動かすために必要なデータベース(DB)を管理する部分.
多くの場合はユーザー情報の管理を主目的としており,ここを専門的に扱う人間をデータベースエンジニアという.
サービスがスケールしていき,顧客情報が大規模になればなるほど仕事の量が増える.
こいつのセキュリティに問題があると世間の風当たりが強くなる.
使用技術はSQL(Structured Query Language)であり,こいつを使うと対話型で大量のデータを操作することができる.
つまりアプリケーションサーバがSQL文を生成してデータベースサーバに送るだけで,ほしいデータや弄くりたいデータに簡単にアクセスすることができるということである.
多くの場合はDBをRelational DB(RDB)として扱い,レコード(行)xフィールド(列)の表形式でデータを管理している.
世にいうビッグデータ解析とか呼ばれるお仕事は,データベースサーバに集積されたデータを数理モデルなどで処理して新しい知見を得ようとする業務である.
ビッグデータ解析はデータベースサーバを管理するエンジニアにとって直接影響するものではないが,そうして解析から得られた知見を元に新たなサービス形態が提案され,サーバーサイドエンジニアたちがその機能を実装するという仕事が発生する.
ユーザー情報を管理する場合,利用者数が増えるにつれて扱うレコード数が増えていくため,サービスの規模によっては維持コストがとんでもないことになる場合がある.
開発しているサービスがログイン情報を取り扱わなかったり,クライアント側のキャッシュで十分にアプリケーションが動作可能な場合,DBサーバは使われないこともある.
例えば企業のカンパニーサイトなどはCookieの受け入れを求めたりするときもあるが,ログインまでは求められない.
一方で採用活動などでエントリーを受け入れている場合,ユーザー情報をDBとして管理する必要がある.
こういう時に,リクルーティング用の別のサイトにリンクを貼っているケースがある.
これはカンパニーサイトとリクルーティングサイトを別個にして開発しており,後者だけにDBサーバを割り当てて運用しているケースであると言える.
(番外編) ゲームサーバ
ゲームサーバとは,主にオンラインゲームにおいてゲームを行うために接続されるサーバである.
基本的には上記サーバのアーキテクチャを用いて作られている.
ユーザーが動かしているゲームのクライアントと通信し,ゲームのログインであったり,ガチャの結果であったりをやり取りする.
リアルタイム性が求められるゲームにおいては,しばしば独自の通信プロトコルが用いられる.
特にFPSとか格闘ゲームとか,そういったカテゴリのゲームがこれに該当する.
ソーシャルゲームなどの場合は常時接続しなければならないほど高頻度でトラフィックが発生するわけではないため,WEBページを作る際のアーキテクチャと同様の手法でサーバを設計し,設置することが多い.
WEB開発怖すぎだろ……
調査を進めてて,正直チビりそうになった.
ゲームサイトが作りたいと言うだけでも,これだけの知識を学ぶ必要があるのだ.
ただ,調べていて希望も見えてきた.
まずHTML5でゲームを作って公開する場合,サーバーサイドの知識はそれほど要求されるわけではないということ.
WEBページとしてゲームを実装すれば良いため,極端な話を言うと「ゲームとして動くWEBページ」さえ作ってしまえば,それ以外はいらないのである.
つまりはフロントエンドエンジニアの仕事を極限まで煮詰めてしまえば,HTML5のゲームを作って公開するところまで十分に可能であるということである.
実際にはログイン機能であったりランキング機能であったりを導入するためにもサーバーサイドの知識が必要となるが,そちらが主目的とならないのはありがたい.
WEBページを作ってデプロイすれば,極論を言うならそれがゲームになってくれるということである.
それ以上にブラウザ側の仕様を理解した上で描画処理やサウンド再生を行う方が大変らしい.
ブラウザというプラットフォーム内では,ウィンドウサイズの変更やスクロール,ブラウザの機能によるズームイン・ズームアウトなどで描画領域がコロコロと変動する.
サウンドについてもブラウザの機能として鳴らすことになるなど,「ブラウザをゲームエンジンと見立てる」という考え方が必要になりそうだ.
またHTML5ゲームは,ゲーム内で扱うすべてのリソース取得にWEB通信を行う必要がある.
すなわち,ブラウザに効率よくリソースをキャッシュさせないと無限のトラフィックが発生し,サーバが破壊される.
とまぁ色々調べた結果,案外なんとかなるかもという気持ちが湧いてきた.
情報量の多さに戸惑うが,今からビビっていても仕方がないので,やりたいことに必要な技術の大枠がわかっただけでも今日の学びには意義があると思う.
必要なのはWEBページを作って公開するという部分なので,クライアントサイドとWEBサーバについての勉強が最も必要となると思われる.
つまりは,まずはVPSかIaaS上にサーバを立ててWEBページを表示するということから始めれば良いのだ.
アプリケーション層をリッチに実装する必要性は,早急にはない.
データベースサーバについても,今後必要になってから学び始めても遅くないだろう.
そうと決まれば,明日はHP制作とデプロイまでの流れを学習しよう.
どうせ教材はこのインターネットの海に腐るほど漂流しているはずなのだから.
いつもの儀式
よし,今日の俺はよく頑張った!!技術調査して文章にまとめて理解が深まった!!
しかもついでに1社エントリーを進めた!!アルバイトの採用担当の方から選考書類の受理メールも来た!!!
すごい!すごいぞ俺!!!明日もきっと頑張れる!!自信持って!!!いけるいける!!!うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
長男じゃないから様々なつらみや痛みに耐えることができない
朝はつらい
昨日の僕は良く眠れた.
僕は希望をもって今日の朝を迎えることができた.
それは大変喜ばしいことだ.
だがそれでも朝はつらい.
目覚まし時計なしで気持ちよく8時間睡眠をかましてもなお,やはり寝起きで布団から出るというのは困難を極める.
僕はだらしない人間で,外的動機づけがないと何かをすることができないタイプの人間だ.
なのでいつも親に,朝起きて来なかったら起こしてくれと頼み込んでいる.
意識が覚醒していてもベッドに釘付けになっている自分を,外に引っ張り出してほしいと.
そう伝えて,自分にいずれは外から起こされるという危機感を与えなければ,僕は自分の意思で自室の外に出ることすらままならない人間なのだ.
僕は24歳にもなって,未だに親の庇護を受けて生きようとしている.
僕は,それがとても情けなく思う.
世間では子供部屋おじさんなる言葉があるらしい.
僕も子供部屋おじさんだ.
都内にワンルーム構えるよりも快適だし家賃もかからないから,一生親に甘えている.
それはダメなことではないのだと思う.
だけど,それで不幸になる人間――と言っても他人ではなく親族レベルだが――がいるのなら,僕はそれに危機感を抱くべきなのだとも思う.
僕の家庭は,愛もあるし友情もあるし,精神的な繋がりで言えば相当に恵まれた家であると思う.
50を超えた両親は今でもラブラブだし,僕も兄弟同士非常に仲が良い.
20超えたおっさん3人兄弟が一緒に風呂に浸かるなんて,そんな家庭はきっとこの日本には多くないのだと思う.
僕はその心地よさに甘え続けている.
今こうして朝にのうのうとブログ書いているのだって,家という庇護のもとで引かれた回線に,家という庇護のもとで与えられた電気を使ってPCを駆動させているからできることだ.
僕は恵まれた人間である.
僕は子供が家庭で得たいと思うであろう多くの幸せを,与えてもらって生きている.
そんな偉大な両親に対して,僕ができることって何なのだろう.
時に友として,時に師として前に立ってくれていた兄に対して,僕ができることは何かあるのか.
この1年間,家庭内での僕は家事だけをこなして生きてきた.
それは彼らの助けにはなったのだと思う.
でも,それで彼らを幸せにすることはできていたのだろうか.
きっと,僕はその答えを見つけられないままにこの先を生きていくのだろう.
だからせめて,幸せにしたいという願いだけは胸に抱えて生きようと思う.
よし,今日のポエム的な怪文書はこれくらいにして何か現実に則したことも書いていこう.
ツナマヨは美味い
今日の朝も無事に起きることができた.
前述の通り,これも両親が気を使ってくれているおかげだ.
さて,今日も僕はセブンイレブンに行ってきた.
それはもちろん,朝飯を買うためだ.
今日は昨日のフィードバックを踏まえ,ツナマヨおにぎり1個にした.
ナナチキが僕のことを見つめていたが,学びを活かすために心を鬼にしてスルーした.
食べた結果としては,やはりツナマヨおにぎり1個だけ買うのが正解だったのだと思う.
様々な要因で縮んだ僕の胃袋には,これくらいのサイズ感が丁度いいのだ.
ツナマヨおにぎりを食ったことで血中糖度が上昇し,脳が働いてきたように思う.
おひさまの光を浴びて各種神経伝達物質たちが元気になっているのも大きいだろう.
なんだか今日の僕は,いろんなことができるような気がする.
今日の僕はきっといろんなことができるから,今日はいろんなことをしようと思う.
昨日の僕は今日の僕にHP作るための技術調査と勉強をしろと叫んでいたようだから,それをやろう.
今の僕なら,きっと楽しめるに違いない.
よし!頑張るぞ!頑張れ俺!今日もイケてる!!最高にイケてるぞ!!!お前ならできる!!!うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
何もつらいことは起きてなくてもつらいという気持ちはすぐに襲ってくる
つらい
僕は気合い入れてクリエイティブに浸ってやろうと意気込み,ぼっちソンを開催した.
それはとても良かった.
しかしぼっちソンが終わり,就活という現実に向き合う時間が来ると,再びつらさが襲ってくる.
今日は1つの企業との二次面接のアポを取り,1つの企業の新卒採用にエントリーし,1つの企業のアルバイトの採用に応募書類を提出した.
作業量は大したことないはずなのだが,今朝の9:30から作業を初めて,終わったのは夕方の16:00だった.
僕はただエントリーするために必要な志望動機と履歴書を書いているだけなのに.
履歴書はもうできていて,会社ごとの最適化しかする必要なんてないのに.
積み上げたいキャリアの方向性は決まっていて,応募する職種は明確なはずなのに.
どうやら僕はエントリーを考えている時点で,その企業に入った気になってしまうという困った悪癖があるようなのだ.
面談をしても居ないのに,採用担当者や従業員の顔も知らないのに.
リクルートページに書かれた募集要項と事業内容と企業情報だけを眺めて,あたかも内定をもらっているかのように考え始める.
志望動機を書いていると,本当にやっていけるのか,本当に馴染めるのだろうか,本当はブラック企業なのではないか,みんないい人なのに僕だけが役たたずになるのではないか.
来年4月に入社する1年後の自分は,今のニートの自分とは違った自分になっているはずなのに.
なのに今の無能な僕がそこに居てやっていけるのだろうかなんて,愚かな思考を始めようとする.
それを打ち明け,歩み寄り,分かり合うのが就活というものであり,そのための手段としてエントリーが,そして面談があるはずなのに.
わかっている,わかっているのに,僕はどうしようもない不安に駆られ,エントリーの確定ボタンの押下をためらってしまう.
無数の不安が僕の頭をよぎっては,無駄な思考を誘引して無限のストレスを生み出そうとしてくる.
そしてその不安を解消するために,新就活系ブログという人材派遣会社のステマしかしない闇の情報網に手を伸ばさせようとする.
そこには僕の望む平穏などないのに,不安に駆られた脳はより深い不安に向かって走り込もうとする.
僕は,そんな僕が嫌いだ.
そんな危険なブログなんて見る輩が居るから,そういうビジネスが成り立っているんだ.
そして僕もまたそのアフィリエイト収入の一部にされている,愚か者の一人だ.
僕は,そうした不安を拭い去る方法を知っているはずだ.
僕は昨日,そうした不安を拭い去って心地の良い睡眠を掴み取ったはずだ.
僕が不安を遠ざけるためには,ものをつくらなければならない.
不安を感じずに生きるためには,ものをつくり続けなければならない.
それが僕という不器用な人間の生き方であり,呪いであり,福音なのだ.
僕は今,ものづくりをしていない.
だから余計な不安に駆られて愚かな思考,愚かな行動に走りたがる.
不安を拭い去るためには,ものをつくらなければならない.
さて,原因がわかったのなら,ものをつくる計画を立てる必要があるだろう.
今日はそれをしよう.
明日にはものづくりという希望があるのなら,今日の夜もきっと良く眠ることができるはずなのだから.
それがクソゲーでも誰か一人が笑えるならそれでいい
僕はFlashゲームが好きだった.
もう名前も思い出せないようなゲームポータルサイトで,よくわからない無料のゲームをプレイするのが大好きだった.
脱出ゲームだとか,ビル超えゲームだとか,珍妙なパズルゲームだとか,モノクロの戦艦で艦砲射撃するゲームだとか.
へんてこなものだと,物理エンジンが組み込まれている上に地面が丸くて一生消せないテトリスだとか.
名前は忘れてしまったけど――名前を読む前にゲームにのめり込んでしまったのだから名前をそもそも知る由もないのだけど――僕の記憶に残っている,僕だけの名作.
Flashが終焉する以前の時代において,それらのゲームは確かにこの世に存在していた.
今でも名前を覚えているサイトやクリエイターの数は,そう多くない.
すずぬーとさんだとか,たんしおレモンのくろすけさんだとか,モゲラだとか.
名前を意識しだしてから遊んでいたサイトくらいしか,思い出すことができない.
それでもここで上げた例の倍以上のゲームを,僕はかつてインターネット上で遊んでいた.
小学校や中学校のパソコンからでもアクセスできるサイトを探し,それをしゃぶり尽くしていた.
名前を知らなくたって遊べる,インターネットに繋がる機械さえあれば誰だって平等に楽しむことができる.
僕はそんな,インターネットの海に生息していたゲームたちが大好きだった.
インターネットを海に例えた奴は,天才だと思う.
今のインターネットは海洋汚染が進み,歪んだ収益構造から漏れ出た誇大広告が各地を汚染している.
昔のインターネットが綺麗だったなんて懐古主義者の言葉を使うつもりはないが,少なくともサーフィンができる程度には,かつての海は美しかったのだと思う.
こんな懐古主義をこじらせて不満を垂れ流していても,海はきれいにならないどころかこのブログからも汚染物質が流れ出ることになってしまうので,ここあたりでやめようと思う.
さて,こんな話をしたのは,僕がかつての海を取り戻したいと願う者の一人だからだ.
Falshゲームは登録必須のブラウザゲームに置換され,それがソーシャルゲームに食い荒らされ,その数を大きく減らした.
そしてFlashの終焉とともに,その存在は記録から記憶に移り変わろうとしている.
だが,その終焉はHTML5という新たな福音ももたらした.
ブラウザゲームはまだ,死に絶えてなどいないのだ.
同級生は誰もそんなゲームをしていなかったけど,僕はそれが大好きだった.
みんなが野球やサッカーやバラエティやドラマやアニメや映画を観て楽しんでいた時間で,僕はFlashゲームをやり続けていた.
僕はかつて,Flashゲームが大好きだった.
たとえ記録になくとも,僕の記憶にはその面影がまだ残っている.
みんなが忘れても――そもそも知ることすらなくても――僕はまだ覚えている.
なら,僕にも作れるはずだ.
その感動を知る者なら,それを生み出すことだってできるはずだ.
100人がクソゲーと蔑んでも,1人がクソゲーと笑ってくれるのならばそれで良い.
そういったゲームを作れる人間に,僕もなりたい.
ならば作らねばならない.
それが僕の,ニートの僕の,次のものづくりのフィールドだ.
で,どうすんだよ
クソゲーをブラウザゲームとして公開するためには,まずはホームページを作らねばならない.
そのためにはWEB開発の技術が必要だ.
それは1年前の今日に,僕が逃げたハードルだ.
僕がかつて逃げたRuby on Railsの学習という課題に,今こそ立ち向かわなければならないのだ.
もちろん,今回Rubyを使うとは限らない.
なにせHPを作るためにどういった技術が必要なのか,僕はまだ正確に捉えられているわけではないからだ.
僕の浅はかな知識では,HTML5とCSSでいい感じに画面作って,js使っていい感じにクライアントを動かして,後はCGIとSQLでなんかいい感じにサーバーに機能作って,そうするとHPができる.
そんな認識しかない人間が,すぐにHPを作るなんて不可能だ.
デザインはともかく,機能としてゲームを設置できるHPをつくるというだけでも,おそらく1ヶ月の見積もりですら甘いのだと思う.
ネイティブはともかく,サーバーサイドなど,これまでに真面目に触れてきた経験は殆どない.
だがキャリアプランにモバイル/WEBアプリケーションエンジニアまたはゲームプログラマーなどと書いたからには,WEBアプリケーションを作れるようになる必要がある.
社会に出て,会社にそれを教わるのも悪くはないのかもしれない.
だが僕は今すぐにでもそれができるようになりたい.
そんなことは物理的に無理なのはわかりきっているが,それでもそれを望める自分でありたい.
だからやる.やらなきゃ死ぬ.
何もやらなきゃ,僕という人間は緩やかなる死を迎える.
ここで逃げたら,僕という人間は一生逃げ続ける.
それは嫌だ.
これは僕が言い出したものづくりのコンセプトだ.
これは僕が定義した僕の生き方であり,呪いであり,福音なのだ.
明日からはHPを作るための勉強を開始しようと思う.
おそらくはレンタルサーバーを借りる必要もあるし,ドメインだって取得する必要も出てくる.
フリーウェアで作れていた今までの個人開発とは,わけが違う.
金もかかるし,手間暇負荷等全部が段違いになるはずだ.
だからといって,それを理由に逃げるわけにはいかない.
僕がかつて泳いだ海を,今度は自分の手で作り出すのだ.
そうと決まれば明日の方針を固めなければならない.
明日,まずは必要な技術の調査から始めようと思う.
特にjsのライブラリとCGIに使う言語は,慎重に選ぶに越したことはないだろう.
WEB開発はVSCodeとChromeで大体できるって強いエンジニアの人たちが言ってるんだから,きっとそうなのだ.
何を使うか,どうやって作るかという調査と計画は,綿密に行わなければならない.
だからといって調べてるだけではわからない,コードを書かないと知ることのできないノウハウも存在するはずだ.
何もイケてるサービスを作るわけじゃない.
イケてない時代のインターネットを作りたいだけなのだ.
なら,イケてない実装だとしても構わない.
まずはHPをデプロイすることを目標にしよう.
そこから少しずつ,最高にイカしたイケてないインターネットを実現するのだ.
明日はまず,フロントエンドの仕組みとフレームワークについて調査しよう.
可能なら,簡単なページだけでも作ってみよう.
きっとできる.
できなくても,やれば何かが変わる.
その過程を楽しもうと思う.
そうと決まれば明日に希望を抱いて,今日はぐっすりと眠らなければならない.
大丈夫,僕は明日が待ち遠しい.
就活の不安ですり減らした心なんて,ものづくりの希望できっと吹き飛ばせる.
明日はもっと良い一日になる.
僕がそうする.もしそうでなくても,僕がそう感じられるように努力する.
大丈夫,僕ならきっと明日を迎えられる.
ベッドにつきたくないって不安でキーボードを叩く手が震える
そんなのは就活のストレスが見せるまやかしだ.
そんな幻想の恐怖に震えるな.できる.お前ならそれを乗り越えられる.
大丈夫,お前なら平気だ.
ぼっちソンだってやったじゃないか.
この前面談してくれた人だってめっちゃいい人だった.
希望は沢山目の前に溢れていて,そのいくつかは掴みかけているじゃないか.
僕のことを応援してくれる友人には感謝している.
彼らの気高さを思えば,僕の不安や恐怖なんて屁でもないはずだ.
彼らへの感謝を誇りに変えろ.気高く,誠実に,不器用であれ!
不安という概念は,明日から逃げたがる僕が見せる幻想に過ぎない.
お前が俺を支配しようとするなら,何度でも希望を言い聞かせて,何度でも前を向いてみせる.
こうやって気持ちを吐き出せるのであれば,何度でも嘆いて喚いてさらけ出して,何度でも立ち上がってみせる.
腱鞘炎になるまでお前の出番なんてないのだ.
よし.不安を思う気持ちはだいぶ弱まった.
僕はまだ,明日に希望を持てている.
きっと明日の僕は,その明日にもっと希望を抱いている.
だからきっと,大丈夫に違いないはずだ.
今日は寝よう.
明日には希望が溢れてる.
今日も良く頑張ったのだから,今日の夜もきっと,良く眠れるはずだ.