サイボウズサマーインターン 2023 報告 〜 Android コース 〜

こんにちは!kintoneチーム所属のAndroidエンジニア、トニオ(@tonionagauzzi)です。
今回は、サイボウズのインターンシップにおけるAndroidアプリ開発コースについて紹介したいと思います!

概要

サイボウズでは毎年サマーインターンシップを開催しています。2023年度のサマーインターンシップでも、さまざまなコースを用意しました。
この記事では、Androidアプリ開発の2コースについて紹介します。

インターンの内容

Androidアプリ開発は、2種類のコースを用意しました。

Android 1週間コースには2名、Android 2週間コースには3名のインターン生にご参加いただきました。
インターン生にはリモートワークで実際のプロジェクトに参加することで、実践的な経験を積んでいただきました。

Android 1週間コース

まずはkintoneチームで行われたAndroid 1週間コースの内容です。

インターン中の開発の流れ

kintone Androidチームの業務は、主にモブプログラミング形式(以下、モブ)で行っています。
今回のインターンでは、インターン生2名と社員3名の合計5名で、Zoomを用いたモブを行いました。

インターン中のスケジュール

大まかなタイムスケジュールは以下の通りでした。

Android1週間コース時間割
Android1週間コース時間割

ミーティングへの参加

kintone Androidの開発は、1週間スプリントのスクラムベースで実施しており、インターン中もスクラム開発は行われています。
インターン生には普段のスクラムイベントのうち、朝会(デイリースクラム)に出席していただきました。

また、kintone開発チーム全体で実施しているスプリントレビューも見学していただきました。
インターン生が参加したスプリントレビューは、各チームによる成果の説明のあと、プロジェクトマネージャーから次の3か月の開発計画が紹介されるタイミングでもありました。
その日の夕会で感じたことを聞かせていただきました。
そこで得られた感想は以下の通りです。

  • 成果を褒めながら進められていたのが良かった
    • もっと業務連絡っぽいと予想していた
  • 開発計画の説明内容が、とても考えられたもので良いなと思った

社内イベントへの参加

メンターや同じチームのメンバーだけでなく、チーム外の人との交流の機会も設けました。
kintoneのiOSエンジニア、QAエンジニア、PMとの雑談会、他プロダクトも交えたAndroidエンジニア同士の雑談会、懇親会、そして青野社長との雑談会も行われました。
リモートワークにもかかわらず、コミュニケーションを多くとって大切にしているという印象を持っていただけたのではないかと思います。

取り組んだタスク

私たちがインターンで取り組んだバックログアイテムは、ファイル添付時に写真選択ツールを利用して画像や動画を添付できるようにする、というものです。

背景

kintoneは、サイボウズが提供する業務アプリ開発プラットフォームで、ノーコードでお客様の用途に合わせた業務アプリの作成が可能です。
その機能の1つとして、kintone内で作成したアプリやスペースなどに、写真や動画、ファイルを添付する機能があります。
添付操作の際、モバイルアプリでは以下のようなボトムシートが表示され、どの方法で添付するかを選択できます。

既存の添付ボトムシート
既存の添付ボトムシート

  • カメラ…カメラが起動し、その場で撮った写真を添付する
  • カメラ(ビデオ録画)…カメラが起動し、その場で撮った動画を添付する
  • ファイル…デバイス内に保存されたファイルを選んで添付する

課題

すでに撮影済みの写真や動画を選びたい場合、以下の課題が存在していました。

  • 写真や動画なのに「ファイル」の選択肢を選ぶ必要がある
    • 一見わからず、誤ってカメラを起動して迷ってしまう
  • 「ファイル」アプリを開いてから、目的の写真や動画へスムーズに辿り着けないことがある

そのため、Androidの操作に詳しくない人には、やや使いにくい仕様になっていました。

取り組んだこと

Androidには撮影済みの写真や動画を選びやすい写真選択ツールが存在するため、その写真選択ツールをファイル添付時のボトムシートの選択肢に追加しました。
メンターによる計画時は、選択肢を3つから4つに増やすだけの、技術的には大したことない作業だと考えていました。

問題発生!

ところが、インターンが始まり着手してみると、既存のボトムシートには写真選択ツールを追加できないことが発覚しました!

