STACKERゲームを作ろう その7

nekoroll.hatenablog.com
の続き

もう心が折れたので完成にすることにしました
これでようやく肩の荷が下りる…

今回やること

  • 一番上まで重ねたらゲームクリアにする

完成品はこちら
ellie-app.com

解説

最終行かどうかの判定

if currentPoint.x == 0 then
    ( { model | gameState = Clear }
    , Cmd.none
    )

currentPoint持っているのでx(横軸)が最終行であるかチェックするだけ
最終行の場合、ゲームステータスをClearにしてクリアメッセージして終わり

まとめ

結局描画している止めた点灯箇所と、内部データがズレているのはわからなかった
requestAnimationFrameにフックして更新するようにするのかな…ぐらいの想像で止まった
もう半年ぐらい放置して心が折れたので一旦終わりにします

次は心機一転新しいなにか作ります さようなら

f:id:nekorollykk:20210103213758p:plain
未完

仕事とかプライベートとか2020年まとめ

本とか買ったものは別に書いた

nekoroll.hatenablog.com
nekoroll.hatenablog.com

プライベート

とにかくコロナに苦しめられた1年だった
せっかく転職したのに持病のせいでリモートワークしなければならないのがとにかくしんどかった
一緒に仕事してようやく打ち解けてきて色々飲み会で話したりしたいのにその機会が全く無かった

でもしょげてばかりじゃ何も始まらないので、とにかく自分なりに色々楽しんでみた

自転車

元々交通機関+徒歩での移動が大好きで、コロナでそれが出来なくなったので交通機関の代わりに自転車を買ってみた
最初はロードバイクにしようかと思ったんだけどスピードは求めないし段差を気にせずガンガン乗り回したいのでお店と相談してMTBにした
思っていたよりスピードは遅くないし、乗り心地はフカフカで最高。坂道辛いのは自分の脚力でカバーというパワー系思考で最高になった

麻生、新さっぽろ、宮の沢、真駒内と全ての地下鉄終点を制覇したり


真駒内MTB練習公園(謎)に夜に行ってドロドロになったり

小樽に行ったりした


小樽はまさか峠を超えると思わずめっちゃ辛かったけど、いざ終えてみると心地よい疲労感と満足感だけが残ってていい思い出になった
ブロックタイヤとリュック背負って色々辛かったので、来年はスリックタイヤ+パニアバックで楽々スイスイロングライドにチャレンジする予定
原付きより金かからないと思ったけどガソリン代の代わりに食費がかかるというまさかの事態だった(金は気にしてないので問題はない)

ピアノ

きっかけは急にシュタゲの曲を耳コピしたい!と思ったところから
soundcloud.com
フェノグラムを耳コピした。くっそ下手くそだけど
ここで音楽熱が急に燃え盛ってmidiキーボードでオクターブ変えながら必死に着信ゼロを練習し始めた
で、この頃ちょうど友達と「ピアノできるってカッコよくない?バナナマン日村のGet Wildとかさ」という話をしてて更に火力が増した

難しい曲なら3ヶ月以内に通しで暗譜して弾けるように、簡単な曲なら2ヶ月以内に暗譜して弾けるようになる
という自分ルールのもと以下の曲が弾けるようになった(演奏動画は買ってよかったものの記事にある)🐊

  • いりす症候群 - 着信ゼロ
  • steins;gate - Believe me
  • 甘茶の音楽工房 - 古い人形
  • 沙耶の唄 - SONG OF SAYA IIのイントロ
  • Undertable - Spider Dance(練習中)

完全未経験からここまで弾けるようになると思っていなかったので自分でもビックリ。継続は力なり
まだ楽譜も全然読めないし一曲覚えるのに相当時間かかるから、覚える時間を楽譜読む練習に使って読んですぐ弾けるようになりたい
コロナが終わったらピアノ教室通って、色々教わって更にレベルアップする予定。頑張るぞい

ドット絵

会社の人と一週間に一枚必ず描く誓いを立てた

ドット絵教室見て描いたもの

f:id:nekorollykk:20201231135001p:plain
本棚
f:id:nekorollykk:20201231135017p:plain
スマホ
f:id:nekorollykk:20201231135030p:plain
f:id:nekorollykk:20201231135050p:plain
弁当
f:id:nekorollykk:20201231135106p:plain
タンス

