インターン生の磯部です。

5月14 (土)・15 (日)、フランジアジャパンの渋谷オフィスにてハッカソンを開催しました。島根オフィスで働くエンジニアも渋谷まで駆けつけ、9名のエンジニアが参加。

ぼくがインターンとして働かせていただいているのはベトナムのハノイオフィスですが、フランジアは数カ所の拠点を持っており、日本の渋谷・島根にもオフィスを構えています。このブログではハノイのことを中心に取り上げているので、今回は日本にあるオフィスでのことをお伝えできればと思います!

 

ハッカソンについて

「ハッカソン」と聞くと、あるテーマに沿って数チームで良いアイデア競い合うコンペティションというイメージがあったのですが、今回の目的はチームビルディングにあります。

FJハッカソン_ブレスト風景①

フランジアジャパンには多様なバックグラウンドを持ったエンジニアが増えてきて、技術力の向上や開発体験の共有によって、より高い次元の開発をできるようにするチームビルディングです。

今回のハッカソンのテーマは「社内の参考書籍管理システムを2日間で作る」というもの。

その背景は、渋谷オフィスで仕事の参考になる技術書を買うようになり蔵書が増えてきたことにあります。「あれ、あの本どこにあるんだっけ?」「こんな本欲しいけど会社にあった?」こんなやり取りが頻発したため、その煩わしさ失くすためのシステムを作ろう、ということで今回のテーマとなったわけです。

FJハッカソン_ブレスト風景②

初日の10時、参加メンバーで集まり、まずはブレインストーミングをはじめました。

「社内の参考書籍管理システム」に必要な機能を出し合って、開発の方向性を固めていきます。

 

システムのシナリオとしてあがったのは

・決済者(本を買うか買わないかの判断をする人)に欲しい本を伝えて、購入してもらうというシナリオ

・ペルソナは自分たち自身(エンジニア)なので、ログイン機能にはGitHubのアカウントを利用するというシナリオ

・拠点、メンバー間での本の貸し借り、予約、本の状況の確認ができることなど、本の取り扱いに関する一般的に考えつくシナリオ。それに加え、色々な拠点を持つフランジアに特化して拠点間の状況がわかるシナリオ

 

その他、購入リクエストに対してメンバーが購入者にアピールできるような機能や、社内本ランキングや読み終わった本へのフィードバック機能など、色々なシナリオが想定されました。

ブレインストーミング後、アイデアを収縮させて4つのサイトコンセプト定めました。

①購入リクエストの共有・リクエストに対するフィードバック機能

②本を買う・よみかり 手続きの基本的な煩わしさ削減

③本のレビュー機能強化 プロの意見を本のレビューを通して

④拠点間の本棚共有

ブレスト

その中で必要最低限な機能を洗い出し優先度を決めていきます。そして、優先度の高い機能を開発者に割り振って開発に取り掛かりました。

今回はペアになって開発をおこなっていきました。ペアでおこなう理由は、片方のエンジニアがわからない部分、疑問に思ったところを教えながら進められるからです。

 

付けられた名前は「book2」と書いて「ブックブック」と読みます。本を予約するという意味を込められて付けられました。

今回は、フランジアの開発スタイルでもある「アジャイル型開発」という開発手法を使って取り組みました。

アジャイル型開発とは…仕様や設計の変更が当然あるという前提に立ち、初めから厳密な仕様は決めず、おおよその仕様だけで細かいイテレーション(反復)開発を開始し、小単位での「実装→テスト実行」を繰り返し、徐々に開発を進めていく手法です。

参照|アジャイル型開発の重要性とは?従来のウォーターフォール型開発における課題を解決し、手戻り工数を削減!

 

スクリーンショット 2016-05-25 17.53.31

それぞれ割り振られたパートの開発をおこない、節目節目でCTOである本間さんにコードレビューをしてもらいながら進めていきました。この時は本の貸し借り機能の一部についてレビューしていました。

Make Products · Pull Request #19 · framgia:book2 2016-05-25 17-47-05

Web開発において重要とされる概念に対してコメントがはいります。

クライアント企業に出向しているベトナム人のカインさんも、今回のハッカソンに参加。彼とのやり取りは英語でした!
スクリーンショット 2016-05-25 17.53.49

そのカインさんは、Google Docsを共有してほしいことを、島根のメンバーである角(すみ)さんに伝えていました。英語が得意ではない角さんは、共有設定をおこなったあとに一言、“Public now!!”

少し不思議な英語の組み合わせがじわじわと来ますが、開発に集中していたメンバーからの反応はあまりありませんでした….。

FJハッカソン_開発風景①

2日間のみという短い日程なので、1日目は遅くまで開発をして終了。

次の日も、午前中から開発を続けます。

追加cwスクショ

システムがある程度形になってきた所で本番のサーバーで動くように準備も始まりました。

Task:63046 ProductのCRUD作成 : Create Product CRUD by eiji346 · Pull Request #4 · framgia:book2 2016-05-25 17-44-56

CTOの本間さん以外のメンバーもレビューを行い、より良いコードを書いていく様子も見られました。

FJハッカソン_ピザ食べる②

お昼にピザをつまみながら、一息いれました。こんなところでもハッカソンの雰囲気が出ていて楽しそうです!

追加cwスクショ 2.jpg

夕方になる頃には本番サーバーで動くようになりました。

 

2日目の19時には予定していた開発のほとんどが終わりました。

