藍色の腕時計

たっぷり文学系

エイチームのインターンシップを終えて

Webエンジニア向けインターン

とっても遅筆になってしまいましたが、8/3(金)~8/5(日)の3日間で株式会社エイチームのWebエンジニア向けサマーインターンシップに参加してきました。

僕としてはこういったインターンシップに参加することは初の経験で、技術うんぬんがどうだったな、というよりは精神的に獲得できたものが大きかったなという印象で、家に帰ってきてからは良くも悪くも放心状態に陥ってしまうぐらいでした。7チーム中1位という結果を残すことができたこともあり、貴重だったなと思うのですが。本当に思うことが多すぎました。チームメンバーには感謝しかありません。

内容

大雑把にまとめるとこういった内容でした。

場所:名古屋市中村区名駅三丁目28番12号大名古屋ビルヂング 32F
日程:2018年8/3(金)~8/5(日)
趣旨:Webエンジニアとして”ユーザが思う真の課題”を解決する(後述)
形式:コンテスト型3Daysインターン
必要だったスキル:Ruby on Rails、Vue.js、docker力、git力など

メンターの方から「毎年毎回、同じような内容で仕事してもらっているから詳しく書きすぎないでね」と言われているので、内容について詳細に書きすぎないようにします。

このインターンシップ、開発フェイズが前半と後半に分かれていて、大雑把に、前半はお題解決型、後半は自由開発型、という流れでした(本当に大雑把)。これだけだと多分伝わっていないので、あとは本文で説明していきます。

導入

そういえば!開発の前に色々したんだった、ということを思い出したのでそこから書いていきます。会場で参加者が全員集まると、まずはエイチームのスタッフがぞろぞろ出てきて(CTO含めて3人)、「自分たちは運営に回るから」と3日間の概要について説明をしてくださった後に、チームメンバーの発表があり、まずはチームのミーティングから始まりました。それからオフィスを見学し、では一通り見学しましたね、というところでちょっとした技術講義を挟んでから、いよいよ開発が始まりました。

今思えばこの時のチームミーティングが本当に大きかったと思います。「優勝狙っていこう」と言ってくれたメンバーがいて、おかげで全員が結託できたのかなと感じます。3人+メンター1人、というチーム構成でしたが、圧倒的にWebの経験値が低い僕を導いてくれたのは技術的なフォローだけではなく、ここで誓ったプライドに技術を追いつかせたいと思わせてくれた精神的なフォローでもありました。

(2019/01/05.追記)とにかく技術力が足りずに苦しみましたが、この時のメンバーとTwitterで今も仲良くしていて(と思いたい...)、「社交辞令じゃなくて飲みに行こう!」と言ってくれたりする仲間に恵まれました。本当に嬉しい限りです...!

3日間どんな場所にいたか

f:id:kwtkm:20190117123249j:plain

3日間を通しての開発環境(物理)はこういう雰囲気でした。(座るとこ写ってない…)この場所は社員食堂として使われているそうですが、インターンは金曜から日曜の間だったせいか社員さんでごった返す、みたいな状況に遭遇しませんでした。むしろ僕たちだけがずっとオフィス兼食堂として使わせてもらってたなあという感じでした。

前半戦(~2日目昼)

前半戦はチケット制で改善すべき点が開示になりまして、早速チーム間での殴り合いが始まるのですが、筆者は"チケット"という言葉について理解をしていなくて面食らってしまったため、ここに「チケットとはなんぞや」を記したいと思います。

チケット

実施すべき作業、修正すべきバグなどの一つ一つのタスクをRedmineのプロジェクトにチケットとして登録します。1件のタスクにつき1件のRedmineのチケットを作成し、タスクの内容・優先度・担当者・期日・進捗状況などを記録できます。

プロジェクトにチケットを追加し、担当者を割り当て、そして作業の進捗に応じてそのチケットを更新していく、というのがRedmineでタスクを管理する際の基本的な流れです。

引用したように、"Redmine"というソフトウェア上で用いられる考え方(他でも使われているのかも?)で、このインターンではお題のアプリケーションに報告されているバグについてチケットが提示されていたので、それをメンバーで手分けして解決していきました。