自分で描いたもの

f:id:nekorollykk:20201231135132p:plain
淫夢くん 誰か殺してくれ
f:id:nekorollykk:20201231135145p:plain
草原の赤べこちゃん
f:id:nekorollykk:20201231135156p:plain
漫画肉
f:id:nekorollykk:20201231135207p:plain
目玉焼き
f:id:nekorollykk:20201231135217p:plain
エビフライ寿司
f:id:nekorollykk:20201231135228p:plain
ショートケーキ
f:id:nekorollykk:20201231135239p:plain
飼い主を見つけた犬
f:id:nekorollykk:20201231135254p:plain
ラコステ
f:id:nekorollykk:20201231135304p:plain
Git
f:id:nekorollykk:20201231135317p:plain
キキ
f:id:nekorollykk:20201231135330p:plain
Gopherくん

絵心は本当になくて学生時代常に美術の評価は2(本来は1だけどお情けで2)だった
自分には絶対無理だと思っていて、描ける人はセンスがあるんだろうな…と諦めていた
でもいざ描き始めてみるとちゃんとした理論があって学ぶとちゃんと描けるようになってビックリした
来年も引き続き頑張ってどんどん描いていこう

Elm

静的型付けが大好きで大好きで、可能な限り固い言語がないか…と思っていたときに教えてもらって始めた
一度取り組んだけどわからなすぎて挫折、二度目は恥を晒して助けてもらって何とかある程度習得
関数型言語以外にも活きて仕事で褒められたのが本当に嬉しかった。これからも続けていきたい
というかいい加減作成途中のSTACKERゲームを完成させなければ次に進めない。描画とデータのズレどうしたらいいんだ

せっかく誘われたので人生で初めてアド弁当カレンダーも書いてみた
意外とハードル低くて書きやすかったし、カレンダーから見に来てくれた人が良かったって言ってくれてとても嬉しかった
来年も参加したいし、何か書けるようなことがあればアウトプットも続けていきたい

仕事

転職した

色々あって去年の12月に転職した
SIer->EC系->ゲーム系という謎の経歴で右も左もわからない状態でスタート

本当に最初は全く何もわからなくて、迷惑かけっぱなしで申し訳なかった
残業してもわからず、情けなさで心が折れそうだったけど何とか食いついて最低限書けるようになって来て
ようやく少しづつチームに貢献できるようになってきた

とにかく読む力が少ないことがわかったので、ひたすらレビューしまくって質問しまくってインプットに努めた
努力のかいあってか知識もついて、仕様的な観点からレビューも少しつづ出来るようになった
コードも極端にまずい指摘を貰うこともなく、ある程度こなせるようになった
チームで尊敬している人がいるのでその人を目標に来年も引き続き全力で頑張っていきたい

レビュー面白い

レビューで色んな人のコードを読んでいると癖や考え方がコードから読み取れてとても面白い
副作用を嫌う人だったり、可読性を何よりも意識する人だったり、動作と実装スピードをとにかく意識する人だったりでみんな違って面白い

最近一個悩みがあって、レビューしすぎると自分が好みのコードになってしまうような気がしてそれは正しいのか?と悩んでいる
出来る限り客観的に捉えるようにしているんだけど、どうしてもこういう変数がいいとかこの書き方がいいとか主観が多くなってしまうことがある
悪い方向に行くことはきっとないんだけど、レビューがそのまま取り込まれるのも良くないのかな…と色々考えている途中
ホントは自分の指摘に対して返信してくれて、こっちの方で行きたいって反論?してくれるといいのかなーと思うけど難しいところ…

コミュ力がない、アウトプットもしてない

チーム内でコミュニケーションは取れるけれど、他の人と全くコミュニケーションをとっていないので会社における存在感が非常に薄い
いずれチーム移動もすることを考えるとちゃんとコミュニケーションとったほうがいいんだけど、コミュ障だしリモート出して難しい
来年は適当にちょこちょこ声かけて話すきっかけを作っていけるように頑張っていきたい

アウトプットは社内のゲームジャムぐらいであとは何もしてなかった
個人としてはやっているけど、社内として何もやっていないのでそのへんも頑張っていきたい…

まとめ

