F@N Ad-Tech Blog

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

F@NでWebサービスを開発するインターンしてきました

 こんにちは、1月から2月末まで株式会社ファンコミュニケーションズでインターンをしていた浦野です。現在は同じくファンコミュニケーションズでアルバイトをしています。
 私はファンコミュニケーションズさんがWantedlyにて「会社を使って『これ作りたい』『あの技術に挑戦したい』を実現したい人を募集! 」と題している通称(?)「なんでもやっていいインターン」に参加してきました。おそらく他社ではあまり見かけないユニークなインターンシップではないでしょうか。このブログ記事では私がこのインターンで実際に制作したものと、インターンを通じた感想を紹介します。

  • 制作物「日報アプリ」について概略
  • 実装詳細
  • インターン感想

制作物「日報アプリ」について概略

 私がインターンで製作したものは「日報を編集・投稿したり、閲覧してコメントをつけることのできるWebアプリケーション」です。今回はファンコミュニケーションズさんで実際に使われているフレームワークや設計を参考にするために、Play FrameworkなどのWebフレームワークは使わずに、Finchというルーティングに特化したマイクロフレームワークを使ってWebAPIのみを提供し、SPA(Single Page Application)でクライアントを実現する方法をとりました。インターンではこのうちWebAPIの実装をしました。システム全体ではだいたいこんな感じです。

f:id:fan_r_urano:20180314181611p:plain
システム概観

実装詳細

 設計は実際の業務コードの一部を見せて頂き、それに沿って設計をしました。そのため多くのWebフレームワークが採用しているMVCではなく、DDDに基づいた設計になりました。といってもDDDに準拠して作ったわけではないので"なんちゃって実装"が多分に含まれています。
 設計のレイヤー図は以下のようになります。

f:id:fan_r_urano:20180314181600p:plain
レイヤ図

 上から見ていくと、RouterはFinchを使ったルーティング部分で、ControllerはServiceとRouterを結ぶ部分です。Serviceは業務ロジックを司る部分ですが、今回のアプリケーションはあまり複雑なことはしていないので規模的にはかなり小さいです。その下にはDBと接続するRepositoryがあります。

 Serviceが一部突き出ているのはWebサーバのセッション部分の実装です。Finch/Finagleにはセッションの機能は搭載されていないので、今回は独自に実装することにしました。JWTという選択肢もありましたが、ここはある程度慣れている技術を使ってコスト削減を目指しました。と言っても一から実装したのであまりコスト削減にはなりませんでした...残念。

インターン感想

 今回実装したのはAPI部分のみで見せられるデモンストレーションが無いのでこのまま感想に移ります。
 実装にあたっては設計の参考のために実際の業務コードを閲覧させていただきました。業務コードを読むのは初めてだったのでとても参考になりました。ありがとうございました。また社員の方には何度も相談に乗っていただいたので、過去の自分の制作物と比べても綺麗な設計と実装ができたと思います。
 今回参加したファンコミュニケーションズさんのインターンは「自分のやりたいことを実現する」インターンということで、いきなり業務に参加するインターンと比べると心的な敷居は低いのではないでしょうか?ぜひ長期インターンへの参加を踏みとどまっている人は参加してみてください!