ドリコムで3週間、インターンシップに参加した佐藤礼於です。
公立はこだて未来大学複雑系知能学科に在学しており、AIの基礎を学んでいます。プライベートではPHPやPythonを用いてWebサービスを作ってみたり、
地元の企業のアルバイトでWebサービスのフロントエンドからバックエンドまで担当しています。
しかしアルバイト先でさえもPR・MRなどを介したコードレビューを受けたことがなく、また本格的な企業でのエンジニアはどのように働いているのか、まるで知りませんでした。
そんな中、ドリコムの夏のインターンシップに参加し、エンジニアとしてあるべき素養の一部を知ることができましたので、記事に書かせて頂きます。
インターン第1ターム目
インターンは1週間の講義を受ける第1タームと、2週間の実務を行う第2タームに分かれており、第2タームに進むには第1タームでの選抜を通過しなければなりません。
第1タームでは1日目にインフラ、2日目にサーバ、3・4日目にUnityの講義があり、いずれも課題がありました。 1日目のインフラの講義では、AWSに事前に用意されたインスタンスを触ってクラウドの扱い方を学びました。
またミドルウェアが上手く動かないように設定がなされており、エラーログを見ながら上手く動作するように設定を直すという課題があり、大変ためになりました。
2日目のサーバの講義では、Gitの使い方から始まり、Railsのアプリケーションを1日目のインスタンスにデプロイするところまで学びました。私はここでコンフリクトの解消やrebaseの使い方など、Gitの苦手だった部分を克服できました。またRailsの基礎を学ぶことが出来ました。
3・4日目のUnityの講義では、Unityの基礎を学んだ後、インターン生10名が5人ずつのチームに分かれて「ユーザーに提供する価値」をベースに、スクラム形式でゲーム開発を行いました。Unityに触るのは初めてでしたが、チームメンバーとハッカソンのような雰囲気で開発を行うことができて楽しかったです。
また4日目後半のデータ分析の講義では、ドリコム社内でどのようにしてデータを取得し、またそれを改善に役立てているかを知ることができました。 そして4日目には2日間で作ったゲームの発表を行い、KPTに則って反省を行いました。
そして第2ターム目に進むメンバーが発表され、私はなんとか第2ターム目に進むことが出来ました。
インターン第2ターム目
社員のonkさんをメンターに、実務に臨みました。
最初の2日間は社員のさっちゃんさんのもと、日報をメール送信しやすくするgemを作成したりしました。
3日目以降からはonkさんのもとで社内サービスの移行を担当しました。ドリコムでは社内のドキュメント共有にDiitaという社員の方々が作ったサービスを利用されており、インターン生も毎日チェックしていました。このように第1ターム目からお世話になっていたサービスを、onkさんもコミッターとして開発されているPotmumに移行するという課題を担当しました。
この課題に対して、私が7日間で行ったことは以下の通りです。
1. ActiveRecordを使ったスクリプトを作成し、既存のDiitaのレコードを加工してPotmumに適用させる。
2. DiitaにあってPotmumに無い機能を見つけ、実装する。
3. デプロイして既存のDiitaからPotmumに切り替える。
onkさんは、何をするにもまず見積もりを出すようにと私におっしゃいました。 WBS法でタスクを洗い出し、それぞれ見積もりを付けましたが、想定よりも時間がかかるなど、なかなか見積もり通りには進みませんでした。
それでもなんとかサービスの移行を完了することが出来ました。 また今までGitHubやGitLabなどでのPR・MRでエンジニアからコードレビューを受けたことがなかったのですが、今回の実務を行う上で社内GitLabにMRを出し、社員の方々にレビューを頂きました。
自分の視点では分からない問題点などを指摘して頂き、新たな知見を得ることができました。 最終日には2週間の成果発表を行いました。
インターンを通して
第1タームでは講義を通して今まで触れることのなかった技術に触れ、学ぶことができました。 また第2タームの2週間、onkさんとマンツーマンで現場のフローに従って開発を行う中で、onkさんの開発に対する真摯な姿勢と知識の一部を見て学ぶことができました。 その中でも自分が特に意識しなければならないと感じたことが3つあります。
見積もりをしっかり出すこと
自分がこれからやろうとしていることはどれくらいの時間がかかるものなのか、しっかり把握しなければなりません。これは当たり前のことですが、実際に大きな課題を前にしてタスクを考えていくと、私は上手く見積もりを出すことができませんでした。見積もりを上手く出すには経験も必要だ、とonkさんはおっしゃっていたので、もっと経験を積んできちんと見積もりを出せるようになりたいです。
問題をもっと深掘りすること
Railsのことがまだ良く理解出来ていなくても、とにかく深掘りすること。StackTraceを追いかけて原因を見つけること。何なら読み込んでいるgemの中身まで追いかけて、エラーの原因を特定すること。私は問題を深く追いかけずにいて問題の根源を見つけられずにいたことがあったので、これは改めなければならないと感じています。
ドキュメントをきちんと作成すること
自分がどのような手順を踏んで、どこで失敗したのか、その解決方法は何かなど、きちんとドキュメントに残すこと。自分が後で同じことをしようとした時に役立つのは勿論、他の人がプロジェクトに参加した時の助けにもなります。またこのドキュメントにはGitのコミットメッセージも含まれていて、このコミットでどのような変更を行ったのかというのをつぶさに残さなければ、社員の方々がMRをレビューされる際に分かりにくいものになってしまいます。ですので、あらゆるドキュメントをしっかりと残そうと思いました。
まとめ
講義では今まで手を付けられなかった技術を学ぶことができ、また実務ではサービスの移行を体験することができました。また、まだまだ自分の未熟な部分も改めて自覚することができました。 今後はもっと精進して、エンジニアとしての素養を身に着けたいと思います。