辛いこと多かったけど楽しいこともたくさんあった1年だった
来年はきっと明るい一年になると思うので、前向きに楽しく明るく生きていきたい。エイエイオー🐊

2020年読んだ本

技術書から小説までGOTTAMIX

技術書

リーダブルコード

f:id:nekorollykk:20201231093549j:plain
https://www.amazon.co.jp/dp/4873115655
コードレビューでなぜこの変数名?なぜこのコメント?を伝える機会が多かったので改めて読んだ
自分の経験が増えているのもあって、読むたびに毎回発見があって面白い
命名に細かい神経質ジジイって思われちゃうかな…って悩んだときにこれ読むと安心できる
読んだことないプログラマはみんな読みましょう。1週間に1章読みつつ仕事したら命名のコツがきっと掴める

オブジェクト指向でなぜつくるのか

f:id:nekorollykk:20201231093700j:plain
https://www.amazon.co.jp/dp/4822284654
今年一番いい技術書だった
「犬クラスは生き物クラスの子で、鳴き声メソッドを呼ぶとワンと鳴きます」って言われて???ってなる人は絶対読んだほうがいい
というか1年目でこれを読みたかった。車クラスとか犬クラスとか言われても全然わからん。プログラミングを全部現実世界にすな

結論としては現実世界に例えることが出来る。という内容なんだけれど、歴史をなぞりつつ納得できるように丁寧に説明してくれる
デザインパターンが生まれた理由や関数型言語にもサラッと触れていて、自分が気になっていたことが広く浅く知れる良書だった

OOPって凄いけどざっくりしすぎじゃない?とりあえずOOPみたいなとこない?
みたいに考えてる人は是非読んでみてほしい

そんなもんとっくにわかっとるわ!って人はわからん人向けにブログか本を書いてください。言い値で買います

スラスラ読める JavaScriptふりがなプログラミング

f:id:nekorollykk:20201231093931j:plain
https://www.amazon.co.jp/dp/B07DR76HSG/
今年から未経験でIT業界に入った友達のために本探していて、良さげなので買って読んでみた
昔これのPython版がバズってた記憶があって買ってみたけどバズるのも納得ないい本だった
本当に全くわからない人って急にエラー出たらよくわからないし読めないから無視してしまうところを
ふりがなを振って怖がらず読めるようにしてエラーを読むことの大切さを教えてくれる
おまじないで流されがちな部分も優しく教えてくれていて、とりあえず読んでみたら基礎の手前の知識がついて学習しやすくなると思う

TodoMVCで手続き型脳から関数型脳へシフトしてみよう!

zenn.dev
読んでる途中
あのAB先生の本を読んでない人がいるってマジぃ?
関数型言語使ってなくても関数型言語学ぶメリットかなりあると思うので全人類読みましょう

テスト駆動開発

f:id:nekorollykk:20201231094040j:plain
https://www.amazon.co.jp/dp/B077D2L69C/
ネットで記事読んだり実務でTDDしたりしてるけど実は本読んだことなかったので読んでみた
あ~~~いいね~~~ってなる内容が無限に入ってる。あと普通に読み物として面白い
TDDってバズワード感あるけど、実際に学んで使ってみると単なるバズワードじゃなくて実務に超活かせるということがわかる
TDDしてないとかそれライオンの前でも同じこと言えんの? (僕はTDDモドキなのでライオンさんに怒られます)

基礎からわかる Elm

f:id:nekorollykk:20201231094327j:plain
https://www.amazon.co.jp/dp/B07P253FPG
基礎がわからない状態で読んでわからなくてゲボ吐きました
恥晒してゴリゴリ助けてもらったあとに読んだら学びだらけで神本過ぎてまたゲボ吐きました
気になる部分だけ摘んで読んでいってるので、まだ全部読めてない
Elm実務で使えたらこの本もがっつり活かせるのかな…と妄想したりしている
個人で作った実務のサポートツールがjsで作っちゃったけどElmの方がいいと気づいて作り変えている途中なのでまたお世話になりそう

いちばんよくわかるWebデザインの基本きちんと入門

f:id:nekorollykk:20201231094537j:plain
https://www.amazon.co.jp/dp/B06WVVQ8MP/
読んでる途中
デザインわからなすぎて地獄を見ている(実務で使うわけではない)ので、基礎のキを学ぶべく適当にブックオフで買った
ちゃんと学べていいと思う。わからんけど
デザインもちゃんと理論学んで組み立てられるようになりたぁい

