ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2017年9月15日金曜日

Cook, Serve, Delicious! 2!! が発売されたのでゲーム実況を始めた

食べ物ゲームが好きだ。ゲーム内に食べ物がモチーフになってるだけでも嬉しいけど、食べ物を作るゲームならもっと良い。いくつか好きなゲームはあるけど、中でもCook serve deliciousは今までの食べ物ゲーでも一番くらいに好きなゲームだ。
ゲームのUIなんかは俺の料理に強く影響を受けている感じがあるけど、中身は全く別の楽しさを作り出していて、とってもいいゲームだ。その2が何度かの発売延期を経て、ついに出た。ものすごくグラフィックも、ゲーム性も向上した感じで出た。やったあ!

ところで私にはゲームの大好きな幼稚園児の息子がいる。
彼はだいたい一日中ゲームのことを考えて、ゲームのことを話していて、ゲームをやるのも見るのも大好きだ。そして、私がちょこちょこ(世の一般的な大人と比べるとドカドカ)ゲームを買っているのを見ては、そのゲームをやっているところを見たいとせがむ。
しかし残念なことに私がゲームをやるのは、子供を寝かしつけて、皿を洗って、日記とか書いたあとの深夜である。ちなみに深夜まで起きているので、土日はほとんど寝ているし、やはりゲームは深夜にやる。

そういうわけで、以前にもダークソウル3のクリア寸前だと話したところ絶対に見たいと言うので、ゲーム実況風に撮影しておいてやったところ、結構好評だということがあった。で、今回CSD2が発売されたと言ったところ、同じく実況を撮ってくれと頼まれた。個人的にも、前回の実況を撮るというのは、楽しかったという思いがある。また、私は幼稚園児の息子にもましてゲームが大好きなまま三十年以上を生きてきたので、みんなにオススメしたいゲームなどは色々ある。そんなわけで、ゲーム実況チャンネルを作ってみた。

https://www.youtube.com/channel/UCA7yJL7yAjw0vozazBU6PxQ

とりあえず、幼稚園児の彼が父の動画を喜んでくれるうちは、ぽつぽつ投稿してみようかなと思う。彼に冷淡な態度とか取られ始めたらショックを受けるのでやめそう。そんなわけで第一弾のCSD2の動画がコレ。


いつもは動画では敬語で喋っているのだけど、これは自分の子供に向けてのつもりで喋っているので、意識して普段どおりの喋り方をしようとしている(ところどころ変な感じになってるけど)。子供が楽しんでくれると本当に嬉しいなあと思う。

2017年9月10日日曜日

メモみたいなの簡単に書けるやつ作った

https://text.denkizakana.com/#/-KtUhw7xy490OvjuXAYS

詳細は上述。

まだプロトタイプみたいなもんだけど、もうMarkdownで書いたりすることは出来る。
firebase hostingは独自ドメインでも一瞬でHTTPS対応にできたりして良い。

2017年9月6日水曜日

jQueryから遠くへ

私がプログラマとして給料をもらい始めた頃にはjQueryなんてものは存在していなかった。Ajaxというのは、何かGoogleとかだけがやっている最新鋭の技術という感じで、prototype.jsが出てやっとみんなやってみっかという感じになりつつあった。当時の私が居たSIerには片手で数えれるより多い行数のJavaScriptを理解出来る人は居なかったらしく、継ぎ足されて数十行くらいになったJavaScriptは、たったそれだけの行数なのにバグの山になっていて、本来出すべきタイミングでフォームを出せなかったりしていた。
私はそれを全部書き直して、半分くらいのサイズにして直したりした。

それからほどなく私は退職して、お別れ会のときに言われた。

「あのJavaScript君にしかわかんないから、助けに来てね」

私は答えた。

「ははは(死ね)」

うちが取り立てて酷いか、というと、まあそうなのだけど、地方の零細SIerなんてものはどこだって取り立てて酷かった。少なくとも私のような学歴も経験もないような人間をさほど試験もなく取るような会社は酷かった。そういう意味では身の丈にあった会社だった。私はクソゴミだったので、クソゴミのような会社に入り、ひととおり仕事を経験して、もうちょい給料をもらって良いクソゴミだということを確認できたので辞めた。

それからあちらこちらへと流れて、そのうちにjQueryというものが出た。画期的だった。ややっこしいDOMツリーの検索を理解しなくとも、誰にだって要素を取り出すことが出来たし、追加することが出来た。なんだ簡単じゃんJavaScript。そう誰もが思った。JavaScriptのことで助けに来てくれというような連絡はついに来なかった。もっとも、それはただの社交辞令だったし、そうでなくとも電話に出るつもりすらなかった。

みんなjQueryで色々書いていた。何万行ものjQueryを書いた。書いたやつは誰も彼も保守などせずに遠くへ消えていった。私もそうだった。死ぬほど沢山の、canvasにスクラッチで様々なグラフを書くようなコードを書きまくって、リーマンショックに伴って契約更新が流れて、去った。
保守性? 誰が気にする。JavaScriptだぞ? Excelの関数なんかと同じだ。トイレットペーパーを取り出しやすくするために三角形に折るような程度の利便性のためのプログラミング言語だ。誰も真剣に理解なんかしちゃいないが、何の問題が有るっていうんだ。
そうして、そのほとんどが保守不可能なゴミになっていった。

