EMoshU Blog
2021/06/30
2021-07-05
Yuta

ESCプロジェクト振り返り 〜 コスパチェッカー開発秘話 前半戦

今回のEMoshU Blogでは、2021年3月に行ったESCプロジェクト(EMoshU Speed Challenge)でどんなことを行ったかの振り返りと、EMoshU初の自社iOSアプリ「コスパチェッカー」が実際にリリースされるまでの開発秘話についてブログ記事を書いてみました。

もくじ

 

 

 

 

 

 

 

 

 

はじめに

 

今回のEMoshU Blogでは、2021年3月に行ったESCプロジェクト(EMoshU Speed Challenge)でどんなことを行ったかの振り返りと、EMoshU初の自社iOSアプリ「コスパチェッカー」が実際にリリースされるまでの開発秘話についてブログ記事を書いてみました。

 

まず初めにESC(EMoshU Speed Challenge)って何のことだと思いますか? 私も初めてESCという言葉を聞いた時には「何だそれ?」と首を傾げました。ESCについては社内で明確な定義がされていますので、その一部をご紹介します。

 

ESC(イーエスシー)とは、EMoshUのインターン・アルバイト勢でチームを組み、カジュアルアプリの開発からリリースまでを行うものです。アプリの企画立案からリリースまでの全行程をそのチームで行うことになっています。

 

今回、記念すべき第一回目ということで、紆余曲折ありましたが、このESCプロジェクトがどのようにして始まって、どんなことが起こって最終的にリリースに至ったかについて少しでも知っていただけたらと思って執筆しました。

 

このブログの執筆者であるゆうたは、ESCプロジェクトの後半から参加させていただきましたので、前半部分については何が起こっていたかが具体的には分かりません。そこでプロジェクトメンバーにインタビューを行いましたので、その内容を『前半戦』としてお届けできればと思います。2部構成にはなりますが『後半戦』では、プロジェクトの中で実際に体験したことや感じたことを私の目線で執筆させていただきました。

 

まずは、前半戦です!
それではご覧ください!

 

 

 

 

 

 

 

新プロジェクト始動!

 

ゆうた それでは、今回は第一回ESCプロジェクトに関してのインタビューを行います!

特に私が参加する以前、前半部分のことについて今回は詳しくお聞きできたらと思っていますので、どうぞよろしくお願いします!

 

りょうごお願いします!

 

ワトソンお願いします!

 

こうお願いします!

 

ゆうた ではまずは、ESCがどのようにして始まったのか?

今回はインターン生による企画立案からではなく、ボード(幹部)メンバーからの開発依頼でプロジェクトがスタートしましたが、ここらへんどんな流れだったのか詳しく聞かせてください!

 

りょうごはい! 私がお答えしましょうwww

 

ゆうたお願いします!ww

 

りょうご 最初、5日間で一つのアプリをリリースしましょうという感じで始まりました。その”5日間”という定義を5営業日、8時間 x 5営業日 = 40時間 x 3人で作ろうみたいな…
あれ……? どうだったかな…?
ワトソン覚えてる?

 

ワトソン 僕が覚えている限りでは、もうホワイトボードに書かれているところからだったかな…? いきなりホワイトボードにこれから作るアプリの概要だけが書かれていて、「これ読んでおいて」みたいな。

「なんやこれ!」って思いましたね。それまで別の開発を行っていたけど、その開発が一旦ストップするという状態だったので、「おぉ! 何か新しいことが始まったぞ!」という感じでした!

 

こう僕もワトソンさんと同じですね。僕のデスクの真横にホワイトボードがあるのですが、出社したらそこに色々と書かれていて…。そしたら純さん(EMoshU代表取締役)に僕たち3人が呼び出されて、ESCの概要を話されたのが一番はじめだったと思います。

 

りょうごあれ、そうだったかな…? そんな気もする。

 

ゆうたこうくんはESCの話を最初聞いた時、どう思いました?

 

こう まず、「面白そうだな」とは第一に思いました。

その後、純さんからプロジェクトの概要として、こういった背景で、どういうことがしたくて、これくらいの期間でという話をされて、「あ、ヤバいな…」と思いました。

 

ワトソンwww

 