ドット絵教室: 描けば描くほどうまくなる!

f:id:nekorollykk:20201231094632j:plain
Amazon.co.jp: ドット絵教室 eBook: 中川 悠京: Kindleストア
会社の人と週に1枚ドット絵書く誓いを立てたので購入
物理本買ったけど電子書籍にしたら良かったと公開している(^o^)
たしかに模写してるだけで光の当たり方とか色の作り方がまとめてよい
「OOな感じでいきましょう」「こんな感じだと嬉しいですよね」
みたいにフワッとした部分があって(゚Д゚)ハァ?ってなる事もあるけど、基礎は学べるので問題なし

アンチエイリアスとか細かいテクニックはネットに転がってるので、これをベースにしつつネットからテクニックを摘んでいくのが良さそう
来年はエロい美しいドット絵を描けるように精進します

小説

恋する寄生虫

f:id:nekorollykk:20201231094809j:plain
https://www.amazon.co.jp/dp/B01M4IK438/
2021年に映画化するらしいのでまた読んだ
koi-kiseichu.jp
全人類見ましょう ダウナーで優しい不器用な恋愛で何度読んでもたまらない
寄生虫の小難しい話も良いスパイスになっていて本当に素晴らしい作品
今後も色んな本を読むけれどきっとこの本は一生自分の中で1位であり続けると思う
全人類読みましょう。マジで。金ないなら僕が買って贈ります。読め。 三秋縋さん新作出してくれ~~~頼む~~~

寄生虫なき病

f:id:nekorollykk:20201231094925j:plain
https://www.amazon.co.jp/dp/4163900357
恋する寄生虫の参考文献だったので勢いで買ったやつ
文量多いし内容クソ難しいしで苦しみながら読んだけど非常に面白かった

恋する寄生虫の登場人物を思い浮かべつつ読んでも面白いし、自分の自己免疫疾患と交えつつ読んでも面白い
ただ1回読んだだけだとフワッとしている部分が多いので来年もう一回読む予定。予定は未定ですが

まとめ

今年は全然本を読まない1年だった。特に小説
お気に入りのカフェでコーヒー飲みながら小説読むのが大好きだったんだけど、コロナのせいでそれが出来なくなったのが大きい
コロナが終わったらまたたくさん本読もう。読むだけで終わるのもったいないしちゃんと感想も書いてみようかな

2020年買ってよかったもの

浪費の刃 無限負債編

1位 マウンテンバイク(Cannondale Trail 6)

f:id:nekorollykk:20201230213434j:plain お値段: 諸々込みで10万円

コロナで外出できないストレスから安全な移動法を考えて自転車を購入
意味もなく地下鉄東西南北の終点駅まで自転車で行ったり、円山の稲荷神社に行ったり、清田の稲荷神社に行ったりした
ロングライドにもチャレンジしたくて小樽に行ったりした。楽しかった(キツかった)

f:id:nekorollykk:20201230213938j:plain
山を2つ超えてマジギレしている図

ブロックタイヤ重いし遅いし地獄だった。ヒルクライムの途中細いロードバイクに抜かされて血の涙を流した。

最初はバイクも候補にあって、教習所通えないから原付きかなーと思っていたけど知り合いが
「ちんたら走る原付きを見るとOしたくなる」「原付きは公道に出るな」
というありがたいお言葉を日々発しており、実際制限あるし面倒だな…ということでボツになった

来年はスリックタイヤ履かせてパニアバッグつけて更にロングライドにチャレンジする予定
一人でのんびり走るの楽しい。コロナ終わったら色んなお店に寄りつつ走ったりしたいなあ

2位 Lenovo ThinkCentre M75q-1 Tiny

f:id:nekorollykk:20201230214452j:plain
赤べこ2匹分のサイズ
お値段: 確か4万ぐらい

5年前に買ったツクモのデスクトップPCが死んだのでついに新PCを購入
ゲームやらないしコンパクトで安いやつを考えていたところでだいぶ前話題になっていたこちらを購入
Gen2ではないのがポイント。スマホもずっと旧世代の中古乗り換えて使ってるし型落ちが好みかもしれない

デスクの裏に隠したいという欲があったのでダイソーの食器置きをひっくり返して机に引っ掛けて乗せて使用中

