この半年やったこと、継続していること

syohex.hatenablog.com

studio3104.hatenablog.com

あまりにも同じことをしていたので「せっかくなので」と思って筆を執ることにする。

@syohex さん@studio3104 さん も僕もだいたい同年代の人たちが同年代の sugyan や色々な方の影響を受けて同じことをしているというのはシンパシーを感じますね。

僕は今の仕事はフロントエンドエンジニアであることが多いのですが、「知識に垣根は作らない」をモットーにしているので、色々半年間挑戦してみました。

Leetcode

この半年で545問解きました。

github.com

sugyan が leetcode に取り組んでいたのも見てたのですが、僕の場合は自分の会社の面接でコード面接をやることがあり、コード面接の時に自分が知らないような事を問題として出すのは恥ずかしいな、という思いから勉強し始めたら楽しくてハマってしまったという経緯です。(もちろん同世代の sugyan がやれていることにも憧れはありました)

あとコロナ禍だったりでリモートになり、仕事と家の間の行ったり来たりが減ったことで、割と融通がきくようになったのでここは一つと思って競技プログラミングの勉強がてら、習慣として leetcode を毎日実施しています。

f:id:yosuke_furukawa:20201217021152p:plain

https://leetcode.com/yosuke-furukawa/

毎日 Leetcode を書いているおかげか、Easy, Medium の問題は全てではないですがなんとか解けます。Hard もそこまで難しい問題ではないときがあるので解けるときは解いてます。

ちなみにずっと JavaScript で解いてるのですが、こういう競技プログラミングには全く向きませんね。 Java とかであれば LinkedList が使えたり、 Heap の実装が既にあったりするのですが、 JS の場合はそれを自作するところからだったりします。

標準ライブラリを仕様に入れるという構想があるようなので、コレクションクラスの充実を望みます。

書き始めてから半年しか経過してないのでなんとも言えませんが、レビュー等での指摘で多少賢いやり方を教えられることが増えたようにも思うのと、 OSS でも基礎的なアルゴリズムを使ったようなものは多少すばやく書けるようになった気がします。

後最近は Advent of Code も毎日出るんで解いてます。

f:id:yosuke_furukawa:20201219013703p:plain
Advent Of Code 2020

個人的に好きな leetcode の問題

LRU Cache ですね。

leetcode.com

一度ライブラリで自作した時に JavaScript で実装するとこんなに面倒なのか、、、と思ったのですが、 leetcode でも出てきて「おおっ」となりました。ちなみに OSS で自分の自作した LRU Cache を使っているのですが、一時的な API の Cache として保持する時に使っています。有用だし、高速化されるし、作ってみると面白いと思います。

他には数独 Solver も好きです。

leetcode.com

Backtrackで解ける問題昔は苦手だったのですが Leetcode を経て楽しく解けるようになりました。

英語

DMM 英会話くらいしかやってませんが、半年で 4900 分間レッスンを受けました。

f:id:yosuke_furukawa:20201219011736p:plain

こっちは物理的にも時間的にも制約があるのと相性の良い先生とのレッスンを取ろうとすると相手の都合もあったりで、毎日コンスタントにやるのは難しいのですが、大体週5-6日は英語で50分間はしゃべっています。

これもコロナ禍の空き時間を使った形ですね。英語を再勉強するというきっかけになりました。あまり発音も良くないので、発音を矯正しようと思って本で勉強したりしています。

www.amazon.co.jp

あと今年は海外での登壇予定があったので、そのためにも気合を入れてやってました。

youtu.be

これまでもそれなりに話せたといえば話せたのですが、発音を気をつけてやってみたら agektmr さんからも褒められて嬉しかったです。

後最近は Youtuber の Daijiro さんの動画を笑いながら見てます。

www.youtube.com

数学

あまりちゃんとやれてないですが、数学も解いてます。 Youtube で数学の問題を必ず一日一問解説してる 鈴木貫太郎さんの動画があるので、それを見てます。

www.youtube.com

大学のノートみたいなのを買って朝の30分だけ解いたりしてます。朝起きた時に問題を見て、解いてみて、あってるか動画で見て、動画に自分がどうやって解答したかを書いてます。完全に知識が鈍ってるのでエレガントな方法をスッと思いつくのは苦手ですが。

数学ができると leetcode の問題でも数学の知識を問う問題があって解けるようになったりと色々付加的な効果がありました。

鈴木貫太郎先生が教えてくれる整数問題はパズルのようで楽しいです。ただやってると高校の時にもっと勉強しておけばよかったな、、、と思うことが多いですね。

競技プログラミングや英語と違い、数学は特に明確な目的があって始めたわけじゃなく、趣味みたいな感じです。

これから

こういう活動を会社の仕事や家の事があるので柔軟な時間にちょこちょことやってます。多分これからも同じことを続けていきたいと思いつつ、ある程度切りの良いところを見つけたら別な挑戦もしてみるかもしれません。新しいプログラミング言語を身につけるとか低レイヤをやってみるとか、ずっと漠然とした憧れがありながらもできていないので、コロナ禍のまだリモートワークを中心とした生活の中で会社の仕事とのバランスを取りながらやってみようかと思ってます。

yuroyoro.hatenablog.com

(ちなみに、この記事すごくいいですよね。やってみたくなります。)