「札幌市中央区Ruby会議01」で発表しました

2014/02/08 に開催された「札幌市中央区Ruby会議」で「趣味プロダクトで楽しいコードライフワークを送る」という題で発表してきました。

自分にとっては初めてこういったイベントでの発表だったので、正直、@tricknotesさんから発表の依頼を受けてから内容をどういう方向に持って行こうかすごく悩みました。

RubyRailsの技術的な話は自分にはできないし、自分に話せることは自分が実際にやっている趣味プロダクトの話しくらいかと。今ではライフワークのようにほぼ毎日コードに触れて趣味プロダクトを楽しんでいますが、そもそもなぜ自分はこうしているんだろうと思い始めました。

趣味プロダクトを続ける理由はいくつか思い当たりました。純粋にプログラムを書いて動くのが楽しい、モノづくりが楽しい、自分が作ったもので誰かの役に立てるのが嬉しい、モノづくりを通していろんな技術に触れられるのが楽しい、チームに貢献できて嬉しい、など。

そう思い始めたきっかけは最初に作った「かんばんりすと」という趣味プロダクトを通して得られた経験が大きかったのかと思います。自分のために作ったものが予想外に他の人の役にもたったり、仕事の中で使うことでやり甲斐を感じたり、そして気が付くといろんな技術やノウハウが身についていたり。

Githubやherokuなどの基盤インフラもそれを後押ししてくれました。Githubでコードを公開しながらコミットを重ね、並行して heroku でデモサイトを公開することで、興味を持ってくれた人がすぐに動くものを触れることができてもし気に入ったら clone して自分用に使える。そんなことを簡単にさせてくれるこれらのツールやサービスのおかげで、様々な人からフィードバックを貰いましたし、そこから来るモチベーションの向上も大きかったと思います。他言語化なんて全くしていないアプリなのに、外国の方からも問い合わせや嬉しい言葉を貰えました。

自分が思うプログラマというのは、仕事とか趣味とか関係なくプログラミングを純粋に楽しいと思える人なのかなと思います。なぜかはわかりませんが自分は運良くそう思えたので、仕事として「食べるためにコードを書く」だけじゃなくて何の制約も無い場でプログラミングによるモノづくり自体を楽しんだり、自分の身の回りのちょっとしたことを豊かにする為にコードをもっと書きたいと思いました。

自分が好きで作ったものは例え他人から見て大したこと無いようなものでも、それを作る過程の苦労やその中で得られた経験があるのでとても愛着が湧きます。完璧じゃない自分が作ったものなので良い所もあれば悪いところもあるので、なるべく短所を減らして少しはマシにしてあげようと日々手をかけて育ててくのも楽しいです。

どう育てていくかは全て自分が決められるのでその可能性は無限大です。細部にこだわって見た目を改善していくか、思い切って構成を変えて中身を綺麗にしていくか、機能をどんどん追加して便利にしていくか。昔ルナティックドーンというゲームがあって、基本的に固定のストーリーは無く自分でやりたいミッションをひたすらやっつけていくあの感じに似てるなぁと思います。自由度の高いゲームは最初は取っ付きにくいけどハマれば飽きにくい。そしてクリア(完成)はない。一旦できた!と思って一区切りしても、1ヶ月後に改めてみたら改善点がたくさん見えてくることもある。

趣味プロダクトを継続していると自分のできる事が増えて見える世界も日々変わってくるので、前に作ったものがその先ずっと100%満足した状態を保つことは起こりにくいのかと思います。そんな時はチャンスだと思います。早速気になった点を issue に上げて、当時では思いつかなかった改善を施してあげるようにしています。

また、別の見方をすれば趣味プロダクトはプログラミングの良い練習場になると思います。コードに関する本などで勉強を進めていくと、サンプルコードだけではなく実際のコード上で試したくなります。そんな時に自分が作っている趣味プロダクトがあると便利です。自分が作っているのでドメイン知識の理解は不要ですし、ただのサンプルコードではない現実の具体的な課題を解決するために書かれた程よいレガシーコードになっているはずなので、コードのことを集中して考えるための題材としてはなかなか適していると思うのです。やったことがないことをいきなり仕事で試すのはリスキーなので、可能な限り趣味プロダクト上で試して経験値を貯めておくのはプログラマスキルアップとしても有効かと思います。


最初、趣味プロダクトのことを発表しようと思った時、上で書いたような自分が良いと思うことを(まだまだありますが)全体的に説明しようかと思いましたが、話が抽象的になってわかりにくいかなと思い始めました。それに、あくまでもこれらは自分がある程度趣味プロダクトを継続してきて気づいた点なので、まだやっても居ない人には共感しにくいし、もしかしたらそれ以前のハードルで立ち止まっている人が多いのかなと思いました。

なので実際に自分が趣味プロダクトを始めた時のなんてことのない経験談を具体的な事例として紹介し、それを継続するための心がけ的なことを幾つか紹介することに話題を絞ることにしました。あと最後に自分が趣味プロダクトを続けてきたことによって起こったいくつかの想定外な嬉しい出来事も紹介することにしました。これは「趣味プロダクト」はどちらかというと個人で行う内向きな活動のようにも取れますが、実はその活動を媒介として外界のエンジニアと繋がっていくこともできるんだよ、ということが言いたかったからです。そしてこれらの活動は、自分のような名もない「ふつうのプログラマ」でも出来ることなので、プログラミングを楽しみたいという気持ちさえあれば今すぐにでも始められることだと思います。

そんな気持ちが少しでもこの発表で伝わればいいかな、と思ってスライドを作りました。
少しでもプロダクトを作ることの楽しさとかやり甲斐を感じてもらえたら嬉しいです。