f:id:nekorollykk:20201230214758j:plain
こういうやつ 100円
排熱も問題ないし耐久性も問題ない。最初DIYしようかと思ったけどこういうのが一番いいと気づいた
流石俺たちのダイソーだな

ゲームやらない想定で買ったけど135Wの電源にしたおかげでゲームが地味に動いちゃうのでペクスとか7dtdとかやってる
これがぶっ壊れたらまた次も小型PC買う予定。ゲームもゴリゴリ動くやつとかあったらそれでもいいかも

3位 セイルチェアとバウヒュッテの昇降式デスク

f:id:nekorollykk:20201230215219j:plainf:id:nekorollykk:20201230215230j:plain
お値段: 15万くらい

リモートワークでデスク環境を整える必要があったのと、会社からリモートワーク給付金が出たので購入
ゲーミングチェアにしようかと思ったんだけど、チビは足が辛いという情報と単純にダサすぎるので却下
色々調べたところセイルチェアが小柄な人向けらしく、実際に店で座ってみたらベストフィットしたので購入

デスクは適当に奥行あるやつ買おう…と思ったらどれも高さ70cm?で、俺の慎重だと60cmが適切なので却下
仕方なくバウヒュッテの手動昇降式デスクを購入。疲れないし調節しやすいし大正解だった

分割で買ったのでこいつらの取り立てが重くのしかかるけど身体のためなので実質ゼロ円です(震え声)

4位 ピアノ(YDP-131)

f:id:nekorollykk:20201230215834j:plain お値段: 中古で2万

何か熱中できる趣味見つけたいな…と思ってピアノを始めた
最初はちっちゃいmidiキーボードだったけど、着信ゼロ弾くにあたり鍵盤が足りずに急遽購入
ポコポコうるさいけど気持ちよく弾けるしほんとに買ってよかった
5月ぐらいから初めて、とりあえず3曲暗譜して弾けるようになった

いりす症候群 着信ゼロ

youtu.be (いつ撮ったかあやふやだけど弾けるようになってた)

old doll

一番楽しく弾けた

Song of Saya II(の最初のとこ)

最初だけ好きで謎の耳コピ ちゃんと最後まで弾きたい

Steins;gate Believe me

キレイに最後まで弾けた 簡単でいい曲

Spider Dance(練習中)

2021年末完成予定です

コロナが終わったらピアノ教室通ったりしてもっと実力つけて、譜読みも出来るようになって音楽理論も勉強して…
とやりたいことがまだまだたくさん。がんばろう

5位 MiaoMiao

f:id:nekorollykk:20201230223023j:plain

完全に個人的なもの
1型糖尿病の血糖値測定にリブレを使っていて、毎回スキャンするの不便だし低血糖見逃すしでmiaomiaoを買った
5分間隔で自動スキャンしてくれるから低血糖/高血糖に気づけるし、急上昇急降下に対応できるからQOLがめっちゃ上がった
ついでに血糖管理も更に良くなった。目指せhba1c 5.5

6位 Kindle Fire HD 8 Plus

f:id:nekorollykk:20201230222010j:plain https://www.amazon.co.jp/dp/B0839N8B8V
お値段: 2万くらい

Youtube Premiumの特典でもらったGoogle Nest Miniが不具合連発でムカついたので購入
やっぱり画面あるっていい。Alexaスキルも色々あるし楽しい
気が向いたらスキル開発もやってみたい

7位 一人暮らし用炊飯器(SR-MC03-S)

f:id:nekorollykk:20201230223626j:plain https://www.amazon.co.jp/gp/product/B07H7RM1M8/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
お値段: 5000円くらい

HARIOの土鍋使ってたんだけど玄米炊くと吹きこぼれ地獄で最悪だったので購入
洗いやすさだけを重視して選んだ炊飯器だったけど大正解だった
炊けてキレイに洗える。それだけでええ。

まとめ

いい買い物たくさんした1年だった 来年もたくさんお買い物して経済を回すぞい
菅ちゃん 頼むからたくさん金くれ 全部使うから

Elmに初めて触れた感想

なにこれ

qiita.com

の19日目です

