趣味プロダクト開発で
楽しいコードライフワーク
を送る
2014-2-8 札幌市中央区Ruby会議

小玉 直樹
@volpe_hd28v
自己紹介
2003年∼2012年
•

組み込み系プログラマ

2012年∼現在
•
twitter: @volpe_hd28v
GitHub: volpe28v

夜な夜な

トラスティア株式会社所属

•

Windows系システム開発

• 趣味プロダクト開発
かんばんりすと
かんばん風タスク管理ツール
コタれん
押尾コータローの楽曲向け練習帳
DevHub
プログラマ向けチャット&共有メモ
よろしく
お願いします
今日お話したいこと
お仕事以外でプログラム
を書いていますか?
プログラミング = 楽しい
•

仕事だけにしておくのはもったいない

•

好きなソフトウェアを作りたい

•

コードをもっと上手く書けるようになりたい
趣味プロダクト作り
• 自分が欲しいものを
• 身の回りの課題を少し解決しつつ
• 動くものを作りながら学ぶ場
簡単にできる?
ハードル
✔ 何を作ったらいいかわからない
✔ 作れる気がしない
✔ モチベーションが続かない
私が実際に行ってきた
趣味プロダクト開発の
事例と、それを楽しむた
めのヒントをご紹介
事例
仕事中、
気軽に使えるタスク管理ツー
ルが欲しくなった

なんてことのない思いつき
イメージは
タスクかんばんボード
http://www.test.infoq.com/jp/articles/agile-kanban-boards
TRICHORDも良いけど
もっと
•

ぱっと見える

•

サクッと使える

•

気持ちよく
悩み
•

なにで作ろう・・・

•

ドラッグ&ドロップとか難しそう・・・

java/Swing

MFC
Tcl/Tk

GTK+/gtkmm
jQuery sortable
ヌルっと動く!
Ajax
非同期通信
ページ遷移なし!
Webで行けそうな気がする

思い込みが大事
http://farm6.staticflickr.com/5096/5541884221_1df507a5da_b.jpg
考えた構成
jQuery sortable
+
Ajax
ruby
+
cgi
ActiveRecord
+
MySQL

勢いがあれば平気

×やったことない
○やったことある
×やったことない
×やったことない
ひたすらコーディング
昼休み
定時後
帰宅後
昼飯なんていらない
✔

jQuery sortable
+
Ajax

✔

ruby
+
cgi

✔

ActiveRecord
+
MySQL

ひとまず自分が使える
レベルまでできた!
モチベーション↑
一人社内で使っていたら、
「使ってみたい」との声が

改良して社内で公開
意外な展開
もしかして、
開発でも使えるかも?
当時のチームに
無理やり導入してみた!
調子に乗った
簡単に広められる
Webアプリって凄い
ブラウザは偉大
http://farm3.staticflickr.com/2530/3965829122_e557d9e4e8_b.jpg
流行りのクラウドで
動かしたくなった

ミーハーなので
GAEにチャレンジ
jQuery sortable

jQuery sortable

+
Ajax

+
Ajax

ruby
+
cgi
ActiveRecord
+
MySQL

Java
+
GoogleAppEngine
(Slim3)
+
BigTable

おっと、Java!?

✔
○やったことある

×やったことない
なんとか移植完了

JSP苦労した
やっぱりRubyで書きたい!
ver 3.0

流行りのRailsで
動かしたくなった

憧れのRails
Railsにチャレンジ
jQuery sortable
+
Ajax

ruby
+
cgi

ActiveRecord
+

jQuery sortable
+
Ajax

Java
+
GAE
+
BigTable

jQuery sortable
+
Ajax

✔

Ruby on Rails
+
SQLite

MySQL

第3形態

×
お世話になった本

Hinagikuで学んだ
世の中では
!

が熱いらしい
http://farm4.staticflickr.com/3592/3694736727_e779c4a1e0_o.jpg
はじめての
オープンソース開発入門

issue便利
はじめての
Webサービス公開
「かんばんりすと」
リリース
約1年の歳月

