メlog

ジェロメのlog

読書ログ: 私たちはどう学んでいるのか: 創発から見る認知の変化

子育ての合間に「私たちはどう学んでいるのか: 創発から見る認知の変化」という本を読んだのだが、とても興味深く面白い内容だったのでメモしておく。

学びを「認知的変化」とした上で、その背後にある「無意識的なメカニズム」を生み出す「創発」というプロセスという構造で説明されていた。

どう学んでいるのかを説明する前に、能力や知識といった概念の一般的な理解・印象から来る本質への誤解を解きほぐすところから始まるので、学びそのものに加えて自分の能力観もアップデートされたような感じがありとても良かった。

年始に抱負を掲げて、今年は頑張ろうと思っている人に読んでほしい。おそらく自分の学び方に良い影響を与えてくれると思う。

何よりエンジニアとして(というか何としても)生きる以上学びとは無縁でいられないし、子育てに携わる身になったこともありそうした意味でもこのタイミングで読んで良かった本だと思う。

印象に残った点

  • 能力には揺らぎがあり、状況に依らず確実に発揮できるものはないということ
  • 知識は認知的リソースと環境的リソースから創発するものだということ

感想

  • 能力には揺らぎがあるのは励まし(慰め)になる。いちいち気落ちしなくていいなと思った
  • 知識はリソースから創発するもの、という考えはまるでクライアントとサーバーのように感じられた
  • エンジニアの学習も多角的であるべきだと感じた
    • コーディングについては写経が良さそうだと感じた。良いコードを真似することで原因マネへ至るのだと思う
    • 図解や絵を描くこともきっと良いだろう
    • 文字情報・視覚的情報として扱うことが多いのだから、それ以外の方法で扱うのが多角化という観点からは良さそう
      • 例えば学んだこと、読んだことをpodcastで話すとか(他の誰かという環境リソースを加えることで更なる創発も見込める)
  • 手を動かすことが重要だと改めて感じた。リソースを次々と生成できるからだ
  • 子どもの教育においても、多様な環境リソースを与えることが重要そう

余談

  • どのようなフォーマットで読書ログを取るか迷ったので良さげなフォーマットがあれば知りたい
  • 次はこの本で紹介されていた下記の本がとても面白そうだったので読んでみようと思う

2022年の振り返り

はじめに

年末になると一年を振り返る記事が溢れてきますが、自分はそれらを読むのが結構好きです。知り合いがどうしていたのか知ることができるので年の暮れの挨拶のように読めるし、各人の頑張りを見て来年の計画に役立てることもできますし。

そんな思いで「他人の振り返り記事が好きだ」と呟いたら振り返りを催促されたので、自分も今年を振り返ってみようと思います。

やったこと・触ったもの

ざっくり箇条書きで

技術関連

フロントエンド

  • Vue3
  • Vite3
  • vue-cli
  • Typescript
  • 社のイベントで使うシステムをほぼ一人で作った
  • GraphCMSを通じてGraphQLをちょっと触り便利さに感動した

バックエンド

  • golang
  • bufbuildを触った
  • gRPCに触れた

インフラ

  • AWS SAAを取得した
  • terraformでECS, S3, Aurora, Cloudfront, IAMなどのAWSインフラを構築した
  • Cloudflare Pagesをちょっと触った

その他

  • github actionsに結構詳しくなった
  • ADR

発信

  • Cloudflare Pagesをちょっと触ったのが社のブログになった note.com
  • 自分のzennの記事が、あるワードでググった際に公式に次いで二番目に出てくるようになった
  • ちょっとしたgithub actionsを作って公開した zenn.dev

ゲーム制作

  • unity 1 weekに参加した
    • が開発途中で面白くならないことに気がつき断念

ゲーム

  • A Short Hikeで泣いた。この正月休みに全人類にプレイしてほしい。 store-jp.nintendo.com
  • VALORANTにハマった
    • VALORANTにハマることでSplatoonにハマらなくなった(弾が真っ直ぐ飛ばないので)
  • 原神にドハマりした。推しは煙緋。
  • 人生初フロムゲーのELDENRINGに挑戦するも撃沈した
  • ポケモンはバッジ0個