Elmの良いところ

  • コンパイラが親切すぎる。期間が空いても1日前まで触っていたかのように再開できる
  • コンパイラが親切なのでリファクタが怖くない。ぶっ壊さずにぶっ壊せる
  • フロントエンド特有のライブラリどうすんねんの悩みがない。環境構築が簡単でスグにやりたいことに着手できる
  • Elmコミュニティの人が親切で初心者に優しい。関数型言語のハードルを下げようと頑張ってくれている
  • TwitterでElmについて呟くとエゴサしまくって迷えるヤギを見つけて助けてくれる方がいる
  • ヤギがいる(?)

Elmに触れる上でハードルが高いと思う所

  • ネットによくある関数型言語=難易度が高い というイメージのせいで勝手にハードルが高くなる
  • 求人で多いのはVueやReactなので、新規に学ぶ価値が無いと思われてしまう
  • Elmに触れる人全体のレベルが高いのか、他言語にありがちなしょーもないエラーの解説記事がないため初心者お断りのイメージがある
  • Elmに関することを呟くと即補足されてRTされるのでビビる人はビビる
  • ヤギが可愛すぎて可愛さのハードルが高い(?)

個人的にはやはり関数型言語=難しいというイメージ、実務で使えるケースが他言語に比べて圧倒的に少ない。という部分が大きいと思っています
実際触れると他言語に活かせるノウハウがたっぷり詰まっていて、むしろElmから始めるべき。と思うぐらい素晴らしい言語なのですが
触れてみないとわからない部分なので、どうしてもハードルが上がってしまうのかな…という感じです。
あとヤギがNG(親をヤギに殺された、宗教上の理由でヤギに関われない等)な方は無条件でElmに触れられません。無念。

Elmで得た知識を実務に活かせて褒めてもらえた話

実務では主にPHPを書いているのですが、Elmで得た関数型のコードの書き方や考え方が自然と染み付いていて
PHPのコードを書く場合にも気づかないうちに活かせていました
Elmで得た知識はElmにしか使えないと思っていたので、こんなメリットがあったのかと自分でもびっくりしました
Elmというよりはプログラミングの基礎的な部分の話なのですが、この辺りが実際に実務で活かせました
- 1関数1処理にする
- 引数と返り値を用意する(引数なしとかvoidは極力避ける)
- 1機能で細分化して、再利用性を高める
- 1機能毎にメソッド化するとテスト容易性が上がる

一度根付いた関数型の意識は簡単には無くならず、最近もバグが少なく可読性/保守性の高いコードが書けている(はず)と思います
Elmを教えてくれた知人に感謝、全てのElmoに感謝、神に感謝

f:id:nekorollykk:20201218224346p:plain

ここから下は蛇足なので読まなくていいです Elmに触れて何やったかのまとめです

Elmとの出会い

静的型付け言語が好きで、可能な限り型をつけて人間のミスを減らしていきたい…と考えていたところに知人が教えてくれたのがきっかけでした
薦められて触れてみたもののJavaPHPのような言語とは毛色が全く違い、他言語の知識があるせいで余計に混乱して挫折してしまいました…

この段階では関数型言語はよくわからんしElmって怖い…ヤギしかわからん…という状態でした

恥を晒してブログにサンプルにコメントをつけまくった記事を書いた

nekoroll.hatenablog.com

自分が持っている知識を総動員して、どうにか他言語に例えて理解を進めようと頑張った記事です
この記事をTwitterでつぶやいた所、Twitterで日々Elmでエゴサしまくっている迷えるヤギを助けようとしてくれているABさんが沢山コメントをくれました

自分が学習する上でよくなかったのが「無理に内部実装を理解しようとしすぎ」という部分でした
Elmが隠蔽して使いやすくしてくれている部分を無理に深堀りして、勝手に混乱してわからん!となってしまっていました

ABさんから「考えるな、感じろ(意訳)」という助言を頂き、改めてコードを触ってみた所視界が開けサクサクと学習が進みました
一度理解が出来てからは詰まっても楽しさが勝り、悩むこと自体が楽しい状態になっていました

そして約一ヶ月でTODOアプリの完成までに至りました

nekoroll.hatenablog.com

一度は挫折して全くわからなかった状態だったにもかかわらず、ABさんの一言でTODOアプリ完成までたどり着けました

その後はSTACKERゲームを作ろうとしたり(座礁中)

nekoroll.hatenablog.com