ゆうたその”ヤバい”というのはどういう意味?

 

こうまぁ、求められるものに対して圧倒的に時間が足りなさそうというヤバさです。

 

ゆうた そういうことですね。
先程りょうごも言ってくれましたが、一人8時間x5営業日でアプリを一つ作るというのはやはり現実的ではなかった?

 

こう でも、最初はいけるかなと思ったんですよ。
メインで使用する言語がSwiftUIという縛りがあったというところが、現実的ではなかった一番の要因ですね。

 

りょうご 僕も今考えても絶対に5営業日は無理だったと思います。
開発するメンバーの能力と日程のタイトさ、そして要求されている成果物のバランスがやっぱり全然一致していなかったです。

 

ゆうたSwiftUIを使う決まりは、一番最初にアプリの概要を伝えられた時からあった条件だったんですか?

 

こう いや、アプリの概要について話した時はUIKitで作ると思っていました。
その後からCTOの将太郎さんから「ぜひSwiftUI使ってみてよ」というように言われたので、「あぁ、これ期限内には終わらないだろうな…」と思いました。

 

りょうご そうですね、僕はiOSの開発に関して当時はわかってませんでしたが、こうくんの表情を見て、間に合わないだろうと薄々感じてました。
それでもアプリの概要や開発期間の設定が絶対におかしいとは言い切れず、なんとなくプロジェクトは進んでしまいました。

 

ワトソン僕も単純に間に合わないと思ったけど、「無理!」って言うだけ言ってやらないのも何か違うのかなと思っていました。ノリと勢いでスタートさせるしかその時は選択肢がなかったです。そもそもその時タスクや仕事がなかったので。

 

ゆうた ではみんなそれぞれ心のどこかでは無理だろうなとか、間に合わないなと思っていたということだったんですね。
ありがとうございます、わかりました。

 

ESC-19.jpg

会議の様子。こちらの写真は終盤の会議の様子ですが、アプリの概要を伝えられた時も同じように会議室でミーティングを行い、ボードメンバーからのアプリ開発依頼の話を聞きました。

 

 

 

 

プロジェクトの役割決め

 

ゆうたでは、プロジェクトでの役割はどのようにして決まったのですか?

 

りょうご 役割的には僕がディレクター兼リーダーとして仕様書を作って、あとはワトソンとこうくんが開発をしてというものでした。

ただワトソンはその時期体調が悪くて、プロジェクト自体にあまり参加できてなかったよね?

 

ワトソンそうですね、1週間くらいとても具合悪い時期ありました。オフィスに出社しても体調が悪くてイマイチ作業が進められなかったのと、最初SwiftUIを使うためのキャッチアップが必要で、そのためのタスクを用意していたんですけど、それがなかなか進みませんでした……。

 

ゆうた なるほど。ワトソンはずっと開発していたというわけではなかったんですね。

こうくんはどうですか? 役割的なところで何か覚えていますか?

 

こう うーん…。役割のことで言うと、はっきりとディレクター側や開発側って決めてはなかったと思いますが、そこは暗黙の了解という言うのですかね…?
自然とりょうごさんがディレクター、ワトソンさんと僕が開発になりました。

 

ワトソンいやでも、こうくんには本当に助けられました。僕が体調悪い期間、一人でSwiftUIで使えそうなライブラリを引っ張ってきたり、アーキテクチャの部分を作ってくれていたので。

 

こういえいえwww

 

ゆうたということは、誰がどの役割を務めるみたいな話し合いはなかったんですね。

 

りょうごそうですね…。

 

 

 

 

アプリ開発開始!

 

ゆうた自然にではありますが、役割は一応決まっていたということで、プロジェクトをスタートさせたと思いますが、そのあたり開発開始時で何か覚えていることはありますか?

 

こう 最初は3人で集まって、まずアプリを完成させるのに何が必要かを洗い出すミーティングをして、それぞれをタスク化するという作業をしましたね。

そこからどうしたかな…? たしか優先度をつけたような気がします。根幹となる機能を最優先にしました。
今回はタイマーアプリだったのでもちろんタイマーの機能は必要ですし、そういったなくてはならない機能から優先的に取り組んだのを覚えています。

 