私生活

  • 第一子が産まれた
  • ランニングをしていた(過去形)
  • 育休取得中(現在進行形)

その他もろもろ

  • 鳥取砂丘に初めて行った
  • podcastの収録をした(未公開)
  • VRoid Studioで体を2つ作った
  • 色々な味のカップラーメンを食べた
  • 自分自身をハンドリングするために一人スプリントを回しているが、これがかなりワークした

まとめ

仕事

今年の仕事はインフラ 〜 バックエンド 〜 フロントエンドで幅広く取り組ませてもらえました。特に知識が浅いと感じていたインフラについて、資格取得と業務経験を経て一定の知識がついたのが良かったですし、これがあるかないかでシステム全体を俯瞰して見る際の解像度が違うなという印象で、このタイミングでこうした経験を積めたのは非常に良かったと感じています。こうした仕事の機会をくれた会社には感謝しきりです。

また、会社のイベントに携われたのも大変良い経験でした。企画の提案から要望のヒアリング、調整をした上で実装まで8〜9割ほど自分でできました。このあたりは前職の経験も活かしつつその延長線に踏み込めた感じがしており、ある程度の成果は出せたのかなと思います。

一方で少し幅を広げすぎた感じもしており、個々の習熟が足りない時がありました。根本的には自分のキャリアを考えた上で選択と集中をしていくべきだと思うんですが、自分の学習方法にも問題もあったと見ています。幅が広がる分当然個々の積み上げスピードは遅くなり進捗は見えづらくなりますし、それに応じて不安も湧いてきますが、これをコントロールしつつ長期的な投資のアクセルを踏みポートフォリオを固められるかどうかが並行した学習を成立させる条件かな、と考えています。

この並行した目標のバランス取りや不安のコントロールに一人スプリントを導入したのが今年の終盤でした。今のところそこまで並行数は増えていないのでまだわからない部分もありますが、育児という大きめのタスクが日々あるにしてはうまく回っている実感があります。一人スプリント、おすすめです。

少し別の話になりますが、CTOをしている友人から「満遍なくできるヤツよりも何か尖ってる人の方が限界の高さが伺えていいよね」って話をされて納得感があったので、先の方法で広めの知識を確保しつつ、方向性的には絞り、高く積み上がるようなスタイルを目指したいなあと思ってます。楽しそう!

という感じで、機会に恵まれているため来年はこの機会をより活かし、高く積み上げ、成果を出すことで報いていきたいと思います。

プライベート

今年は子どもが産まれたため大きな変化のある年でした。幸いにも出産まで通して嫁の体調はそこまで崩れず安定していてくれたので、かなり穏やかに過ごせたのではないかと思います。コロナ禍でしたが出産に立ち会うこともできました。

陣痛開始時〜出産までの長丁場で出産する側は精神的にも体力的にも極限まで疲弊していますし、そうした状況では意外と男性にもできることがたくさんあるので世の男性は積極的に立ち会うのが良いと思います。

そして何よりも子どもが可愛いですね...!子煩悩になるだろうなと覚悟していたんですが、それを遥かに上回るレベルで子煩悩になっています。毎日山ほど写真を撮ってみてねに上げる日々です。

おそらく来年は夜泣きに悩まされることになると思うんですが、それでも子どもを可愛がりつつペースを保って仕事と両立していければと思います。

来年特に頑張りたいところ

  • 育休中にwith育児の生活ペースを整える
  • これは任せろと言えるように技術力を尖らせていく
  • 広めの視野を持つだけの幅は確保する
  • 少しずつでいいからゲーム制作やっていき
  • ランニングを再開する
  • 取り込むエンタメの幅を広げる

全体を通して改めて

色々と学びの多い、とても良い一年でした!来年も頑張るぞ〜〜!! 良いお年を!

調査から始まるタスクで爆死しないために

ふと、自分の反省点をしっかり文章化して残していきたいなあと感じたので振り返る。定期的にやりたい。

~~

