みなさんこんにちは。りがにです。

これは自慢なんですが、社内コードコンテストでチーム・個人共に1位を取りました。いえーい👏
同時開催の ISUCON では、エラーを吐いてる Crystal 版アプリケーションのデバッグに時間を溶かしてました。私は一体何を…。

今回は、ふだん私がどこから知識を得て、どのように学んでいるのかを自分語りしたいと思います。
合った学び方は人それぞれだと思いますが、なにかしらの参考になればうれしいです。

よく見るドキュメント

私は公式(ないし、それに近い)ドキュメント信者です。
なぜ公式ドキュメントが好きかというと、殆どの情報に無駄がなく正確なためです。一言一句が重要な情報です。
たとえ先輩エンジニアから情報を教えてもらったとしても、実装するときには公式ドキュメントを読みながら挙動を確認するようにしています。

🌐 Chrome

Chrome Platform Status
https://chromestatus.com/features

Chrome Platform Status を Subscribe しておくと、今後実装されていくであろう機能などが通知されます。楽しい。
releases タブからは Next バージョンに載る予定の機能一覧も確認可能です。

Issues - chromium
https://bugs.chromium.org/p/chromium/issues/list

Chrome というか Chromium ですが、「私の頭の中では動いてるんだけど、現実は…」というときはここで不具合の検索をします。不具合について Google 検索した結果に行き着く場所でもあります。

📄 HTML

WHATWG
https://html.spec.whatwg.org/multipage/

MDN も良いのですが、極稀に情報に誤りがあったりします。
翻訳により情報が欠けることもあります(これは仕方がないことです。翻訳には本当に助けられています)。
誰でも編集可能なので、気づいたときはどんどこ直していきましょう!不安であればレビューの依頼もできます。

🎨 CSS

W3C
https://www.w3.org/Style/CSS/

公式仕様ですが、各ブラウザが沿って実装できているかは別…。

W3C csswg-drafts
https://github.com/w3c/csswg-drafts

ここでマージされたものが CSS Working Group Editor Drafts に載ります。たぶん。
PR を眺めてるだけで面白いです(CSS Nesting Module の PR を見つけたときはとても興奮しました)。

MDN
https://developer.mozilla.org/ja/docs/Web/CSS/Reference

CSS は書いて実際に挙動を確認できるため、MDN で済ます事が多いです。
重ね合わせコンテキストの解説などでもお世話になりました。

💎 Ruby

Rubyリファレンスマニュアル
https://docs.ruby-lang.org/ja/

るりまが神すぎる…。ありがとうるりま。いつもるりまのこと考えながら寝ています。
私は pry-doc を除き、るりま以外ほとんど読まないです。
もちろんるりまもバージョンが追いついていない箇所があったりしますが、まず当たることはないと思います。

よくやる学習

通勤時間にリファレンス読書

MDN CSS リファレンスは A から Z まで翻訳済みのプロパティを、
Ruby リファレンスマニュアルは例外クラスを除いた組み込みライブラリを読みました。

圧倒的な文量に思えますが、習慣化したらそこまで苦しくもなかったです。
暗記するつもりで読むのがおすすめです!完璧に暗記する必要はないと思いますが、記憶が強いほど実装時の発想のバリエーションが増える気がします。

スマホでどこでもインタラクティブシェルを叩く

私はこれでスマホをお風呂に水没させました(米に突っ込んで復活しました)(というのを2回やりました)。

インタラクティブシェルというのは Ruby だと irb や pry、PHP だと PsySH などです。
VPS を契約しておいて、SSH クライアント越しに実行しています。
iOS だとオススメの SSH クライアントは Termius です。

いつでもどこでも実際の挙動を確認できるのは便利です。
通勤時間中のリファレンス読書と組み合わせると最高。
このために英数字をフリック入力に矯正しました。吊り革掴みながらでもコード書けるのがつよい。

おわりの言葉

なんか、随分とえらそうな記事書いてしまった気がする。
私はこう、というだけなので、あしからず!