NIKKEI TECHNOLOGY AND CAREER

新卒がAndroidアプリ開発研修を受けた話

Nikkei Advent Calendarの8日目の記事です。

こんにちは。2020年4月に日本経済新聞社へ新卒入社した篠原です。 私は4月の半ばごろ、アプリチームに配属され、現在Androidの電子版アプリの開発に携わっています。

本記事では、入社後およそ半年に渡って行われた新卒のAndroidアプリ開発研修について紹介します。 コロナ禍で行う研修は、大変な環境になると覚悟していましたが、非常に良いチーム体制のもと有意義なAndroidアプリ開発研修が受けられました。 この記事でその内容をお伝えしたいと思います。

配属チームと自分の経験値

アプリチームは大きくiOSアプリ開発とAndroidアプリ開発の2つに分かれていて、自分はAndroidアプリ開発のチームとなりました。 入社前の自分のエンジニアスキルについて触れると、情報系の学科を修了していますが、正直なところ実務的なプログラミングの経験はそれほどありませんでした。 具体的な技術スタックとしては、修士論文の研究に用いる実験データの分析ツールとして、PythonMatlab、企業のインターンでGitRuby on Railsを用いた程度でした。

ネイティブアプリの開発経験は全くありませんでした。 Javaは文法をちょっと知っている程度で、Kotlinに至っては配属されてから初めて名前を知った言語でした。 そんな自分が日本経済新聞社のデジタル部署でアプリエンジニアとしてやっていけるのか、内心では研修まで不安に思っていました。

Androidアプリ開発研修概要とその目的

研修は、インプットとアウトプットの2つの軸を意識して取り組みました。 ネイティブアプリ開発に必要な最新技術の情報をどうキャッチアップしていくか、そして得られた情報をどうプロダクトに具体的に反映していくかを学びました。 それぞれで取り組んだ研修の概要は以下となります。

インプットとして行った研修

アプリ開発に必要な知識を得るために/基礎をつくるために、まずはインプットを中心とした研修を行いました。

インプットする上で、特にJava・Kotlinの文法に慣れることやGoogle公式の一次ソースにあたる大切さを知ること、 定期的にイベント(今年はオンラインですが)に参加して最新技術に触れることを重視しました。 技術書に関しては、自分の現時点でのレベルに合ったものから順に、先輩が選別してくれたものを読みました。 実際に読んだ書籍を以下にリストアップします。

  1. 『Java言語プログラミングレッスン第3版(上)Java言語を始めよう』
  • 著者:結城浩
  • 出版:ソフトバンククリエイティブ
  1. 『Java言語プログラミングレッスン第3版(下)Java言語を始めよう』
  • 著者:結城浩
  • 出版:ソフトバンククリエイティブ
  1. 『Kotlinスタートブック』
  • 著者:長澤太郎
  • 出版:リックテレコム
  1. 『RxJavaリアクティブプログラミング』
  • 著者:須田智之
  • 出版:翔泳社
  1. 『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』
  • 著者:Dustin Boswell、Trevor Foucher
  • 出版:オライリージャパン

アウトプットとして行った研修

インプットで学んだ内容をもとにどのようにアプリを開発に応用していくか/落とし込んでいくかを学ぶために、 アウトプットでは、実践的にAndroidアプリを作成しました。 具体的には、

  1. じゃんけんアプリ
  2. パズルアプリ
  3. ミニ電子版アプリ

の3つのアプリです。

この研修には全体として以下の6つの目的がありました。

  1. Androidアプリ開発で必要なJavaおよびKotlinの文法について実際にコードを記述して学ぶ
  2. シンプルな構成のアプリを実装することで、Androidアプリ開発に必要な包括的な知識を学ぶ
  3. 要件を満たすアプリを作るために必要な仕様の策定、及びそれらの優先度を自身で計画する
  4. 課題を小さく分割して、解決していくことで成功体験を積み重ねる
  5. チーム開発を行っていく上で、一般公開することや他人が読むコードであることを意識してコードを書く
  6. 開発ツールであるAndroid Studioの使い方に慣れる

自分は、これまで圧倒的にアウトプットの経験が足りなかったため、アウトプット研修にインプット研修よりも多くの時間を割いて取り組みました。 単純に、コードを記述してプログラミングする能力がついただけでなく、レビュアーとGitHub上でディスカッションをして解決することを通して、 チーム開発に重要であるエンジニアとしてのコミュニケーション能力の向上も行うことができたと思います。 また、計画に沿って進めることで、適切な粒度で問題を解決していく開発サイクルを実現できました。

研修で作成したアプリ詳細

今回の研修で作成した3つのアプリについて、内容および達成した目的をそれぞれ説明します。。

じゃんけんアプリ

まずは、以下の簡単なじゃんけんで遊べるアプリを作りました。

じゃんけんアプリ

