InternViewを運営している石田です。普段は、ライターとして企画から取材、記事作成まで、様々な業務を行っております。
私達は「”働く”を考えよう」をテーマに、InternViewというメディアを通して、企業の”働く”を大学生に発信しています。
そのWebメディアを、デザインだけでなく、開発言語も含めてシステムを一新し、先日リリースしました。今回はその開発業務について、InternViewのエンジニアとして活動している松尾さんにインタビューしました。InternViewのサイト一新についての話を通して、InternViewのエンジニアの活動について知って頂ければと思います。
エンジニア職のインターンシップを探している方にはぜひ読んでもらいたい記事です。
使用言語から全て一新してリリース
石田:今回、InternViewのサイトをデザインだけでなくシステムも一新してリリースしましたが、その理由を教えてください。
松尾(エンジニア):ユーザー目線、メンバーの運用の目線で改善点だらけだったからです。簡潔に言うと、以前のサイトがめちゃくちゃダサかったんです(笑)
石田:どのあたりがダサかったのですか?
松尾:まず、ユーザー目線での話でいうと、以前のサイトは、とにかくInternViewを動かすために急ピッチでこしらえたものでした。なので記事を読むことはできるのですが、ユーザーにとっても、私達にとっても納得のいかないサイトになっていたんです。このあたりは坂さんのインタビュー記事で説明されているとおりですね。
また、エンジニアにとっては、もう言うのも恥ずかしいぐらい裏側のシステムが時代遅れで……(笑)。
石田:言うのが恥ずかしいみたいなので、突っ込みませんがそんな感じだったのですね(笑)。
松尾:そうなんです(笑)。
なので、より一層読者や企業の方の興味を引くことができて使いやすく、運営側にとってもサービスの成長を加速させつつ機能の拡張とかがしやすいクールなサイトにしたいと思い、一新することにしました。
石田:なるほど。他にはありますか?
松尾:大きく変わった点で言うと、記事投稿のやり方ですね。
今まではライターが書いた「原稿」を,エンジニアが手作業で HTML にマークアップして公開するというとんでもないことをしていました(笑)。急ピッチで仕上げたサイトだったので、記事をアップロードする際にいちいちそんなことをしていたんですよ。
石田:なるほど。記事完成と実際に記事が読めるまでの間に時間的ギャップが生じてしまっていたのですね。
松尾:そういうことです。しかも、いつも同じようなマークアップを書く不毛な時間が勿体無いなとずっと思ってました。なので、記事投稿を容易に行えるような仕組みづくりを行いました。
具体的には、の記事投稿画面を作成しました。ライターが記事投稿画面からMarkdownをベースとした独自の記法で原稿を書くと、内部で自動的にHTMLに変換されて公開されるような仕組みです。
意思決定から開発までを自分達で出来るやりがい
石田:様々な機能を追加した新しいWebサイトの作成にあたっては、どのようなプロセスで行いましたか?
松尾:InternViewでは、インターン生が主体的になってサービスを作れるので、設計からサービスのアーキテクチャの決定、技術選定、実装の全部を順番に行っていきました。今のInternViewはエンジニアが私含めて2名なので、二人で相談しながらやりました。
まずは設計なのですが、最初にサイトをリニューアルする際にやりたいことや、やらなければならないことをリストアップして、必要な要件を洗い出しました。例えば、坂さんのインタビュー記事にあるように、キーワードで記事を探すことが出来る機能とかですね。
石田:まずは、今までの問題点や必要な機能を洗いざらいにする訳ですね。では、改善点を見つけたあとはどのように進めたんでしょうか?
松尾:改善点を基に、サービス全体のアーキテクチャの決定やシステムを構築する際に用いる技術の選定を行い、その後開発に取り掛かりました。
フロントエンドの部分ではJavaScript(ES6)、webpackとBabelを使いました。私自身はwebpackとかはインターンに参加するまでは使ったことなかったんですけど、エンジニアのメンバーと話し合って導入しました。
石田:使ったことのない技術を使うと、学習のコストや運用面での手間などの面でリスクがあると思うのですが、どうして採用されたのですか?
松尾:様々な理由はあります。インターンという観点だけで言うと、私達は自分たちの技術力を高めたいと思ってインターンをしているので、積極的に学びのある技術を採用していきたいという気持ちから導入したという感じです。
石田:インターン生が使いたい技術を導入できるというのは、珍しいですよね。そのように挑戦できる環境があるのはInternViewの強みだと思います。
松尾:確かにそうですね。普通インターンにいくと使う言語とか決まってますからね。
フロントはそんな感じで、バックエンドではPythonを使い、フレームワークとしてはFlaskを使いました。
PythonでWebサービスを作るときはDjangoを使用することが多いですが、今回はメンバーとも相談して、Flaskを用いました。あとはデータベースとしてはMySQL、インフラとしてはnginxとDockerを用いています。
こういう実サービスに対する技術選定を自分でやるというのは初めてだったので、勉強になりました。以上の技術を用いていくつかのマイクロサービスを作り、InternViewのサービスが動いています。
石田:InternViewの裏側はこんな感じで動いていたんですね。
松尾:そうですね。実装は、フロントエンドとインフラの部分を主に私が担当して、もう一人のエンジニアがバックエンドを主に担当しました。
石田:開発時の連携はどのように行なったのでしょうか?
松尾:開発は、Bitbucketを用いてタスクのチケットを切りながら開発をしていく形で進めていきました。連絡とかも、ChatツールはSlack、話合いが必要な場合はappear-inを使っていました。逐一気になることがあればお互いにこういうツールを用いてやり取りをしていました。
私はInternViewのリモートワークの制度を利用しているので、全体ミーティング以外はほとんどオフィスに行きませんが、オンラインでやり取りするツールを使えばリモートで対応できる部分が大きいので、ほとんどリモートでやりましたね。
石田:このインタビューもお互いリモートでやっていますけど、リモートで仕事ができるのは良いですよね。
松尾:そうですね。オフィスまで少し遠いので、私も助かってます。
また、サービスをリリースしたら運用しないといけないのですが、これも自分たちでやります。
私自身、不特定多数のユーザーに利用されることを想定したサービスを作りリリースするってしたことないですし、同世代の大学生でもあまりいないと思うんですよね。セキュリティ面の対策はもちろん、サービスを止めないための対策や、データのバックアップやドキュメント管理まで、いろんなことを運用していくにあたってはやらないといけないんだなと日々感じています。
石田:自分しか使わないサービスではあまり考えなくても、他の人が使うサービスだからこそ考える必要のある部分でもありますよね。
松尾:そうですね。セキュリティ面の対策とかって正直言って自分はあんまり面白いと感じないのですが、サービスの開発から運用面までできるというのは、他所では体験できないようなことであるので、InternViewという環境の強みであると思ってます。
ここまで自主的にやっていると言ってますが、流石に技術的に不安な部分とかわからない部分とかは、社員の方に聞くことが出来ますし、危ないことをしてたらアドバイスをもらえるので、積極的に開発や運用に取り組むことができるのもうれしいですね。
実践を通してスキルを伸ばしたいエンジニア募集!
石田:最後の質問に進みますね。現在InternViewではエンジニアを積極的に採用していますが、松尾さんの視点から見て、こんなメンバーと一緒に働きたいっていうのとかはありますか?
松尾:InternViewのエンジニアは勉強したがりなので、今まで使ったことのない新しい技術を積極的になんでも取り入れてしまうという傾向があります。なので、そういうのを楽しめる人とかですかね。
もちろん「その技術は本当に必要なのか・正しいのか」というのを考えて導入していますが、自分たちのモチベーションも大事にしています。なので、一緒にスキルを高め合えるような人と一緒に働きたいですね。
使う技術の選択とかこんな風なサービス開発をしたいとかに関しては、裁量権が大いにあるInternViewならではの良いポイントなのかなと。
石田:挑戦するにはもってこいの場所ですね。
松尾:あとはInternViewのメンバーとしてミーティングではしっかり意見出してエンジニア以外の部分にも眼を向けることができる人ですかね。技術はサービスを成長させるためにあるので、サービスの成長のために、いかに技術を用いるのかを一緒に考えられる人と仕事したいです。
自分たちで作ったサービスをより成長させたり、機能を追加してリリースできたりしたときは、やっぱり凄く達成感があるので、そういうのを全員で楽しめるような人と一緒に働きたいです。
石田:本日はありがとうございました!