Intent.createChooserに指定するEXTRA_INTENTEXTRA_INITIAL_INTENTSの制限で、規定のIntentを1つ、追加のIntentを2つまでしか設定できないからです。
すでに規定のIntentに「写真」が、追加のIntentに「動画」と「ファイル」の2つが設定済みです。前述の上限に引っかかっており、これ以上アイコンを並べられなかったのです。

実際に選択肢を実装してみても、表示が変わりませんでした。
これは想定外!となって、実現方法を再調査し、ボトムシートを自作することにしました。

自作の添付ボトムシート
自作の添付ボトムシート

インターン期間中は、その再調査からボトムシートのプロトタイプ実装までを、インターン生とメンターとの合同モブで行いました。
メンターとしては予想外の展開でしたが、これによりインターン生はよりリアルな開発の現場事情を体験することができたのではないかと思います。

インターン生の感想

インターンに参加してくださった2名のインターン生からは、以下のような感想をいただきました。

  • インターンで期待していたチーム開発だけでなく、メンターの方同士の意見の出し合いや思考のプロセスを知ることができた
  • メンターの方達とさまざまな意見を出し合い、新たな問題に対する解決のプロセスを体験することができてよかった
  • モブという学生としては馴染みのない体験によって、チームワークや自分の考えを説明する力の重要性を理解した
  • プログラムのテスト工程等を体験できなかったのは残念

ふりかえり

メンター側ではふりかえりを行い、来年に向けて以下のような意見が寄せられました。

  • PMやQAなど、インターンで関わらない人たちの普段の業務内容も質問してもらえたので、有意義だった
  • 分報を書く暇もなかったので、もう少し自由時間を設けてもよい
  • 次はテストの話もちゃんと説明したい
  • インターン生はドライバーだったので、慣れてきた4日目くらいにナビゲーターの経験ができるとよかった
    • ただし、4日目は締め切り間近で余裕がないことも考えられる

まとめ

kintone Androidチームのインターンでは、モブ形式で開発を行い、スクラムベースの1週間スプリントを実施しました。
インターン生には朝会やスプリントレビューに参加していただき、普段の開発業務を経験しながら、社内イベントも楽しんでいただけたかなと思います。
取り組んだタスクは写真選択ツールの追加でしたが、予想外の制限によりボトムシートを自作することになりました。
インターン生にはチーム開発や意見の出し合いを経験していただけたと思いますし、メンター側も有意義なふりかえりを行いました。

Android 2週間コース

続いて、サイボウズOffice Androidチーム(以下、Office Android)で行われたAndroid 2週間コースの内容です。

インターン中の開発の流れ

Office Androidの業務も、主にモブで行っています。
そのため、今回のインターンではインターン生3名と社員3名の合計6名で、Zoomを用いたモブを行いました。

インターン中のスケジュール

大まかなタイムスケジュールは以下の通りでした。

Android2週間コース時間割 1週目
Android2週間コース時間割 1週目

Android2週間コース時間割 2週目
Android2週間コース時間割 2週目

ミーティングへの参加

Office Androidの開発でも、インターン生には朝会(デイリースクラム)に出席していただきました。
さらに実際のスプリントプランニングやスプリントレビュー、見積もりなどを行うリファインメントも体験していただきました。

社内イベントへの参加

こちらのチームでも他プロダクトも交えたAndroidエンジニアとの雑談会、懇親会、そして青野社長との雑談会を行いました。

ハッカソン

Android2週間コース独自のイベントとして、ハッカソンを開催しました。 目的は、インターン生にモブやJetpack Compose(以下、Compose)を使った開発に慣れていただくためです。
ハッカソンの中で、2種類の課題をこなしていただきました。

  1. Composeの標準Componentを各自触ってみよう!(難易度:低)
  2. 標準にないComponentを、モブで1から作ってみよう!(難易度:高)

以下がインターン生に作ってもらった自作Componentです!

リストの1項目を構成するListTile!
リストの1項目を構成するListTile!

押すと拡張するExpansionTile!
押すと拡張するExpansionTile!

Tinderのようにリストアイテムをスタック表示するStackedListPreview!
Tinderのようにリストアイテムをスタック表示するStackedListPreview!

ハッカソンを実施してよかった点は、モブやComposeに早い段階で慣れるという目的を達成できたことでした。
一方、改善点として、ナビゲーターの役割分担が挙がりました。2人以上がナビゲーターを担当していると、誰が指示を出すかが明確でないことがありました。今回はそれに気づいた時点で、指示を出さない人はハウスキーパーに徹してもらうようにしました。
来年はより明確な役割分担を行い、チーム全体が円滑にコミュニケーションを取れるように改善していきたいと考えています。

