ドワンゴ 技術コミュニケーション室の塩谷( @kwappa / @kwappa@friends.nico )です。

8月9月はインターンシップシーズン。ドワンゴでもエンジニア志望の学生さん向けに「プロダクト開発インターン」と「研究開発インターン」の2プログラムを用意し、インターンシップを開催しています。
a403e47e1318dcf1729ebbda422c8016e765e582
今回の記事では、プロダクト開発インターン 第1クールの成果についてお伝えします。

インターン概要

プロダクト開発インターン 第1クールは7/31から8/25までの4週間、歌舞伎座タワーで実施しました。

ドワンゴのエンジニアが実際に勤務するフロアに席を設け、周囲のエンジニアと交流しながら、参加者同士でチームを組んでプロダクトを開発するというプログラムです。

テーマはドワンゴが運営するMastodonインスタンス「friends.nico」。サービスやユーザーの特徴を観察した上で、ユーザーの不満を解決したりよりよい価値を提供するにはどんな機能が必要か?をアイデアから考え、プレゼンし、実装しました。

3d1aa4c460aea2cc57708ce0ce07c67a7409e866

実際にユーザーが使っているサービスへの機能追加ですから、無条件で取り込むわけにはいきません。friends.nicoのプロデューサーに「これならユーザーに喜んでもらえる」と認められたらリリースという、実際のサービス開発に近い厳しい条件での開発に挑戦してもらいました。

成果物

第1クールは9名の学生さんが参加し、3名のチームを3つ結成しました。friends.nicoのプロデューサーにアイデア立案から実際の機能設計まで指導を受け、3チームとも最終週にはアイデアと実装のプレゼンまで行うことができました。

それでは、各チームの成果物についてご紹介しましょう。

anancus

このチームは「フレニコアンケート」という名前で、friends.nico上でユーザーが自由にアンケートを作ることができる機能を開発し、8/24にサービスへリリースされました。

2407c0aa33c930c958ab9be1d2e2548d6d425825
ユーザーは投稿欄に新設されたボタンを押すと、簡単にアンケートを作ることができます。質問文と最大4つの選択肢を入力すると…

b562588022df22194e490ffe73d1fdda535656ae

このように、タイムラインに投票ボタンつきの投稿が現れ、30秒のあいだ回答を受け付けます。締め切りを過ぎるとタイムラインに結果が現れるので、ぜひみなさんも試してみてください。

この機能のポイントは、同意できないが回答したい人のために必ず :thinking_face: という選択肢が入ること、結果のパーセンテージがざっくりで表示されることなどです。friends.nicoのゆるいコミュニケーションの空気にマッチした、楽しい機能を実装してくれました。

6d39b63fb58101482f9227476b20f92d366e9346

mahout

このチームはfriends.nico上でニコニコ動画のコンテンツを楽しむための機能拡張を企画・実装し、プロデューサーにもメンター陣にも大好評を得ています。アンケートと一緒にリリースしたかったのですが、ニコニコ動画チームとの連携が必要だったため保留となっています。

コードベースはMastodon担当エンジニアによってインターン終了後も最新バージョンに追随しており、もう少しでリリースできそうです。

PHP

このチームはElectronを使ってfriends.nico専用のデスクトップクライアントを開発しました。残念ながらリリースには至らなかったのですが、チームみんなで「ユーザーの不満」について考え、それを解決するために企画も開発も4週間頑張ってくれました。チームからはインターンの実習報告を書いてもらいましたので、ここでご紹介します。


こんにちは。チームPHPです。

チーム名は、Mastodonが象の祖先ということで、PHPにしました。

我々がこのインターンシップでどんなことをしたかを報告させて頂きます。

不満とその解決

まず、現在のfriends.nicoに対するユーザーが抱える不満を挙げていきました。その結果、「friends.nicoユーザーはローカルタイムラインを中心に見ているのに、ウェブクライアントはPCの全画面で見ることを想定していて、省スペース派、ネイティブアプリ派のユーザーが不満を抱えているだろう」という意見でまとまりました。 

その不満を解決するために、「frineds.nico専用の省スペースクライアントアプリ」を作ることにしました。ここでいう省スペースとは、画面の端に置いて鑑賞できるようなものを想定しています。また、Mastodonの全てのインスタンスではなく、frineds.nicoに限定したのは、よりユーザーの体験を具体的に想像できて、プロダクトとしての魅力を高められると思ったからです。

 コンセプトを叶えるための機能として

  • 省スペース
  • 高いカスタマイズ性
  • friends.nicoに特化

の3点を意識しました。省スペースはミニマリズムとして当然です。しかし、どのような省スペース性や機能が欲しいかというのは個人によって結構異なるので、それぞれの需要に応えられるようにカスタマイズできるようにしたいと考えました。

 成果物

 実際に開発したものが、これです。開発はメンバーの技術とマルチプラットフォームでの動作を考え、Electronを使用しました。フロントの実装にはマストドン本家と同様にReactを採用しました。 

a31dc032f2426cdf8e779c3d3559a28b6d093788
左が、僕らの作ったアプリのホーム画面です。ウェブクライアントでは別々になっているローカルタイムライン、ホーム、通知を1つのタイムラインで見れるようにして、画面の端に置いておける省スペースアプリとなりました。また、タイムラインの1カラムも出来るだけ細くしました。しかし、friends.nico特有のニコるをしやすいように、ニコるボタンは大きめに設定しています。

7aee41e22811f31cc7c88929091ce4381b4e6f1f

これは、設定画面です。他画面が必要な時はドロワーを横から出しています。friends.nicoではトゥートの更新が非常に速いので、画面遷移ではなく画面拡張をすることによって、タイムラインを常に表示し、話題においてけぼりにならないようにしました。設定からは、何をタイムラインに流したり、通知するかを選べたり、アプリのテーマカラーを変えられたりします。

28e339de62b01f1997f55e63ca98653cd3a93abc

これは、ホワイトバージョンです。α版を使ってくれた人からは人気がありました。ちなみに、タイムラインの右上のピンボタンをクリックすることで最前面表示もできます。これもレビュー会で好評だった機能でした。

成果発表会を通して

成果発表会を行い、メンターの方からフィードバックを頂きました。僕らは、オープンソースとして公開することを目指しましたが、残念ながらそれは叶いませんでした。

しかし、省スペース性の追求という、自分たちのコンセプトは間違っていないことは開発を通して感じました。しかし、現段階でユーザーが満足に使えるレベルには達していない、コードが汚くて今後誰かが引き継げるような状態ではない、というのが問題でした。反省点としては、開発の全体の構成や、メンバーの技術力を考慮した予定管理ができず、行き当たりばったりの開発になっていたことです。悔しいですが、これからの開発に活かせれば良いかと思います。

最後に

他の社員さんと同じ部屋で開発を行い、多くの社員さんが自由に仕事をしているのを肌で感じる4週間でした。僕らも伸び伸びとプロダクトの考案・開発をしながら、的確なフィードバックを受けられて学ぶことの多いインターンシップとなりました。このような機会を提供していただき、本当にありがとうございました。


まとめ

どのチームも感想を聞いたら「4週間があっという間だ」と答えていたのが印象的でした。チームで開発すること、実際にユーザーがいるサービスを開発することは、貴重な経験になったのではないでしょうか。
a68e1c8e71311daafd49c438a03e0c24d772e852
現在は第2クールの参加者が、同様にfriends.nicoの新機能開発に取り組んでいます。こちらの結果も追ってお届けする予定です。