Gaiax Engineers' Blog

Gaiaxのエンジニアブログです。 社内のエンジニア様子、イベントレポート等を発信していきます。

3ヶ月のインターンシップで出会った3つのこと

はじめに

広島からインターンに参加している技術開発部の中村です。以前、自己紹介の記事を書かせていただいたので、もしよかったらそちらもご覧ください。

gaiax.hatenablog.com

3ヶ月間のインターンでは、ソーシャルメディアマーケティング事業部と連携して、SNS運用支援アプリケーションの制作を行いました。 非エンジニアの方とあれこれ話をしながら少しずつプロダクトを形にしていっていきました。ちょっとした機能が実装できただけでも大変喜ばれて、とてもやりがいを感じました。

今回は、3ヶ月間のインターンを通して学んだ3つのことについてまとめたいと思います。

出会ったこと

スクラムとの出会い

インターンが始まった瞬間からスクラムを実践していた

ガイアックスは、アジャイル型開発手法のスクラムが定着した企業で、当たり前のようにスクラムを実践しています。 そんなガイアックスアジャイル型開発を推進するPMO(Project Management Office)チームの長南さんに、メンターとしてついていただき、開発はもちろん日々の生活についてもスクラムの手法を取り入れながら、ビシバシ見ていただきました。

f:id:chanyou0311:20170718194627j:plain

さらにはPMOの木村さんのアジャイル研修とレゴスクラムを受けて、スクラムの効果を学びました。

自分はいままでスクラムマスター的ポジションを担っていた?

アジャイル研修を受けて知ったのが、開発チームの他にスクラムマスターとプロダクトオーナーという役割が存在することでした。

f:id:chanyou0311:20170718194637j:plain

その話を聞いて、自分が今まで学内のプロジェクトを進めるときに、無意識にスクラムマスター的な役割を担っていたのでは、と気づきました。プロジェクトを円滑に進めるために、サーバントリーダー的ポジションであれこれ話を聞いて回ったり、チームのモチベーション維持に努めたりしていたのでした。

しかしインターンを通して、自分はレビューがしっかりできていなかったと気づき、振り返りの時間をしっかり確保して、当たり前の文化として根付かせる重要性を理解しました。この経験はどんなことにも通ずることだと思うので、特に今後の研究で活かしていこうと思います!

アジャイルをしっかり学ばなければ

アジャイル研修でも話があったのですが、スクラムの効果を最大化するにはアジャイルをちゃんと理解していないといけないということも知りました。 長南さんに相談して、たくさんの書籍を教えていただいたので、これからひとつずつ勉強していこうと思います。

技術的負債との出会い

テストの大切さ

今までは「動けばいい」的なスタンスで開発していて、テストもおろそかにしてしまっていました。

どんどん複雑に膨らんでいくコード

最初に命名規則をしっかり決めておけばよかったのですが、決めきらずに行き当たりばったりなコードを書いていってしまいました。結果、見返すとめまいがするようなコードができあがったのでした。

なんとかするためにテストコードを書く時間を設定した

長南さんに相談したところ、スクラムではリファクタリングやテストコードを書くためのスプリントを設けるのは、今後同じことを繰り返すことになるだけで本質的な解決になるわけではないから良くない、とのことでした。

そのため日々の作業の中の一部をテストコードを書いていく時間として確保して、少しずつ改修していきました。

その結果、だんだんとコードの見通しがよくなり、コードを書くこと自体ももっと楽しくなっていきました。

モブプログラミングとの出会い

楽天のクリムゾンハウスに見学

PMOの木村さんから話があり、モブプログラミングの体験会に参加しました。

詳細は以下の記事に書いてあります。 gaiax.hatenablog.com

「モブプログラミング」という新しい開発手法

特徴として、「開発スピードは多少落ちるが、振り返りのコストが圧倒的に低い」ことと、「技術継承が可能」なことが挙げられます。学生目線でモブプログラミングを捉えると、「技術継承が可能」なことは、学生間での知識の共有に最適だなと思いました。

自身もモブプロ始めてみた

これは自分もやってみたい、ということで、友人と進めているシステム開発プロジェクトをモブプロで行うことにしてみました。

ただ、開発チームメンバーは東京、広島、福岡と全国に散らばっており、なかなか会って作業することができません。「だったらリモートですればいいじゃん!」という発想で、Hangoutの画面共有を用いて、リモートでモブプログラミングを行うことにしました。

通常のモブプロ同様、ひとりが画面共有をして、他のメンバーがその画面を見ながらナビゲーターとしてアドバイスをする形になります。狙い通り、技術継承しながらわいわい楽しく開発できて、いい感じでした。

ただ、回線状況によってはラグが発生して、そもそも画面見えないといった状態にもなりがちでした。その問題さえ解消されれば、オンラインゲームで誰かがログインしたらたまたま他の誰かがログインしていて一緒に遊ぶように、常にメンバーの誰かが開発を行っていて、そこに割り込むように人が入れ替わって共同で開発する形が実現できそうで、とっても面白そうだと考えています。

あらためて自分を見つめ直すと

3ヶ月という長期間に及ぶインターンを振り返ってみると、自分は技術も好きですが「もっといいプロダクトを効率よく作るには」という点にも関心があることがわかりました。そして、具体的に「どんな体制でどんなことに気をつけて開発するべきか」ということも学ぶことができました。

今回のインターンでの経験を活かして、自身の研究や開発にもスクラムを導入して、より効率よくプロジェクトを進めていきたいと思います。

3ヶ月間ありがとうございました!