機能としては、「最初から」のボタンを押すとCPUのレベルを選択できます。 その後、CPUとのじゃんけんが始まり、グーチョキパーの中から選択するとじゃんけん結果が表示されます。 これまでの対戦成績を表示する機能をつけ、始めの画面で「続きから」を押すとその対戦成績から始められます。 いたってシンプルなアプリですが、僕にとって記念すべき第1作目のアプリでした。 「Android Studio?ビルドって?」という状態だった自分からすると研修の目的の1つである成功体験を積むことを達成することができました。

パズルアプリ

次に、以下の8パズルというパズルゲームを作りました。

8パズルアプリ

8パズルとは、1〜8までのタイルを並べ替えて左上から右下に向かって順番通りにできればクリアできるゲームです。 黒い空きタイルと上下左右で隣合わせになっている数字タイルをタップすると入れ替えることができます。

じゃんけんアプリのときに比べてこのアプリでは、様々な機能・要件を盛り込みました。 ダイアログでプレイヤー名を入力する機能や手数順に結果を表示するランキング機能、手数やパズル盤面を保存するセーブ機能、 横画面にした際に崩れないようにする対応、異常値が渡された場合のエラーハンドリング対応などが入っています。 Androidの技術的な部分としては、AlertDialogLinearLayoutRecyclerViewJUnitRobolectric といった要素も使い、プラットフォームやライブラリにより親しんだ内容になっております。 テストコードを書くことの大切さも学べました。

このアプリが最も工数をかけたアプリであり、多くのことを学べました。 細かなレビューによって洗練された綺麗なコードを書くことができ、また大きなタスクを細かく分割していったことで課題を小さく切り分けて解決していく方法も学べました。 さらに8パズルアプリでは、GitHubのマイルストーン機能でissueを管理し、issue作りとその取り組み順を自分で考えました。 それぞれのissueの工数を時間単位で見積もって、実際にかかった時間と比較する振り返り会も行ったことで、大切なエンジニアスキルの1つである工数見積もりについても学べました。

実際に使用したissueをまとめたマイルストーンは以下となります。

マイルストーン

ミニ電子版アプリ

最後に、以下のミニ電子版というアプリを作りました。

ミニ電子版アプリ

日経電子版の一部のUIを再現したアプリです。 実プロダクトに携わる前の最終的な研修として取り組みました。 TabLayout を使って1つのアクティビティ上で2つの画面をスワイプやタップで行き来できるように実装しています。 トピック一覧画面ではフォローすることのできるトピックを並べ、タップすることでフォロー/アンフォローを切り替えることができます。 フォロー済み画面ではフォローしたトピックのみをフォロー順に並べて表示し、こちらでもフォロー/アンフォローを切り替えることができます。

このアプリ開発では、クラス図・シーケンス図を作り、仕様を図示化するところから始まりました。 機能としては単純なアプリに見えますが、様々なライブラリや技術をふんだんに使ったものになっています。

具体的には、データベース操作にRoomを使っており、 通信処理にOkHttpRetrofitを使っています。 また、APIからのデータ取得など複数の処理を束ね、非同期処理やイベント管理を行うためRxJavaを用いました。 このアプリでは他にも様々な用途で著名なライブラリやツールを使っていました。 デバッグのためTimber、 CI/CDにはCircleCI、 クラッシュ検知にはFirebase Crashlytics、 依存性注入のためDaggerを用いました。

このアプリ制作の最大の目的は、実プロダクトで使われているライブラリやAndroid界隈で主流となっている技術に慣れることです。 前の2つのアプリでは使用していなかったデータベースや通信処理、非同期処理などを含めた総合的なアプリの仕組みについて理解を深めました。 これらのライブラリの基本的な使い方を学べたことで、実プロダクトである日経電子版Androidアプリの開発にもスムーズに入っていくことができました。

最後に

今年は新型コロナウイルス感染拡大の影響で入社後すぐに在宅勤務が始まり、最低限の出社に留めなければいけませんでした。 チームに入ったばかりの自分としては、仕事についていけるのか、フォローを受けることも難しいのではないかと少し不安になりましたが、今となってはその心配は杞憂に過ぎませんでした。

レビューや設計の相談がしやすい環境で、チームの先輩方にたくさんフォローしていただきました。 また、GitHub・Slackなどのドキュメントベースのやり取りだけでなく、Google Meet・Zoomといったビデオチャットツールも用いて、口頭による質問も行える環境でした。 そのため、在宅勤務下でも心理的な負担を抱えずに、Androidアプリ開発研修を順調に進められました。

エンジニア経験が浅い新卒にも手厚いサポートのある、人材を育てるという意識を強く持っている会社・組織だと思います。 特に学生の方には興味を持っていただけると嬉しい限りです。

篠原裕矢
ENGINEER篠原裕矢

Entry

各種エントリーはこちらから

キャリア採用
Entry
新卒採用
Entry
短期インターン
Entry