サイボウズサマーインターン2016 報告その1〜Webアプリケーション開発コース

こんにちは kintone開発チームの小林です。

サイボウズでは、8月から9月にかけて、5日間のサマーインターンを3回開催しました。サマーインターンは以下の3つのコースに分かれています。

  • Webアプリケーション開発コース
  • 品質保証・セキュリティコース
  • デザインコース

今回は、Webアプリケーション開発コースについて、1回目のサマーインターンの内容を中心にお伝えします。

f:id:cybozuinsideout:20160902225132j:plain

インターンの概要

第1回のサマーインターンは、8月1日〜8月5日に行われました。Webアプリケーション開発コースには、東京で4名、大阪で1名の学生が参加しました。

Webアプリケーション開発コースでは、サイボウズが提供しているクラウドサービス「kintone」を題材に、新機能のプロトタイプを作ってもらいました。今回のプロトタイプは、もともと、開発チーム内で要望を受けたり改善したいと考えていた機能のプロトタイプでした。

プロトタイプの開発にあたっては、ただ機能を実装するだけではなくkintoneの実際の開発のプロセスに則って、利用シナリオを想定した仕様検討やメンターによる実装レビュー、自動試験など、一連の流れを体験してもらいました。

プロトタイプ

インターン生5名に作ってもらったプロトタイプは以下のとおりです。

フォームの「元に戻す」「やり直し」機能

f:id:cybozuinsideout:20160901150707p:plain

kintoneは、ユーザがフォームをドラッグアンドドロップで設計することができます。ただし、設定変更したフィールド元に戻したり、逆にやり直したりすることはできません。

この問題を解決するため、UndoボタンとRedoボタンをつくり、ボタンを押すと、変更した内容を元に戻したり、やり直したりすることができるようにしました。

アプリの誤削除を防止するダイアログ

f:id:cybozuinsideout:20160831135311p:plain

kintoneには、自分が管理権限のあるアプリを一覧でみることができる画面があります。この画面でアプリを削除しようとしたときに、誤って別のアプリを削除してしまった、というケースがあります。

意図しないアプリの削除を防止するための仕組みとして、アプリを削除しようとしたときに、ユーザにアプリ名を入力することを求め、アプリ名をチェックしてから削除するダイアログを実装してもらいました。

ポータル画面に表示するコンテンツを整理する機能

f:id:cybozuinsideout:20160902160428p:plain

kintoneのポータル画面には、アプリウィジェット、スペースウィジェットなど、5つのウィジェットがあります。kintoneの使用用途によっては、特定のウィジェットは使わないこともあるため、kintoneの管理者がどのウィジェットを表示するか選択できるようにしてもらいました。

全てのピープルの投稿をいいね順に取得するAPI

ピープルとは、kintoneのユーザーごとに存在するページのことで、ユーザ同士の直接の連絡や、アイデアなどの共有に使用する機能です。インターン生には、一日のうちでどのユーザの投稿が盛り上がっているのかがわかるように、投稿についたいいねの数を基準に、いいね順に投稿を取得するAPIを作成してもらいました。また、ただAPIをつくるだけではなく、デモ用のクライアントアプリも作成してもらいました。

ピープルに投稿するAPI

最近は、Slackなどに代表されるようにBotの使用が一般的になってきています。kintoneでも、業務の状況を自動的に投稿したり、自分にとって必要な情報(天気予報や株価情報など)を自動的に投稿するような使い方が考えられます。そこで、Botによる自動投稿ができるよう、kintoneのピープルへ投稿できるAPIを作成してもらいました。

スケジュール

1日目

1日目は、お互いに簡単に自己紹介をしたあと、インターンの概要についてオリエンテーションを行いました。その後、kintoneの開発をする上で必要なJavaScriptやJavaの技術を学ぶために、簡単な機能を練習として実装してもらいました。

2日目