先週、調査〜サンプル実装のissueを進めた時に爆死してしまったのでまとめておく。 実際のところ、自分は調査系のタスクで煮詰まることが多いなと感じたので今後の教訓にしたい。

一言でまとめると「聞けばいいじゃん」。

事象

何があったか・どういう状態だったか

  • 調査から始まるissueに着手した
  • issueの目的を理解していなかった
    • 最終的に達成すべきことははっきり明示されていた
    • が、どういう文脈・背景があってそれをやる必要があるのか理解していなかった
  • チームメンバーに質問するのを恐れていた

なぜそれが起きたか

  • issueのゴールから具体的なTODOまで分解できていなかった
  • 質問ができる状態になるまで時間がかかっており、聞いたところで「今さら?」というリアクションをされるのを恐れていた
  • チームというより個々の成果を期待されているような気がしており、質問しづらかった

対策

わからないことは慌てず聞く

  • 早めに聞くのは当然
  • 早めに聞く意識を持ちすぎて焦るのはNG
  • しっかり聞きたい。だから慌てない。まずは分解。そのために待たせるのは何も問題がない。
    • かと言って抱え込まない。勘繰りは抱え込みの兆候。「わかんねえや!」でまずは聞く。

やることがはっきりしていても進められないケースがあると理解する

  • 上述の通り、issueの文脈がはっきりしていない場合はTODOが無限に膨らむ
  • 例えば「やること:ステーキを焼く」だった場合
    • ステーキの焼き方は無数にある。
    • 自分の分だけ作ればいいのか、他の人のも作るのか
    • 最高級ステーキを作る使命を負っているのか、できさえすればいいのか
    • 包丁で切るのかハサミで切るのか
    • 肉叩きを使うべきなのか、使わないべきか。はたまた肉叩き済みの肉が運ばれてくるのか
  • 取りうる選択肢は文脈を狭めないと無限に広がる
    • 特に手法がわからない「調査から始める」タスクはそうなりやすい
      • ステーキってどういうものか?から始まる
      • 火を通すのってフライパン?オーブン?それとも油で揚げる・・?などの疑問が湧いてくる状態になる

もっとヘラヘラする

  • もっとヘラヘラとわかんないことは気軽に聞く
  • ヘラヘラは最強
  • 枕詞をちゃんとつければ大体のことは聞いてOK。

最後に

自分向けの処方箋なので他の人に効くかはわかるません

終わり。

unity1week「ふえる」に参加したので振り返り Part 3. よく使われるAssetをまとめる

ランキングを上から順に見て、使われていたアセットをリストアップしておきます。

使われていたアセットまとめ

BGM

https://maoudamashii.jokersounds.com/ https://otologic.jp/ https://hiroakikonegawa1028.wixsite.com/otogoya https://pocket-se.info/ https://dova-s.jp/bgm/play6878.html https://assetstore.unity.com/packages/audio/music/orchestral/ultimate-game-music-collection-37351 https://dova-s.jp/

Font

https://marukiyagames.com/ http://www17.plala.or.jp/xxxxxxx/00ff/ https://pm85122.onamae.jp/85122font.html https://mplus-fonts.osdn.jp/about.html https://fonts.google.com/specimen/Sawarabi+Gothic https://assetstore.unity.com/packages/audio/music/game-music-pack-suite-20997 https://fontopo.com/

SE

https://soundeffect-lab.info/ https://fc.sitefactory.info/ https://assetstore.unity.com/packages/audio/sound-fx/universal-sound-fx-17256

ビジュアル

https://www.textures.com/ https://assetstore.unity.com/packages/vfx/particles/spells/elementalis-2018-revamping-500-fx-magic-spells-megabundle-03-23294

システム面

DOTween Pro Doozy UI https://assetstore.unity.com/packages/tools/network/pun-2-free-119922?locale=ja-JP https://github.com/hadashiA/VContainer https://github.com/kou-yeung/WebGLInput

終わり。

ちなみに前回の振り返り記事はこちら。

ランキング上位に共通する点って何だろう?というのをまとめました。

jerome-1010.hatenablog.com