モバイルサイトも作りました
デモ
一つの趣味プロダクトを
作る過程で様々な技術に
触れることができた
jQuery

Ajax

jQuery mobile
TwitterBootStrap

rails
Hightcharts
dRuby
SQLite

jpmobile

MySQL

GAE

javascript
Java

Slim3
cgi

heroku

Ruby

git
GitHub
気が付くと
できる事が増えていた!
after
dRuby

before

javascript

Hightcharts
rails

MySQL
Ruby
Java

jQuery
jpmobile

GAE
Slim3

Ajax
jQuery mobile
TwitterBootStrap

ruby
java
git
heroku

cgi
GitHub
SQLite
車輪の再発明
かもしれない
Trelloとか
その過程で得た
生の経験 は紛れ
も無く自分のもの
プログラマとしての
引き出しを増やす
http://farm5.staticflickr.com/4032/4706749862_14d0a29c96_b.jpg
完成 したら終わり?

http://farm2.staticflickr.com/1053/591809922_e5eebd751b_o.jpg
完成 はしない
•

もっと使いやすくならないか

•

もっとコードを綺麗に書けないか

•

もっと速くならないか

むしろここから
趣味プロダクトを
継続する
複数のプロダクトを継続開発
かんばんりすと
jQuery

Ajax

cgi

rails

GAE

Java

jpmobile

コタれん
rails

FaceBook API

YouTube API

MioATND
rails

TwitterBootStrap

とくみちゃん
ATND API

rails

Backbone.js

DevHub
node.js

Socket.io

mongodb

Jenkins API

かんばんりすと for GitHub issues
rails

GitHub API
継続するための
モチベーションの維持

緑を増やしたい!
モチベーションを
下げる要因と
上手く付き合う
ライフワークのようになればいいな
今日はとても疲れて
るんだ…
1ポモドーロ

25min.
•

1コミットだけ
•

軽めのissueを選ぶ

•

今日を生きた小さな証をコードに残す
http://farm4.staticflickr.com/3218/2700323949_591c921968_b.jpg
仕様・UIに迷ってる
割り切る

•

ぶっちゃけ自分が使えればいい

•

使いながら後で考えればいい
孤独だ
http://nothub.org
追加したい機能がない
コードに向き合うチャンス!
•

テストを書いてみる

•

リファクタリングしてみる

•

別のフレームワークを試してみる

クリーンコード レガシーコード改善ガイド
http://farm3.staticflickr.com/2745/4180434461_20ded0561b_b.jpg
技術的にハマった
Geek達に会いに行く
•

コミュニティのイベントに参加

•

Ruby勉強会、JavaScript勉強会、etc
飽きてきた
同時に複数作る
かんばんりすと
jQuery

•

Ajax

cgi

rails

GAE

java

jpmobile

コタれん

一つにこだわらない API
rails
FaceBook API
YouTube

TwitterBootStrap

MioATND

•

節操無くいろいろ作る
rails
ATND API
Jenkins API

DevHub

•

node.js
Socket.io
新たな発見がある

mongodb

Diff LIB

かんばんりすと for GitHub issues

飽きる暇なし!

rails

GitHub API
刺激が足りない
チームに投入する

•

リアルタイムフィードバック

•

チームのやり方にツールを合わせる

•

チームに貢献する
家族でもいい
趣味プロダクト

チームに
貢献

趣味も仕事も楽しもう!

お仕事
想定していない
出来事
憧れの平鍋さん!
しばらく気づきませんでした
勉強会の題材に使ってもらえた

テスト対象
立派な機能仕様書も
バグフィックスの pull req も頂きました
2012 Ruby Kaja

Tシャツいただきました
コーチとして参加
札幌のコード好きな
Geek達と出会えた
米風亭でコーディング
まとめ
✔ 作りたい気持ちを大切に
✔ 実現できそうな技術と出会う
✔ モチベーションと上手く付き合う
✔ 作りながら引き出しを増やす
✔ チームに貢献する
難しいことは一つもない
Geekじゃなくても出来る!
ご清聴
ありがとうございました

趣味プロダクトで楽しいコードライフワークを送る