取り組んだタスク

2週間コースのインターンでは、Office Androidの実際のスケジュールを改修するバックログに取り組みました。
取り組んだバックログアイテムは、以下の内容です。

  • 予定にメモを登録/変更できるようにする
  • 時刻を表示しない終日予定を登録/削除できるようにする

背景

Officeでは、最近モバイル版アプリ「サイボウズOffice新着通知」を「サイボウズOffice」へ名称変更し、リニューアルしました。
モバイルからの操作を起点とする機能を追加し、業務をいつでもどこでも進められる環境を目指しています。
基本的な機能が揃ったことを受け、アプリ名を「サイボウズOffice」に変更しました。
今後も、働き方の多様化に対応し、モバイルひとつで業務を迅速に進められるツールとして、利用者の課題に対する最適なソリューションを提供し続ける予定です。

詳細は以下のリンクをご覧ください。
https://topics.cybozu.co.jp/news/2023/03/06-18409.html

Officeの持つさまざまなグループウェア機能の1つに、予定を登録してチームや組織で共有するスケジュール機能があります。

課題

開始時刻と終了時刻が明確でない予定(たとえば、休みや終日外出など)を登録したくても、モバイルアプリでは開始日時と終了日時の入力欄に必ず時刻を入力する必要がありました。 また、訪問先などの詳細をメモとして登録したくても、予定にメモを添付する機能はありませんでした。

取り組んだこと

インターン生が参加したスプリントでは、スケジュールを登録する機能に対し、時刻情報の付かない日付だけの予定を登録できるようにしたり、予定にメモを登録したり後から変更できるようにしました。
インターン生にはモブに参加し、Composeを用いて既存の予定作成画面と予定編集画面に対し、日付だけの予定に対応していただいたり、メモの入力欄を追加していただきました。

日付だけの予定が登録可能になった!
日付だけの予定が登録可能になった!

メモの入力が可能になった!
メモの入力が可能になった!

インターン生の感想

インターンに参加してくださった3名のインターン生からは、以下のような感想をいただきました。

  • モブやスクラム開発、チームの雰囲気など期待していた以上の経験ができた
  • モブやスクラム開発の知見を教えていただき、勉強になった
  • インターンを経て、サイボウズという会社に対するイメージが変わり、フランクでフラットな職場であると実感した
  • インターン生のみが交流する場があるとよかった。同世代のインターン生が普段どのようなことを行っているのか知りたいと思った

ふりかえり

メンター側ではふりかえりを行い、来年に向けて以下のような意見が寄せられました。

  • 1スプリントのスクラムイベントをほぼすべて体験してもらえてよかった
  • どのイベントを見学してもらうか、見学しないイベントにメンターの誰が行くかを直前に決めていた
    • あらかじめ決めておいたほうがよかった
  • インターン用のプロダクトバックログアイテムがもう少し難しくてもよかった
  • カメラONでやったほうが、表情がわかるのでよかったかもしれない
  • インターン生のみの雑談会、インターン中のランチ会で交流を増やしてもよかったかもしれない

まとめ

Android2週間コースでは、Office Androidチームに参加してモブを行い、スクラムの各イベントにも参加していただきました。
また、Composeに慣れることを目的としたハッカソンを開催し、Office Androidのスケジュール改修にも取り組んでいただきました。
インターン生からはモブやスクラム開発の経験を高く評価していただけた一方で、インターン生同士の交流の場があると良いとの意見もいただきました。
メンター側では、ツールの早期導入や役割分担の明確化、インターン生の交流機会の増加などの改善点を見つけ出しました。

おわりに

インターンシップのはじめは新しいことばかりで大変だったかもしれませんが、皆さんが自律的にアイデアを出し、積極的に取り組む姿を見て、私たちは大いに刺激を受けました。
この経験が皆さんの技術的な成長だけでなく、チームでのコミュニケーションの経験にも繋がったとしたら、私たちはとても嬉しいです。
そして、この経験が皆さんの今後のキャリアにとって大きなプラスになることを心から願っています。
この短期間で見せてくれた皆さんの成長と努力に感謝し、今後のさらなる活躍を期待しています!