unity1week「ふえる」に参加したので振り返り Part 2. ランキング上位から学ぶ

Part2ではランキング上位の方々から色々学んで行きます。

ちなみにPart1では単純に良かったこと悪かったこと、所感をまとめました

jerome-1010.hatenablog.com

ランキング上位に共通する点

  • カテゴリランキングで上位に入っている
  • 期日通り公表している
  • 面白さが伝わるアイコンになっている
  • Assetを使っている

カテゴリランキング上位に入っている

unityroomのu1wのページを見るとカテゴリランキングが割と目立つ構成になっていることがわかります。

Unity 1週間ゲームジャム お題「ふえる」 | フリーゲーム投稿サイト unityroom

なので、満遍なく要素を満たした作品よりも、何かしらのカテゴリで高評価をもらえるような、尖った作品を作ることで

カテゴリランキングに載る→多くのプレイヤーの目に付く→評価される→総合ランキングでも上位に!

と言った流れに乗れそうです。

期日通り公表している

体感ですが、期日通り〜数日の遅刻で投稿している方が多いように見えました。

単純に評価期間が長ければ長いほど遊ばれる回数も増え、その分評価される回数も増えるはず。

面白さが伝わるアイコンになっている

ランキング上位のアイコンは

  • 動きがある
  • キャラが前面に出ており、誰(どのキャラクター)が何をするゲームなのか伝わる
  • タイトルロゴがイケてる

と言った特徴があるように感じられました。

アイコンはゲームのパッケージみたいなものなので、ここにも力を入れると良さそう。

Assetを使っている

詳しくは次のpartでまとめますが、どのゲームもAssetをうまく活かしているなあと感じられました。

Assetは

- そもそもAssetの種類をある程度知らないと、自分のゲームに合うものを選べない
- 普段から使っていないととっさに使えない

という性質があるので、まずはどんなアセットがよく使われているのか把握するところから始めようと思いました。

終わり

unity1week「ふえる」に参加したので振り返り Part 1. 良かったこととか所感とか

振り返り

unity1weekというイベントに参加して一週間でゲームを作ってきたのでその振り返りをまとめます。 投稿した作品はこちら

f:id:Jerome_1010:20200902013716p:plain unityroom.com

評価は33件、閲覧数は561回でした。

ちなみに前回の作品はこちら

unityroom.com

評価10件、閲覧数1197回でした。回数が多いのは単純に年月の問題かな。

それではできたこと、できなかったことを振り返ります。

今回できたこと

成果

  • 評価件数が30件を超えた
  • 遅刻はしたけど作業期間自体は一週間でゲームを作りきった
  • twitterのフォロワーが少し増えた

ゲームデザイン

  • UIオンリーのゲームを作ることができた
  • アイテムを8つも実装できた
  • アイテムがランダムで出てくる仕組みを実装できた
  • 様々なパラメータをいじってバランス調整することに初めて挑戦できた
  • ゲームBGMを自作することができた、短いけどそこそこかっこよく作れた

技術

  • delegateとかCoroutineとか使うことができた
  • URP、シェーダーグラフをゲーム表現に取り入れることができた
    • ブラウン管TVをイメージした縞模様のスクロールがそれ f:id:Jerome_1010:20200902013716p:plain
  • ランキング機能を入れることができた
  • tweet機能を入れることができた
    • tweetしてアンロックするという機能を入れられた
      • ソシャゲとかにはよくありそうな手法っぽいので思いつきでやってみた
  • まともにプレイできないようなバグがない状態でリリースできた
  • リリースあとにbugfixできた
  • リリース後にバランス調整できた

