Edited at
ラクスDay 25

1年間草を生やし続けた結果

More than 1 year has passed since last update.

厳密には年明けの達成

image


達成しました!(2017/01/07追記)

image



やってみてどうだった?(まとめ)


  • 1年頑張った達成感と解放感。やればできる(た)


    • アイデア(取り組みたいモノ)があったからできた


      • モノはまだできていない :kissing_smiling_eyes:



    • ノーアイデアではできない



  • 半年過ぎるくらいまでは楽観的に取り組んでいた


    • ゴールが見えてくると逆にやめれない感

    • 続けることが目的に



  • 一人暮らし期間がなかったら厳しかった(後述)

  • 他の人におすすめできるか?


    • 1回やってみたらいいんじゃない? 育メンパパは難しいかも(後述)





自分の状況


  • 30歳。新卒でラクスに入社

  • 仕事ではここ5年くらいJavaを書いている

  • PHPが好き


  • 昨年の今日(2015/12/25)、長男が誕生:baby_bottle:


    • 今日で1歳、感慨深い。「パパ」はまだ言えない

    • エンジニア生活と育児との両立





草を育てる

勝手には生えない


  • What(何を)

  • Why(なぜ、モチベーション)

  • How(どうやって)



What(何を)

プライベートサービス開発


  • コンセプト


    • 開発という行動のログを取るサービス



  • アーキテクチャ


    • Frontend はブラウザとCLIツール の2つ

    • Backend はブラウザ用のWebアプリケーションと、共通のWeb API




image



Why(なぜ、モチベーション)


  • 設計の実験場


    • DDD本、IDDD本で読んだことを実践したい

    • OSSへのコントリビュートを通して興味をもった、アーキテクチャやプログラミング原則を実践したい


      • OOP、REST、ROA、MSA





  • 実装の実験場


    • モダンな PHP を書きたい

    • Frontend の進化に追いつきたい

    • Golang 楽しそう



→仕事ではなかなか機会がないのでプライベートで実践する



How(どうやって)


  • 毎日の作業


    • 実装に30分〜1時間くらい

    • 設計は常に考えておいてPCを開いたら書くだけ

    • 家で、カフェで、会社で(昼休み、もくもく勉強会)、エアしゅっsy



  • 開発環境プロセス


    • 1人 GitHub フロー

    • 100% Code Coverage(PHP)

    • GitHub のプライベートリポジトリを Wercker でCI





やってみてどうだった?(詳細)


  • 良かったこと、得たこと

  • 苦労したこと

  • 工夫したこと



良かったこと、得たこと


  • 最小単位の成果(コミット)を意識するクセ付け

  • 設計・実装を実践する機会


    • 開発が進むにつれコードが洗練されていく(ドメインへの知識が深まっていく)ことの楽しさ

    • 設計を妥協せずに真摯にコードに向きあえる


      • プライベート開発なので工数とのトレードオフが不要





  • コードを書く時間の増加


    • 仕事でコードを書けなくても保たれる業務へのモチベーション


      • これ大事







苦労したこと

毎日コミットするのしんどい


  • 当初の目標は「意味のあるコミット」を続けること


    • リファクタリングやスタイル修正はノーカウント

    • サービス価値につながるコミットを



  • 時間がない状況が続くと、リファクタリング祭りでしのいだ


    • 続けることを優先

    • DDD的にはリファクタリングは設計を洗練させる大事な作業


      • やってよかった





  • 毎日切りの良いところでコミットしないといけないので、規模の大きな実装はやりにくい



苦労したこと

時間がない(育児との両立クソしんどい)


  • 生後6ヶ月くらいまでは時間あった


    • 生後3ヶ月までは奥さんは里帰り中で、自分は1人暮らし

    • 最初の3、4ヶ月くらいでコア機能の実装はできた



  • 生後6ヶ月過ぎたら一緒に遊んで一緒に寝るので時間ない


    • 休日が休日でない。平日のほうがまだ体力的にも精神的にも楽

    • コンテキストスイッチ切り替えるの難しい



  • アニメ見る時間がない


    • 1クールちゃんと見るのは5本もない





苦労したこと

リリースするする詐欺


  • GWくらいにはリリースできると思っていた

  • 認証とかセキュリティ関連の実装が地味にめんどう

  • もともとOOPとかDDDの実践を目的としていた


    • 違和感を感じつつえいやで作ったところは結局あとからリファクタした



  • BackendとFrontendの整合性を取りながら開発するのめんどう


    • テストがめんどい





工夫したこと


  • MVP (Minimum Viable Product) を意識

  • 車輪の再発明はしない


    • 質の良いライブラリ(Symfony Componentsなど)をちゃんと使う



  • 時間があるときに作り貯める


    • 規模大きめの実装は時間があるときに一気に進めて、次の一週間はそれを小分けにしてコミット



  • リファクタリング祭りでしのぐ

  • 会社のもくもく勉強会で進捗報告


    • 公言することで達成せざるを得ない状況へ





来年どうする?



来年どうする?


  • 毎日コード書けることはわかった

  • 毎日コードは書く

  • 毎日コミットすることは制約にしない


    • 土日はきつい


      • 休日は家族との時間を大切にする

      • メリハリをつけてコードを書くことをより楽しく





  • リリースして運用する


    • 今年度中にリリースする

    • 3月末の全社交流会翌日のビアバッシュでお披露目したい





Enjoy coding, enjoy Everyday !!



P.S.



  • ラクス Advent Calendar 2016 完走おめでとうございます!

  • 貴重な時間を割いて投稿してくださった皆さん、ありがとうございます

  • 会社として初のアドカレ参加。発起人の @oohira さん、ありがとうございます

  • 来年も楽しみにしています!!