FANCOMI Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・新規事業のエンジニア・技術ブログ

大学生3人組でインターンに参加させていただきました

2018/3/19~2018/3/23まで2018/3/21の春分の日を除いての4日間インターンに参加させていただきました。
メンバーはfopen(@fopen_s) , Kanon(@kanon_k4) , itosato(@it0sat0) の三人です。

インターンに参加した理由

参加者全員が立命館大学の新2回生であり、立命館大学で2017/11/25日に開催された通称「あいちゃれ」(正式名称:立命館大学 全国高校・大学ソフトウェア創作コンテスト(ICT Challenge+R))にてファンコミュニケーションズの方々より、アイデア部門で賞をいただきました。その際に「好きなものを好きなように作るインターンがある」ということを教えていただき、『自分が作りたいものを開発してよく、その上実践経験のあるプロのエンジニアさんに質問できるとか行くしかねぇなこれ!』と、思い参加させていただきました。

4日間でしたこと

今回は、「あいちゃれ」で提案した農家さんと学生さんをマッチングするサービス「CCCS~City & County side Connecting Service~」を実際に開発することにしました。

1日目

会社に到着すると用意された机に案内されました.荷物をおいて少し休憩するとミーティングルームに案内され、会社の大まかなルールと入社に必要な書類を渡されました。
インターンを行うにあたっての書類が新入社員とほぼ同等数書く必要があったため、午前中は社内ルールの説明やオフィスの案内、書類にサインする時間になりました。4日間という短い期間にも関わらず、しっかりと社内案内や書類。緊急時の対応等を用意していただいており大変好感がもてました。書類を書き上げると歓迎会でお昼を食べに行きましょうと声をかけていただき、一緒に昼食を食べました。
午後からはエンジニアの方を交えて現在考えている大まかなサービスシステムや使用技術について共有を行いました。その後メンバーでミーティング。実装する機能の洗い出しや全員のイメージを擦りあわせてから、最後にもう一度エンジニアの方を交えてシステムの概要を報告して、更なるアドバイスをいただきました。そこからは個人作業に入り、それぞれが担当する部分の大まかな開発の進め方や詳細部分の決定作業を行い、初日は終了!

2日目

fopen・バックエンド(Flask + db管理)
Kanon・jQueryでフロントとバックエンドを結合
itosato・(html + css + js)でフロント
という役割分担初日に決まったので朝から開発をはじめました。
フロント・バックエンドは順調に開発が進んだものの、jQueryからAPIサーバーにPOSTするとOPTIONSというメソッドを使用していてPOSTできない問題が発生し、半日溶かしてしまいました。
エンジニアの方も経験があったらしく、アドバイスをもらうことで何とか解決し一安心。
現在のWebブラウザでは、あるWebサイトが持つ情報が別の悪意あるWebサイトに悪用されるのを防ぐために備わっている防御機構(CORS)が原因でした。

3日目

フロント・バックエンドは開発スピードが早くはなかったが何とか滞ることなく、じわじわと進捗を生み続けることが出来ていました。
しかし、またしてもjQueryとFlask間でエラーが発生。
どうしてもFlask側から投げたCookieをjQueryで保持することができない問題が発生しました。
二日目の件についてはバックエンド側の対処で解決したため、レスポンスヘッダーにいろいろ設定してみたり、リクエストを変えてみたりしましたが、どうしても上手く行かずこれも半日程度溶かしてしまうことに。
エンジニアさんと議論した結果、決め手となる情報源を見つけることはできませんでしたが、どうやらhttp通信とajaxでは若干レイヤーが違うようなのでうまくいかなかった様子。試行錯誤することで上手くcookieを利用する手法があるかも知れないというところまでたどり着きましたが、進捗状況的に考える時間は無かったためレスポンスヘッダーにトークンをのせて返すことになりました。おそらくセキュリティ的によろしくないので真似する際は自己責任でよろしくお願いします。

4日目

インターン最終日だというのにFlaskとjQueryの進捗が芳しくなかったため、それぞれ気合を入れなおしたり、残り数時間じゃ実装できないと嘆いたりとバタバタしながらの作業。
結果的に動作させたい9割ぐらいの実装は完成しましたが、jQueryでリクエストを飛ばす際のエラーに時間が裂かれすぎてjQueryの実装をギリギリ間に合わせることが出来ませんでした。
バックエンドのセキュリティ対策も全くと言ってもいいほど出来ず……DBは生で叩いているのにエスケープが全くされていないため、SQLインジェクションやXSSもやり放題となっている現状のままではとても公開できそうにはありません。
後1日あればなんとか形になったと思いつつも、4日間という短い期間に目や肩や腰が痛くなったものの、プロの方々の手厚いサポートを受けながら真剣に開発が出来たということを今の時期から経験できたことは、とても大きな糧となりました!

社内の雰囲気

社内の雰囲気は、参加初日の月曜日こそ皆さんが疲れていたようでとても大きな声で話せる雰囲気ではなかったですが、火曜からはエンジニアさんがふざけあったり昼ご飯の時間にボードゲームで遊んだり、エンジニアの皆さんが笑顔で仕事をしており、とても良い職場だと感じました。

メンバーそれぞれの感想

fopen

社内は綺麗で働いている社員さん達も挨拶をすると必ず返してくれるため、とてもよい環境でした。
言語化できていない質問にも的確にアドバイスをしていただき、短い間でしたが技術的なサポートだけでなくイベントの開催や食事会を開いてくださったのですぐに緊張がとけて、会社になじむことができました。
とても成長できた4日間だったと感じています。様々なサポートありがとうございました。

Kanon

私はインターンに参加すること自体初めてだったので、色々と緊張もしていたりしましたが、最後は非常に楽しむことができてよかったです。
開発環境に関しては、もっと静かな部屋でキーボードのタイプ音だけが鳴り響くような場所を想像していたりしましたが、
社員のみなさんが色々会話していたり笑っていたりして、とても楽しい環境でした。
今回開発していた、Webアプリケーション自体はとても「よくできた」ものではなかったのですが、エラーが出たら質問できたり、構成について相談できたり、あたたかい場所でした。
ランチなどで他のインターン生の方との交流もすることができ、4日間とも非常に多くの知見を得られるインターンでした。
短い期間でしたが、ありがとうございました。

itosato

今回のような、がっつりサービスを開発するというインターンは初めてで、さらにフロント開発も本格的なものは今回が初めてだったのでいろいろと心配な部分が多かったのですが、サービス概要を詰めていくところからプロの方々のサポートを受けることができたので、自信をもって開発を進めることが出来ました!
初日からエンジニアの方も含めたランチや懇親会など、開発の部分以外もとても充実しており、エラーや不具合で苦しんだ部分もありましたが、とても素晴らしい経験をさせていただきました。4日間という短い間でしたが、本当にお世話になりました。ありがとうございました!

まとめ

・各々の技術アップにつながった
・個人で学ぶことが難しいDB設計などが学べた
・Web系は難しい……
・会社の雰囲気が伝わった

最後に

4日間という短い期間でしたが、入社から退社までのフォロー、技術的なアドバイス、歓迎会などのイベント開催など大変お世話になりました。とても楽しく勉強させていただきました。本当にありがとうございました!