りょうご そうですね。作業タスクに関連するミーティングなどはしていたけど、本当にプロジェクト全体として見ると全く進められていなかったです。
それにワトソンは体調不良とか海外渡航の準備とかで、本当に何もできてなかったよね?

 

ワトソン うん、本当にその通りです。
本当にりょうごとこうくんの二人体制で進めていたようなものでした。こうくんはその時どのくらい稼働してくれていたっけ?

 

こう 僕は… 最初の1週間はずっと稼働していました!
もともとの予定だった5日間は全力で開発していましたww
ワトソンさんはいたりいなかったりだったので、言ってしまえばほとんど一人での開発だったと思いますwww

 

ワトソンそうだったね…。ごめんなさいww

 

ESC-54.jpg

プロジェクト開始から前半部分のほとんど、こうくんが一人で開発を進めてくれていました。

 

 

 

 

最初にぶつかった壁とは?

 

ゆうたでは、プロジェクトを開始して進み始めたと思いますが、最初にぶつかった壁とかってありましたか?

 

りょうご 最初にぶつかった壁か…。うーん…。こうくんとのコミュニケーションかな? 本当に入ったばかりで(こうくんは2月の半ばに入社しており、ESCプロジェクトの開始時はまだ2週間ほどしか経過していませんでした)、どこまで扱って良いかが全然わからなかったです。

 

ゆうたそうだよね、入ってすぐのこうくんにコミュニケーションは取れても、どういった接し方が正解かはまだその時はわからなかったよね?

 

こう はい、そうですね。
まだ関係性がそんなにできあがっていないときにプロジェクトが始まったので、最初はコミュニケーションで難しいところはありました。
あとは僕が今回チーム開発を初めてしたので、その進め方だったり、EMoshUならではの進め方がまだあまりわからなかったところもキャッチアップが大変でした。

 

りょうご そうだね。今なら多少強めに言えるけどwww
その時は関係も築けていないし、こうくんの方も入ってすぐに自分より歳が4つも5つも上の人たちと一緒にプロジェクトを進めるとなると接し方が難しかったんじゃないかな?

 

こう僕は年齢に関してはそこまで気にしてなかったです!

 

ゆうた 多少コミュニケーション面でも難しいところがあったということですね。

他には何かありますか?

 

こう あとは最初にぶつかった壁だと、SwiftUIというのもありますね。先程も言ったように開発ではSwiftUIを使わなければならなかったということで、キャッチアップのための時間がどうしても必要でした。
最初に5日間と聞いた時に「もしかしたらできるかも!」と思ったのはUIKitを使う想定だったので。UIKitならば今まで使ってきた知見もあったので、もう少し円滑に開発を進められたと思います。

 

ゆうたわかりました。ありがとうございます!

 

 

 

 

どのように開発を進めていたのか?

 

ゆうた開発の話に戻ると、プロジェクト序盤はどのように開発を進めていたか覚えていますか?

 

りょうご 進め方に関しては、ほとんどこうくんが一人でコードを書いていて、色々意識してくれたみたいだったけど、アプリを作る土台があまりしっかりしないまま開発を進めていたように思います。
それもあって、使えそうなライブラリを多用してしまい、コードがブラックボックス化してしまった問題はありました。

 

こうそうですね。時間がなかったというのに加えてほとんど開発に関するルールを決めずにスタートしたので、僕も含めてみんなバラバラに進めていたというのを覚えています…。

 

りょうごわかります! 僕はもう仕様書を書くことに満足してしまっていたから、アプリを作ると言う目的から外れていました。こうくんもたぶん自分で作りたいものを作っていたから結果的にチームとしては全く機能していなかったよね…。

 

こうはい…。すみませんでした。

 

ワトソンいやいや、もう過去のことだし! いい経験だったと思えば!

 

りょうごそうそう!

 

ゆうた スタートの時点であまりうまくチームとしてまとまらなかったということですね。

開発面以外でアプリの仕様などは早くに固まったという感じですか?

 

こう 仕様の話をすると、時間が経つにつれてできていったという感じですね。
開発スタートの時に完成していたわけではなかったです。

 

ゆうた そうだったんですね。
やはりそれは最初の条件の5日間で作るというところで、同時に作業しないと進まなかったということですかね?

 