2日目は、課題として与えたユーザの利用シナリオから具体的な仕様を検討し、仕様書にまとめてもらいました。仕様書を書くにあたって、まず簡単な座学を行い、どんな内容を書けばいいのかを勉強してもらいました。仕様書を書き終えたあとは、インターン生同士で、仕様書のレビューを行い、仕様の考慮漏れや問題点などを探してもらいました。その後は、レビューで指摘を受けた点を各自修正しつつ、実装をはじめました。

3日目〜4日目

3日目と4日目は、実装の続きを行なってもらいました。インターン期間中は、メンターがインターン生のとなりに座るので、こまめに相談したり、コードレビューを行なったりしました。また、ずっと実装するだけではなく、CIやgit、インフラなどのトピックに関しては、講義の時間を設けて集中的に解説を行いました。さらに、途中で社長の青野とのランチ会の時間を設けたり、社員面談をしたりするなど技術的な側面だけではなくサイボウズ全体のことを知ってもらえる機会をいくつか設けました。

5日目

5日目は、成果発表会を行いました。ひとりひとり、実装したプロトタイプの紹介やデモ、インターンを通じて学んだことなどを紹介してもらいました。30名以上の社員が参加し、積極的な意見交換や質疑応答が行われました。

f:id:cybozuinsideout:20160902225423j:plain

成果発表会が終わった後は、懇親会と「インターン完走証」の表彰を行いました。 f:id:cybozuinsideout:20160902225800j:plain f:id:cybozuinsideout:20160902225908j:plain

インターン生の感想

インターン生の感想を紹介します。全体を通じて好意的に受け止めてもらえたようです!

  • 今回のインターンで、何か機能を実装するにあたって、さまざまな背景やシナリオ、ストーリーがあることを再認識することができました。そして、仕様に基づいて開発を進めていくうえでの大変さやチームワークの不可欠さを感じることができたました。とても有意義な5日間でした。ありがとうございます。

  • 今回のインターンではkintoneの機能のプロトタイプを作成し、初めて企業での開発を体験しました。これまで個人で開発してきたものとは異なり、大規模なシステムだったのでコードの理解は大変でしたが、1週間という短い期間で想定していた機能を実装できて安心しました。メンターの方々には何度質問しても丁寧に説明をして頂けて感謝しています。

  • 5日間でkintoneの機能を1つ実装するという課題で課題を見たときは案外行けそうだと思ったが、実際のコードを見たときに行けなさそうだと思ってしまった。しかし、メンターさんの丁寧な説明もあり、表面部分だけは理解し、無事に課題を達成することができた。また、わがままにも丁寧に付き合っていただき課題のクオリティを向上することができたのでメンターさんには感謝しきれないと思った。

  • 実際の製品に触れて機能追加や改善を行う機会はなかなか得ることができないので、仕様策定・設計・実装・レビューのサイクルを体験できてタメになった。社員の皆さんが実際に「kintone」を使って「チームワークあふれる会社」を実現しており、企業理念と製品にズレが無いと感じた。リモート会議を実際に体験したり、社員の方々が様々な働き方をしているのを見たりして、本当に多様な働き方が可能なんだと驚いた。

  • 実務でのプログラム開発のプロセスを体験できて、とても勉強になりました。今回使用したJavaは、基本を勉強した程度でほとんど経験が無かったので、課題に取り組んでいるときには詰まることもたくさんありましたが、メンターの方が丁寧に説明してくれたので課題をこなすことができました。仕事の環境もとても良かったので、集中して課題の実装に取り組むことができました。また、技術面だけではなく、サイボウズの雰囲気を知ることができたり、社員の方がやさしく接してくれ、充実した5日間を過ごすことができました。

まとめ

今回のインターンで作ってもらったプロトタイプは実装難度の高いものが多く、インターン生は苦労していましたが、5日間という短い期間の中で素晴らしい内容を実装してくれました。また、制作物だけでなく、サイボウズという企業風土や社員に触れて学んでもらえたことも多いようでした。

これからも、学んだ経験を活かして是非活躍してほしいです!

10日間インターンのお知らせ

サイボウズでは、通年で10日間の開発インターンも募集しています。予定が合わずサマーインターンは参加できなかったという方、今からでもインターンをしてみたいという方、ご応募お待ちしております!