今回の開発では機能のアイデア出しやサイトの方向性を考えるところから始まり、book2の基本的な機能である本を購入するまでのフロー、および本の貸し借りできるようにしました。

全体的な意見として多かったのは、ほとんどのメンバーはアジャイル的な開発が初めてで戸惑いを感じていたけれど、実際にシステムが形になっていくことに考えさせられることがあったようです。

ハッカソンを終えてみて、メンバーが得られたものはどのようなものだったのでしょうか?

以下、参加したメンバー達の飲み屋での振り返りです。ヒートアップしていく様も含め見ていきましょう。

 

◯ 市川さんと本間さんのやり取り

市川さん:

  • あやふやな状態で進めていくアジャイル開発には不慣れでしたが、進めていくことができたのは良い経験です。

本間さん:

  • 例えあやふやな状態だとしても前に進められることから進む、ということが善です。進めばまた見えてくるものが変わるので。それを実際に体感できたのであれば良かった。

 

◯角さんと本間さんのやり取り

角さん:

  • アジャイルな開発よりウォーターフォール型の開発が多かったので、いざ実装に入ろうとした時に何から手を付けるか迷って、上手く始められませんでした。開発の前に決めておくべきことを上手く決められていればもっと進めることができたと思います。

本間さん:

  • 何をどこまで先に決めておくとスムーズに開発がはじめられるか、というのは対象のサービスによっても変わるから、中々決めるのが難しいよね。経験があるとアタリがつけられるようにはなるけど。でも、そこに時間をかければいいとは限らず、どこならば短時間で開発かできるところまでイメージ沸くか、を考えると良いと思います。

 

◯吉田さんと楢崎さんと本間さんのやり取り

吉田さん:

  • 普段の仕事では、コーディングはせずに上流工程に携わることがほとんどです。Railsの作法は今まで経験したものと違っていたので、今日を通してWeb開発を考えるきっかけとなりました。

楢崎さん:

  • 前職からコーディング不足を感じていたところだったので今回の開発は楽しかったです。また自分とは違う開発経験を持っている人たちと一緒に開発できたことは、ためになりました。

本間さん:

  • 私も最近Railsを書く機会が少なくなっていると感じていて、このままだと誰かに負ける日が来ると思うので今回のbook2を引き続き開発していきたいです。楢崎さんが感じたことに近いのですが、私も最初は独学でRailsを書いていた後、自分よりRailsを深く理解している人たちと一緒に開発した時に遥かにレベルアップできました。その経験に近い経験をして欲しくて、今回厳しくレビューを行っていました。それを糧にレベルアップして欲しいです。

 

◯カインさんと本間さんのやり取り

カインさん:

  • 普段はクライアント先へ出向していて、そこではRails3(註:旧バージョン)を使っているので、Rails4での開発に携われて新鮮でした。また最近コーディングする機会が少なかったので久々に楽しかったです。

本間さん:

  • Railsはバージョン3から4になるときに大きく変わったところがあるから、バージョン4で開発したのは良い経験になったと思います。そろそろバージョン5が出るので、それを今のうちから経験しておいて、クライアントさんにバージョン4を飛び越えて5を使う提案をしてみても面白いと思います。そんなことができるように、これからも新しい物に触れる機会を作っていけたらと思います。

 

◯林田さんと本間さんのやり取り

林田さん:

  • ペアに分かれてバラバラに開発をしていたけれど、さいごにはひとつのプロダクトとして機能していくのは自分にとってはとても新鮮でした。ただ、後半は残っているタスクを整理する人がいなくて、開発速度が落ちてしまいました。一度、時間を取って状況整理してもよかったのではないかと思いました。

本間さん:

  • 後で見たら正しくないかもしれないけれど確実に前に進む、少しづつでも進んでいけばプロダクトの完成に近づいていくということがアジャイルの一つの考え方です。僕もコードを追加していくことで一歩づつ前に進んで、全体の開発が進んでいくということを初めて体験した時は新鮮でした。繰り返しになってしまうと思いますが、前に進むことが善だということがわかってもらえて良かったです。

◯三城さんと本間さんのやり取り

三城さん:

  • Railsでの開発経験はあったものの初期の段階から土台となる部分を書いていく経験はほとんど無かったので、自分の足りないところがわかって良かったです。開発スピードの秘訣は「適切なリソースに対してCRUDを用意してやること」というアドバイスを、開発後に実感できました。

本間さん:

  • webサービスは情報システムで、つまりは情報を溜められて、その情報をユーザーに使い易い形で出し入れすることで価値を提供しています。私達エンジニアが出来ることは、情報を分かりやすく操作するためのインターフェースを用意して、情報の操作ができるようにすることに集約されます。扱うべき情報をリソースとして定義して、そのリソースを扱うインターフェースを用意していく。その基本から外れないように開発していけば、各自バラバラに進めても、システムが作りあげられていくということを覚えておいて欲しいです。 

 

さいごに

今回開発をした「book2」は、公開できるようにシステムを整えて、近日中に渋谷オフィスで利用できるように準備中。

今後は、このシステムを島根オフィスにも導入し、拠点間での本のやりとりを円滑にしていくほか、将来的には渋谷にある仲の良い他社にも導入していただいて、仕事に役立ちそうな本を会社間でもシェアしていけたら、と考えています。

今回のハッカソンを通して、メンバーのスキルの向上とともに、チームワークの活性化にもつながったんじゃないかと思います。

多くの開発をベトナムで行っているフランジアですが、日本側でもこういった取り組みをどんどんおこなっていこうと考えています!

01_banner_200-200