りょうご そうですね、5日間しかなかったので、ちゃんと仕様を固めて仕様書を作成するというよりかは、必要な機能を洗い出したり、各機能で使用する言葉の定義を決めるという作業を優先していました。
なので、それもあって作っている仕様書の内容と開発している内容が一致しないまま時間だけが過ぎてしまいました。

 

ESC-2.jpg

開発と同時並行で仕様書の作成を頑張ってくれたりょうご。ディレクター兼リーダーとして尽力してくれました。

 

 

 

 

エンジニアに聞いてみました!

 

ゆうたでは、ここからはエンジニア側とディレクター側で分けて少し質問できればと思いますので、エンジニア側はワトソンとこうくんに答えてもらえればと思います!

 

ワトソンはい!

 

こうはい!

 

ゆうたおそらく今回のコスパチェッカーの開発を通して、初めてSwiftUIに触れたと思いますが、実際に開発してみての感想があれば教えてください!

 

こうそうですね、やはりコード量が少なくて開発できるというところはSwiftUIの大きなメリットだと思いました。

 

ワトソン 反対にデメリットというか大変だったところは、SwiftUIはまだ新しいものなので、ほとんどのライブラリがSwiftUIに対応していなくて、それを対応させるように変換する必要があったところですね。あとはSwiftUIはまだ情報としても少ないので開発のベストプラクティスを探しても全然見つからなかったところも大変でした…。

SwiftUI自体はりょうごの方が触っているから詳しいと思いますwww

 

りょうご そうですね。フロント、UIの部分は終盤でかなり書いたので少し詳しくなりました。
(りょうごはディレクターにも関わらず、この後バリバリコードを書いていました。この話の詳細は後半戦で!)

 

ワトソンWebのフロントエンドをやっていた人にとっては割と分かりやすいところあるし、CSSっぽいところありますよね?

 

りょうご 僕もそう思いました。むしろHTMLとかCSSより全然書きやすかったです。
スペースを入れたい時は「Spacer()」と書くだけでいい感じにスペースを確保してくれたりしたので。
デザイン、UIをもっと凝りたいとなったら難しいかもしれませんが、シンプルなUIをつくるだけだったらとても使いやすかったなと思います。

 

ゆうた僕はそれまでWebデザインを多く扱ってきたので、そういった人にとってはSwiftUIは非常に使いやすい言語なのかなと実際に使ってみて思いました。

 

ゆうた続けてですが、ワトソンは主にバナー広告の表示を担当していたと思いますが、そのほかに開発したところってありますか?

 

ワトソン 他にどこを実装したかな? 本当にバナー広告しかやっていないような…。 あ! 機能で言うと、会議終了時のアラーム音を鳴らす実装はしました。今もあの音のままなんですかww?(コスパチェッカーのアラーム音はAppleのシステム音を使っているのですが、なぜか少し不気味な音を使っています。)

 

ワトソン
Timer_icon.png (不気味なアラームを是非体験してみたい方は、こちらのアイコンをクリックまたはタップしてみてください! AppStoreへ切り替わります。)

 

ゆうたはい、最初のままですwww

 

ワトソン バナー広告の実装に関して言うと、使用した広告のライブラリ自体はとても扱いやすかったです。でもライブラリ自体がUIKitのものだったので、SwiftUIで使うために変換する作業が必要でした。なので、結果的にUIKitもSwiftUIもどちらも知識としては必要でした。
僕はどっちのことも全くわからなかった(ワトソンは今回のESCプロジェクトで初めてiOS開発を行いました)から、そのキャッチアップが大変でした。

 

ゆうたありがとうございます。

 

ESC-1.jpg

色々と忙しい中も開発に取り組んでくれたワトソン。空いている時間を見つけてなんとか開発を進めてくれました。

 

 

 

 

ディレクターに聞いてみました!

 

ゆうた 続いて、ディレクターへの質問をさせてください!
ディレクターからの目線で、ESCプロジェクトを進行する上で気をつけたところ、大変だったところはどこでしたか?

 

りょうご プロジェクトの進行といっても何をすれば良いか明確にはわかりませんが、まずはコミュニケーションと進捗管理。
コミュニケーションというのは、チームのモチベーションの維持に直結するところがあるので、いかにチームの士気を高いまま保っていられるかという部分ですね。

 

