はじめに
こんにちは。フューチャーの夏季インターンシップEngineer Camp 2021に参加した森下です。
このインターンシップを通じて得た経験や学んだことをお話ししていきます。
インターンシップの内容
フューチャーでは毎年夏に「Engineer Camp」「Project Camp」という2つのインターンシップが開催されています。私が参加したEngineer Campでは実際のプロジェクトの中で業務に携わり、フューチャーの技術やコンサルタントのあり方を学ぶことができます。
詳しい内容は「採用イベント情報」のnoteにも掲載されてますのでご覧ください。
今年はフルリモートでの開催となり、11人のメンバーで4週間業務を体験しました。
私は参加したコースは「業界最大級のスマートファクトリー機能開発」です。
②業界最大級のスマートファクトリー機能開発
スマートファクトリーを推進せよ。従来のアナログ工場制御系のイメージを打ち壊し、時代を先行く工場のさらなる進化を目指す
<概要>
我々の暮らしを支える製造現場には未だ多く課題があり、スマートファクトリー化することで操業を助けることは重要です。今回は、実際に構築し動いている工場システムの機能拡張および横展開として、以下のいずれか、または複数にチャレンジする予定です。
1)Go言語でのAPI設計・開発・テスト
2)Terraformを用いたAWS構築・エンハンス
3)TypeScriptを利用したフロントエンド開発
技術経験と参加目的
私は昨年Engineer Campに参加した先輩の勧めでこのインターンシップを知りました。
フューチャーはコンサルティングからシステム開発までを一気通貫して行う珍しい業務体系をした企業ですので、IT業界を中心に就職活動をしている私にとって業務をイメージできる良い経験になると考え参加を決意しました。
参加前の技術経験は以下の通りです。
- 言語
- C言語:高専・大学での講義や研究に使用
- Python:大学の研究に使用
- Go言語:インターンに向けて一通りを勉強
- GiuHub:触れたことがある程度
- 技術系アルバイトやインターンの経験なし
- チーム開発経験なし
- 資格:応用情報技術者試験
このインターンに参加した大きな目的は実際の業務のイメージを持つことです。
私はこれまで技術系のアルバイトやチーム開発の経験が無かったため、就職活動を進める前にGitHubを使った作業の進め方や会議を中心としたコミュニケーションの取り方など体験したいと考えました。
インターンで取り組んだこと
私が配属されたプロジェクトではアナログ制御された工場のDXを手掛けており、私は制御系の監視およびその通知を行うバックエンド寄りのシステム開発をさせていただきました。開発に際しては以下を使用しました。
- Go言語
- AWS
- Lambda
- DynamoDB
- Docker
- GitHub
インターン期間の序盤は配布されたPCのセットアップやプロジェクトのキャッチアップを中心に行いました。セットアップ際のプロキシ設定では、その方法が既にフューチャーの技術ブログに記事が掲載されており、導入がスムーズに行われました。他にも開発の様々な場面で技術ブログが活用されており、技術発信に力を入れているフューチャーの社風を感じられました。
キャッチアップでは稼働中のシステムのコードをたくさん読みましたが、どれも命名規則やドキュメントなどがしっかりしており、とても読みやすかったのが印象的でした。今後チーム開発を行ううえでも整ったコードを書く力は重宝されるため、大学在学のうちから綺麗なコードが書けるよう努力したいと感じました。
その後はドキュメント処理のタスクを行い実際の作業に移りました。
作業の中ではLambdaとDynamoDBを使用しましたが、私はインターン参加前までAWSに全く触れてこなかったため、共有されたコードや記事を読み社員の方からサポートを受けながら作業を進めました。1か月のインターン生の私にも個別のAWSのアカウントを割り振ってくださり、操作を通じて理解を深めることができました。
学んだこと
今回のEngineer Campは「技術面」「コミュニケーション面」「企業面」で学びに溢れた4週間でした。
技術面
このインターンでは実際のプロジェクトに携わることで業務に使用される様々な技術に触れることができます。AWSのサービスは「いつか使ってみたい!」と思いつつもハードルが高く手を出せずにいましたが、インターンの中で目的をもって活用することで意欲的に取り組むことができました。AWSやDockerに関して全くの初心者だったため業務で稼働しているコードや記事などから扱い方を学ぶのは大変でしたが、フューチャーにはAWSのエキスパートがたくさんいるためSlackを通じて多くの方がサポートしてくださり理解を深めることができました。
業務の中でコードのレビューをしていただいたことが大きな学びに繋がりました。これまで研究活動の中でコードを書く際には「自分が見返したときに分かる」ような命名や関数の分け方をしており、他の人にコードを共有する際には変数や関数の意味を説明しながら共有していました。ですがチーム開発ではコードを見ただけで伝わる書き方や厳格な命名規則が求められることを教わりました。実際に稼働しているシステムを見ても明示的な関数名やテストを意識した関数粒度などがなされており、今後身に付けるべき力だと感じました。
コミュニケーション面
今回のインターンはフルリモートで開催されたためコミュニケーションの手段がSlackとビデオ通話に限られます。そのため作業の進捗や詰まっている所を自ら発信しなくては仕事をしているのかすら伝わりません。初めは何を報告すべきなのか分かりませんでしたが「Twitter感覚で呟いて」と言われ、些細なことでも小まめに状況をSlackで報告をすると、問題なく進められた部分であっても追加のアドバイスがいただけたり、いざ困ったときに素直に質問ができるようになりました。対面で作業ができないコロナ渦ならではの問題ですが、小まめな報告の必要性を学ぶきっかけになりました。
「的確に伝える力」を鍛える必要があると教わりました。リモートワークに限らず自分が「何がわからないのか」「何をしたらどうなって困っているのか」を言葉で的確に伝える能力は必要です。実際の業務を行っていると質問の体系も複雑になり、質問したい個所を絞り込めずに何度も社員の方に意図を「推測」させてしまいました。この伝える筋力を着けることも今後の課題です。
企業面
今年のEngineer Campはリモートでの開催でしたが、日々のSlack、ミーティング、懇親会で社員の方と触れ合う中で、フューチャーのアットホームな社風を強く感じました。またSlackで質問を投げかけた際には多くの方がサポートをしてくださったり、技術ブログでの発信力も含めてフューチャーの技術を共有する意識の高さを感じました。
Engineer Campでは週に一度、様々な社員の方が講義をしてくださいます。そこでは「経営面や業界から見たフューチャー」や「Vulsの開発に至るまで」の話など就活イベントなどではなかなか聞けない話をたくさん聞くことができ、フューチャーへの企業理解を深めることができました。
結び
リモートでの開催でコミュニケーションの手段に限りはありましたが、インターンの中で交流会や講義などのイベントもたくさん詰め込まれており、存分にフューチャーを体感した4週間だったと思います。また同年代のメンバーと技術面での交流ができたことが刺激になりました。
この記事を見て参加を検討されている学生がいましたら是非お勧めしたいインターンシップです!
最後になりますが受け入れ担当チームの皆様をはじめ、インターン期間中にサポートいただいたフューチャー社員の皆様、ありがとうございました!