問題だったのは、JavaScriptが受け持つ部分が、ほとんど誰も気づかないうちに、あまりに広がりすぎていたことだ。フォームに数字しか入れられなくしたい? OK。フォームの状態に応じて「その他」のテキストエリアを出したい? OK。そのテキストエリアが表示されたときは入力を必須にしたい? OK。結果を非同期に受け取って、エラーを埋め込みたい? まあOK……。確認画面もそのままJavaScriptで描画する? 結果画面のリストもそのままページ遷移せずに出したい? 定期的に他人の追加した項目をリストに追加したい? それらをちゃんとページ遷移みたいにブラウザバックできるようにして、状態を常に最新に保ちたい? いや、ちょっと待った!

私は必死に、非表示のiframe内のページを遷移させて、ブラウザの戻るや進むがちゃんと働くようなコードを書いた。リストを非同期に読んだり、追加したり、列の表示非表示を切り替えたり、フィルタしたり、ページの速度を稼ぐためにdivの寸法を独自に計算して表に見えるように書いたりした。大量すぎる描画にブロックされないように、スクロール位置を計算して、表示されている部分だけが描画されるようなコードを書いた。jQueryでそれらを書いた。書き続けた。それらは膨大で、あきらかに書いた自分にすら著しく読みづらかった。

私には猛烈に嫌な予感がし始めていた。
きっと誰にも嫌な予感がし始めていた。
誰がこれを読み、誰がこれを直すのか?

海の向こうでは、私のような愚かなプログラマよりはるかに賢く真面目な人たちが、こういう状態に陥らないようにするためにフレームワークを書き始めていた。それがAngularであり、Reactであり、Vueであり、山のようなあれこれだった。

その先には、また別の問題があり、その解決策は今もよくわからないが、ともかく私はjQueryと別れて、なんとか持ちこたえた。たった一項目のデータを追加するために大量のjQueryのコードを読んだりするような羽目にはもうならないだろう。

そうして、私は今日も定時に帰る。

2017年9月5日火曜日

Vuex+firebaseで適当にやる

Firebase+Vuexのライブラリあって1,2度使ってみたんだけど、そのライブラリの構造に合わせることの利点がよくわからず、自分で作るにしてもそんなに手間もない。そんなわけで、適当にStore内で呼び出して使っちゃった方が楽だしわかりやすい。
特にリアルタイムで反映するとか考えず、単純なAPI呼び出しみたいに使う場合(実際REST APIもあるんだけど)、

data.once('value',snapshots=>commit('load',snapshots.val()))

みたいな感じで呼べば一回だけバコッとデータ抜けるので良い。
リアルタイムでデータ反映させたい場合はその限りじゃないけど(とはいえその場合も、一回のアクションから継続的にミューテーション呼んでればいいだけだけど)、そもそも一人で使う家庭用システムとして使ってるので、あまり重要ではない。

2017年9月3日日曜日

日記システムを全部書き直した話

前に書いたかなと思うけど、日記をつけるようにしている。備忘録の目的で、どこに行き、何を食べ、どんなことがあったかだけを淡々と書いている。ちょうど次男が生まれる直前から書き始めて、一年を超えて書き続けているがなかなか良い。読み直してみると、完全に忘れていたことも、そういえばあったなと思える。妻と話しながら読み返していたりすると、盛り上がるのでお得感が有る。生きてた感が増す。

日記は自分で書いた単純なシステムに残している。S3のホスティングでスタティックなファイルを配布して、firebaseをバックエンドにしてあるので、月額数円でちょっとやそっとでは落ちない+消えないものになっている。認証はfirebaseからGoogleのアカウントを連携させて、DBの書き込み+読み込み権限を完全に特定のアカウントID(自分のID)のみに与えてある。これも自分で作るより頑強だ。
もちろん配布しているドメインを発見されるとフロントエンドのコードを読まれたりするし、Googleアカウントでユーザー利用登録はできるが、特に何の問題もない。こちらに一方的にGoogleアカウントを知られるだけで、権限は何も与えられない。

で、割とお気に入りのシステムなのだけど、あまりデザインとか使い勝手の面で良くないなと感じていた。もともとfirebaseとvueの練習のつもりで作ったものなので、微妙にシステムのまとまりが悪い。また直そうにも厄介なことに、以前壊したPC上だけに保存していたものなので、minifyした本番用のコードしかない。そんなわけで、面倒くさいので頭からすべて書き直すことにした。ついでに今後は無くさないようにGithubにまるごと上げた。


デサインの変更点は、以前は左カラムに一ヶ月分の日付、右側に一日分の内容というだけのものだったのを、一ヶ月分の内容を表示するページと、一日分を編集するページとに分離した。前までは確認が一日ずつだったので、読み返すのは日付がわかっていないと不便だったが、これで読み物としての使いやすさが上がった。
別に月間ページにそのまま編集機能をつけても良かった気もしたが、今後日付ごとにちょっとした支出メモみたいなもんとかつけるかなと思って分けた。
また機能としてMarkdownを使えるようにして、ついでにYoutubeの埋め込みとか出来る拡張も入れた。動画作った日の日記にちゃんと制作物を貼れるので良い感じになった。