今回できなかったこと

  • gifアイコンの設定
  • 画面の作りこみ
    • 本当はuGUIを使わずにいたかった
  • 演出の作り込み
    • SEの付与
    • Post Processingとか
    • 人が増えて行く様子とか発電所を建てる様子とか
      • きちんとやったらシムシティっぽい雰囲気になっても良さそうなのにその面影も何もない
      • ただ数字が増えていくだけなのでマジで演出は0点だった…雰囲気よくしたい…
  • きちんとした設計での実装
    • 後半は神クラスに何もかも突っ込みすぎて自分でもどこにどの処理が書いてあるかいちいち探す必要があった
  • ランキング入り
    • どのランキングでもかすってすらいなかった
  • 高評価獲得
    • ☆4も5も取れていなかった
    • 個人レベルではくださった方もいるかもです、ありがとうございます
      • それよりプレイいただけたことが本当に嬉しい。貴重な時間をありがとうございます。

所感

  • 遅刻はしたけど期日内で仕上げたり、その後アプデしたりでわりと品質自体は小綺麗にまとまったのが良かった。
  • 技術面で様々なことにチャレンジできたのが良かった。自分のやれることの幅が少し広がった。
  • 総じて前作投稿時からのレベルアップを感じた。
  • 面白さの探求・作り込みをするためにもう少し頭を使う必要があると感じた。具体的には後述。
  • なんだかんだいって高評価取れなくて悔しかった(当然なんだけど。。)
    • 自分のレベルを考えるとまずはこれでOKと思うことにした。

結論:次回はもう少し頭を使う必要がある

無策に作っても自分のような凡人はランキングは狙えないので頭を使う必要があるなと感じました。 勝負は始まる前に決している、、、

ランキング上位勢に学べ

  • ランキング上位はどういう評価をとっているか、何がウケているか
  • どこに力を入れて逆に手抜きしているところはどこか
    • ウケ要素は必ずしも力を入れているとは限らない
  • 一週間の時間配分はどうしているか
  • 一週間の間、SNSではどういう投稿をしていたか
    • ワシなんも進捗つぶやいてなかったしな。。。

今回のu1wから学習しよう

  • 今回のゲームでもっと面白くできそうなところはあるか?
    • それを実現するためにはどうすればよいか?
  • 今回躓いた実装に次回も躓かないようにするにはどうすればよいか?
  • ゲーム品質向上以外にできることはあるか?
    • 締め切りを守れば評価期間が実質延びるし評価が上がるかも?
    • SNSでの露出の仕方を考える

最後に

参加するたびにunity1weekは本当にいい企画だなと感じます。改めて参加できてよかった。 主催者のないちさんや遊んでくれた方々、ゲームを投稿してくれたクリエイターの方々に感謝しかないです。

せっかく良い振り返りができそうなのでこれをPart1として振り返りを続けていきたいと思います。 以下次の振り返りのための駄メモ。

# このあとやりたいこと
## ランキング上位から学ぶ
- gifアイコン
- 役立ちそうなアセット
- ランキングをとるためにランキングを取る必要がある構造

## システムのリファクタ
- 神クラスをやめる
- 似たクラスが多いので基底クラスを作るかインターフェースを作る
- 初期化処理が散らばっているのでそれをまとめる
- 確率周りの処理が正しい方法になっていなさそうなので対応する

## おもしろさのリファクタ
- ビジュアル
- se
- uGUIやめる
→自分のアイデアの限界まで面白くなるはず
→アイデアが悪かったのか、アイデアを表現しきれなかったのかという違いがある(アイデア以上に面白くしてしまうみたいなのはありそうだけど)

2020/04

なんもできてないが?仕事しすぎか?

3月の振り返り

TODO

  • [ ] 本読みきる:量を減らして、目標達成を経験する。ゲームづくりのこの時期に必要な内容なので身につけたい
  • [ ] 継続して読む
  • [ ] 映画見る
  • [ ] ゲーム:Trunkのプロトタイプづくり
    • [ ] ゲームループ完成させる
    • [ ] DI導入
    • [ ] テスト導入
    • [ ] Rx導入
  • [x] リングフィットを継続

リングフィットしかできてないが!?!?!?!?!