ゆうたコミュニケーションと進捗管理で大変だった部分、実際にこのプロジェクトで体験したことで何か具体的な話ってありますか?

 

りょうご まず進捗管理・スケジュール管理の話をすると、チームのみんながフルタイムではなかったので、週にどのくらい稼働できるかが未知数だったこと、プラスしてそれぞれの技術力などの能力がはっきりとわからないので、何をするのにどのくらいかかるかの見積もりを計算できなかったです。
あとは、見積もりの経験もほとんどなかったので、こういうものを作りたいというゴールを達成するのに、エンジニアが大体何人月・何人日かかるかもわからなかったです。

コミュニケーションに関して言うと、先程話したようにこうくんとの接し方がいまいちわからなかったのと、タレックも決まった日に稼働しておらず、不定期に開発を行なっていたところは上手くコミュニケーションを取れずに悩んだところでした。

 

ESC-13.jpg

プロジェクト中盤ではタレックも開発に加わってくれて、データ保存の機能を実装してくれました。

 

ゆうた 思い通りに進まなかったところがかなりあったようですね。

今振り返ってみて、どのようにチームでの開発を進めるべきだったとかはありますか?

 

りょうご Jira(タスク管理ツール)でタスクを作成して、それを各エンジニアに割り当てて開発していくというのが理想的な流れだと思います。
なので、一番最初に行う「適切なタスクを作成する」と「タスクを上手くプロジェクトメンバーに割り振る」をちゃんと行えば、進捗管理、プロジェクト進行は上手く行えると思います!

 

ゆうたありがとうございます!

 

 

 

 

おわりに

 

ゆうた 他に言い残していることはありませんか?

一応前半部分でお聞きしたかったことは以上です!
そしてこの後"壮絶な後半戦"がやってくるという流れですwww

 

りょうごそうですねww

 

ゆうた 後半の方は実際に僕が体験したことなので、自分の体験談として記事を作成します!
ということで、ESCプロジェクトの前半部分のインタビューはこれで終わります!

ありがとうございました!

 

こうありがとうございました!

 

ワトソンありがとうございました!

 

りょうごありがとうございました!

 

 

 

 

 

ここまでお読みいただきありがとうございます!

以上で『ESCプロジェクト振り返り 〜 コスパチェッカー開発秘話 前半戦』は終了です。

 

また、数日以内に『ESCプロジェクト振り返り 〜 コスパチェッカー開発秘話 後半戦』を公開する予定です。

 

こちらではESCプロジェクトの後半でどんなことが起こっていたか、”壮絶な後半戦”と表現した本当の理由について執筆者であるゆうたの目線で語っていきたいと思いますので、引き続きよろしくお願いします!

 

※2021/07/02追記 『ESCプロジェクト振り返り 〜 コスパチェッカー開発秘話 後半戦』が公開されました!

 

 

 

 

 

 

 

募集要項

 

 

 

 

まずは話を聞いてみたいという方へ

 

 

 

 

関連記事

【インタビュー】[インターン]エンジニア”自由が丘のエジソン”こと、ワトソン|Interview|EMoshU Blog|株式会社EMoshU

EMoshU Blog|EMoshUのオフィスがある、自由が丘のエジソンこと、ワトソンへのインタビュー記事を公開します!

 

【インタビュー】[インターン]ディレクター兼エンジニア!? ”天才IT坊や”こと、りょうご|Interview|EMoshU Blog|株式会社EMoshU

EMoshU Blog|本日はEMoshUの入社1人目である、【インタビュー】[インターン]ディレクター兼エンジニア!? りょうごへのインタビュー記事を公開します!

 

ESCプロジェクト振り返り 〜 コスパチェッカー開発秘話 後半戦|Project|EMoshU Blog|株式会社EMoshU

今回のEMoshU Blogでは、2021年3月に行ったESCプロジェクト(EMoshU Speed Challenge)でどんなことを行ったかの振り返りと、EMoshU初の自社iOSアプリ「コスパチェッカー」が実際にリリースされるまでの開発秘話についてブログ記事を書いてみました。こちらは前半戦の内容になります。