お題はいくつかあったのですが、僕は1日目の終わる頃に環境構築を間に合わせることしかできず(それ自体がチケットでした)、チームメンバーには迷惑をかけてしまったなと感じました。当日までに僕が勉強してきたのは「Railsチュートリアル」と「パーフェクトRubyOnRails」でしたが、こういった学習法で書いてある通りに開発することに慣れてしまうことも悪手だったと思います。チケット制、というのはボトムアップ的にひとつひとつ作り上げていく手法ではかみ合わず、虫食い的に要求される課題を既存のアプリケーションに組み込んでいく、という手法でアプローチしなければいけません。自分なりに考えてフレームワークを扱う力が必要だったなと痛感しました。あとGitについても破滅的にできなかったのでとにかく辛かったです...。

その晩は必死にGitの扱いに熟練することだったり、自分がどうやったらチームに貢献できるだろうか、ということを考えて過ごし、2日目が始まりました。が、相変わらず第1フェイズでのチケットを解決できず、惜しいところまで迫ったところでやっぱりできずに引き返す、ということを繰り返して区切りの時間が来てしまいました。さて、この時点での順位が1位でしたが、貢献度が低いだけにとても悔しい思いをしたのを覚えています。

後半戦(~3日目夕)

後半戦は今まで触れてきた日報ツールに関して「不満な点を自由に解決しましょう」という流れで、全チームがその場の(自チーム以外でも)メンターさんにヒアリングする時間を設けてもらいました。

ヒアリングが終わり次第さっそく開発に移っていきましょうか、という雰囲気でしたが、ここでヒアリングを大事にしようという方針のもと、僕たちのチームリーダーがその場のメンターさん全員にヒアリングをしてくれました(すごい)。最初に優勝したって書いたので書くのですが、結論としてこのヒアリングが効いて開発内容が評価されたし、チームメンバーも全員が納得して開発を行うことができました。

2日目は残す時間が午後だけ、というのもあり、綿密に立てた計画とそれを元にした設計が主な内容でした。ここも設計に関してチームリーダがめちゃくちゃ働いていたのでもう本当にすごいなと感じていました。開発の方針が見えてきた段階で、開発を二手に分けてやろうという流れになり、リーダーが一人でゴリゴリに仕事をする傍ら、僕ともう一人のメンバーで一緒になって設計して、開発することになりました。さらに僕は一番弱かったので、メンターさんにほぼ付きっきりになっていただきました。かたじけない...。

それで、一応ホテルに戻って日をまたぐのですが、この夜はほとんど寝ないで開発をしていました。技術不足で本当に辛かったですが、ホテルの部屋にみんなで集まって開発をするのは本当に楽しかったです。なんというか色々と浄化されました(当時友達と疎遠になっていたりして辛かったので...)。

3日目、実はプレゼンまで見据えて開発時間を考える必要があってドタバタしてしまいましたが、僕としては開発で時間が押していたから締め切り駆動でプレゼン資料を効率よく制作できて良かったと思っています。あの時、メンバー全員が頭をギュルンギュルン回転させていて一緒にいるのが気持ちよかったです。二手に分かれて制作していた開発も区切りのいいところまで出来上がったので、プレゼン内容がすごく充実していたと思います。先述した通り、チームが納得していたからこそ一貫性があって説得力のある内容だったと思います。

結果、前半戦の時点で1位だったのに加えて、プレゼンを終えた段階で後半戦の評価が2位、ということで総合得点で1位を獲得することができました!

懇親会と総評

わーい良かった良かった、ということでそのまま懇親会をする流れになり、チームメンバー以外の学生と交流して仲良くなったり有志によるLT大会を聴いたりしました(LTって当時初めて聴いた)。

美味しい食事を食べながらお酒を飲んでほんほんとしていたのですが、ここでもリーダーがLT大会で得票数1位を獲得してAmazonギフト券をもらっていたのでほんと(略)。

総評です。僕はとにかくWebの知識が足りずに苦しみましたが、いろいろな事に恵まれて貴重な体験ができました。強めな書き方になってしまうのですが、普段の学校生活で知っていた環境って思っていた以上に閉じた環境だというのを思い知って、世の中こんなにレベルが高いんだ、とか純粋にエンジニアリングって楽しいなと思うことができました。あと、3日間を通して毎日メンターさんと一対一で「将来どうなっていきたい?」といった話をしていて、「この環境が素晴らしかったのでこういう場所がいいです!」(とまでは言いませんでしたが)というぐらいWeb系の業界って良いなと思うきっかけになりました。

これから考えないといけないことが山積みですが、良い機会なので悩んでいこうと思います。