社内ゲームジャムでElmでサクッとクソゲーを作ってみました(謎に評判が良かった)

nekoroll.hatenablog.com

最近はドット絵やらピアノやらに熱中してしまい、Elmは殆ど触っていませんがまた時間を作ってSTACKERゲームを完成させる予定です

Elmを学ぶ上で得た「無理に深堀りしすぎず俯瞰的に捉える」という考え方はプログラミングだけではなく、ドット絵やピアノの学習にも活かせています
2020年はElmに貰ってばかりの1年だったので、2021年は何かElmに返せるようなことが出来たら嬉しいな…と思っています

CSS学習はじめました

f:id:nekorollykk:20201107232023p:plain
CSS学習はじめました

インターネッツでは「好きなサイトのをコピーする」とか「参考書で学ぶ」とか書いてますが
僕は要素を一通り試さないと理解できない性格なので、MDNのCSS要素全て試すことにしました

developer.mozilla.org 要素だけ数えると614個あります

実装はこちら↓

https://sugawani.github.io/elm-css-try/
github pages

リポジトリ
github.com

現在allまで終わってます。10年以内のゴールを目標に頑張っています

社内ゲームジャムでクソゲーを作った

作ったもの

脳トレゲーム(仮)
f:id:nekorollykk:20201103182134j:plain
(このタイトル画像のためにOffice365契約しました)
https://sugawani.github.io/elm-brain-traning/

コード
github.com

推奨解像度WQHDのクソゲーが出来上がりました

お題

  • 何度でも
  • サラダ
  • コイン
  • アンパン
  • ゴルディアスの結び目(?)

がお題一覧で、この中からサラダが選ばれたらしいけど
それに気づかず全部入れるものだと思っててゴリ押しで作った

解説

解説するほどのことはない簡単なゲーム

キー入力受付

toKey : String -> KeyType
toKey key =
    case key of
        "ArrowUp" ->
            Up
        
        "w" ->
            Up

        "ArrowDown" ->
            Down
        
        "s" ->
            Down

        "ArrowLeft" ->
            Left
        
        "a" ->
            Left

        "ArrowRight" ->
            Right
        
        "d" ->
            Right

        "Enter" ->
            Enter

        _ ->
            Other

最初↑↓←→だけだったんだけど、wasdでプレイさせてくれって要望があったので急遽雑対応した
developer.mozilla.org を見る感じkeyWとかで行けそうだったんだけど、上手く動かなかったのでwで指定した

画像とか音楽をビルドする

github.com
これを使ってアセットディレクトリすべてコピーするようにした
便利、神に感謝

音楽の自動再生

, audio
    [ Attr.src "nando_loop.mp3"
    , Attr.type_ "audio/mp3"
    , Attr.autoplay True
    , Attr.loop True
    ]
    []

HTML5audioタグを使って自動再生しようと思ったらChromeだと上手く動かなかった
developer.mozilla.org

メモ: 自動的に音声 (あるいは音声トラックを含む動画) を再生するサイトはユーザーにとって不快な体験になる可能性がありますので、可能な限り避けるべきです。自動再生機能が必須である場合は、オプトイン (ユーザーが明示的に有効化することを求める) にするべきです。ただし、ユーザーの制御下で後からソースを設定するメディア要素を作成するときは、この方法が役に立つでしょう。自動再生ガイドには autoplay の正しい使い方についての追加情報があります。

これが原因だった

つまるところスパムサイト対策としてユーザが意図しないデフォルトの自動再生はNGらしい
抜け道として無音の音声ファイルをiframeで埋め込んで自動再生すると行けるという方法もあったみたいだけど、いつの間に防がれていたらしい

仕方ないのでChromeユーザにはサイト設定から音声許可してもらうことにした(今思うとダイアログ出せると良かった)

hbsnowさんから聞いたけどhowler使うとサクッと行けるらしい
howlerjs.com

バグ

雑に作ったせいで10問目は正解不正解問わずクリアになる
これ頓挫してるSTACKERゲームに繋がる部分な気がする

まとめ

みんなUnityで凄いゲーム作ってて提出するの気が引けたけど、チームの人が
「すがわにさんがクソゲー提出することでハードル下がるから提出すべき」って言ってくれて勇気が出た
完成したからエラい!ヨシ!