その他やったことや考えたことをつらつらと、仕事面でもメモる。

  • コミュニティのスレッド機能開発した
  • コミュニティの絵文字機能開発した
  • 脆弱性について学んだ

    • CSRFトークンの必要性とかちゃんと理解できた。tokenをヘッダにつけて送ったりするだけじゃなくて、最近のモダンブラウザならCookie使ったりサーバー側の設定でなんとかなるというのがとても面白かった。結局SecureなPostメソッドを作ることになってたけどそれはそれで面白かった。
    • 特にこれめっちゃよかった qiita.com
  • Vue.jsがめちゃくちゃ楽しくなってきた

    • Vue.jsはフロントコーダーからわりと素直にフロントエンドエンジニアへの道が拓けるという意味でとてもよいフレームワークだと思う(実際自分がわりかしそう)
    • 設計とかめっちゃ悩んで特に四月は考えまくったり資料読んだりして浪費してしまった感あるけどやっぱり楽しい
    • Container ComponentとPresentationに分けていきたいんだけど、それをするにはやっぱりテストが必要で(だってテストないと変更した時安全かどうか怖いし)、テストがないコードはレガシーコードってのは柱に彫りたいレベルの金言だなと思ったりした。
  • 仕事楽しすぎる問題
    • 裁量と責任があって楽しい。
    • unity触れてないのは仕事にハマりすぎてunity触ってないからだ。
    • 毎日触らんと毎回脳みそのロード処理が重たくってやってられたもんじゃない。やるぞ。やることによってコストをさげろ。
  • そういえばリモートワークについておもむろに資料を作った speakerdeck.com
  • フィジカルにゲームのプロトタイピングをしてみた。これはリアルタイム囲碁みたいなもの
  • 囲碁は戦略、将棋は戦術という違いがあるのかもと気づいたりした。将棋は戦術レベルなので駒の個性が見えるけど、囲碁は戦略レベルだから駒が部隊レベルに抽象化されており個性が見えないのかなとかとか。

おまけ 1月2月にやったこと

  • コミュニティ機能の基本的な部分を作った(1月)
  • PHPUnitを5系から8系までアップデートした。そのためにたくさんテストを直した。(2月中旬〜)
    • これはすごく良い経験だった。ライブラリのバージョンを上げるという作業のメイン部分を任せてもらえた。
    • 特に、ライブラリ側の変更が顕著で色んな部分でwarningが出ており、OSSにコミットして方向性を自分側に揃えたくなる大企業の気持ちがちょっとわかったりもした。
    • PHPUnitというものを雑にassertTrueしたりassertSameしたりする程度の使い方しかしてなかったので、vupに伴い深い理解ができたので良かった
    • OSSのissueやPR、実装を深く読んだりしてdeep diveした気持ちになったのも良かった
    • 結局まるまる2~3週間かかった。段取りが悪かったりdockerに対する理解が浅かったりしたのが主な原因。

4月にやること

仕事

  • vueでスレッド機能を実装する、bugfixとかとか
  • vue.jsのテストを書ききる
  • phpでメール機能とかいじる

TODO

  • [ ] 本読む(もう1ページでも読めればOK)
  • [ ] 映画見る
  • [ ] ゲーム:Trunkのプロトタイプづくり
    • [ ] 無限にスクロールするステージを作る
  • [ ] リングフィットを継続

ぼやき

振り返りたいことが多すぎて

  • 振り返りたいことが多すぎるので(仕事も熱中してしまっているし)何かしらまとめるためのフォーマットを決めたい
  • 今月の振り返り(TODO, 実際にやったこと、新しく始めたこととか)・来月やること(TODO)、ぼやきの構成でいいか。

やりたいことが多すぎる

  • Unity
  • vue.jsとテスト、テストカバレッジ、設計
  • Clean Architecture
  • Cコンパイラつくる
  • MDNの翻訳
  • GASとSlackでリモートワーカー向けスタンプカードを作る

ザコがよォ!!!

COVID-19

  • 流行に際してかれこれ1~2ヶ月ほどリモートワークを続けているけど今のところ大きな問題は個人レベルではない。
  • 流行の輪が広がり続けて最近は自粛に伴いスーパーにも人が溢れており非常に怖いので宅配でメシを食う日々を送ることになりそうだ。
  • 最前線で戦い続けている皆様がどうか無事でいられるように祈るばかり。ありがたい。