人の意見に左右されやすい性格で、学生時代に読んだ「Railsはプログラミングではない」的な記事に影響されてから、「あぁRailsしか出来ないエンジニアにはなりたくないな。Railsのエコシステムに頼らなくても生のRubyでちゃんと開発できるようになろう。」 という気持ちになっていた。だからこそ、学生時代に趣味で作ってたいくつかのプロダクトやWebサービスは、Railsに頼らないナマのRubyや、軽量なライブラリ*1であるSinatraで書いたものが多かった。
のだけど、実はそれ失敗だったなぁと思い始めている。というのも、自分の場合 仕事で使っている技術のキャッチアップのために趣味アプリを作ってみたり、Twitterで見つけたおもしろそうな技術を趣味のアプリに適用し、様子見してから同僚に提案してみたりなど、わりと仕事と趣味とで相互に知見を輸出入しあう感じが好きだなぁと気づいたからだ。これで、仕事はRails・趣味はSinatraとかやっちゃうと、そういうことが出来ないとまでは言わないが、結構しにくかったりする。むしろ「仕事の技術で趣味をやる」くらいのほうが僕にとっては学びやすかったりするのだ。
というわけで最近はその反省を活かして、あんまりWebアプリっぽいものじゃなくてもあえてRailsで作りそのエコシステムにうまく乗っかる練習をしている。仕事でアプリを触るときって、誰かが作った仕組みの上に継ぎ足すことが当然ながら多いと思うのだけど、その誰かの仕組みを自分で真似してイチから作る。ときにはもっと良いやり方を見つけられることもある。そんな体験を通じて得られる学びはとても大きい。
今年は母校のアドベントカレンダーの22日目を担当させてもらっているのだけど、そんな感じのことを書けたらなと思っている。たぶん。
*1:Sinatra is a DSL for quickly creating web applications in Rubyとのことなので、あえてフレームワークとは言わない