EMoshU Blog
2022/03/25
2022-03-25
Yuta

【自社プロダクト】ミヤマアユミのイラストアプリ ~サーバー開発編~(前半パート)

今回のEMoshU Blogでは、2021年12月末に無事リリースできた自社プロジェクト(コードネームSina)でどんなことを行ったのかの振り返りと、待望の自社iOSアプリ「ミヤマアユミのイラストアプリ」が実際にリリースされるまでの秘話をサーバーチームにお聞きしました! こちらは前半パートになります。

もくじ

 

 

 

 

 

 

 

 

 

はじめに

 

今回は自社プロダクトブログ第二弾として「サーバー開発編」をお届けします!

 

 

2021年12月末にリリースした自社プロダクトでどんなことを行ったのかの振り返りと、待望の自社iOSアプリ「ミヤマアユミのイラストアプリ」が実際にリリースされるまでの話をサーバーチームのメンバーにインタビューしてみました。

 

 

前回は「アプリ開発編」としてアプリチームがどのような開発を行ってきたかなどの振り返りをしてもらいました。アプリチームの記事はこちらになりますので、まだご覧になっていない方はぜひこちらもお願いします!

 

【自社プロダクト】ミヤマアユミのイラストアプリ ~アプリ開発編~|Interview|EMoshU Blog|株式会社EMoshU

今回のEMoshU Blogでは、2021年12月末に無事リリースできた自社プロダクト(コードネームSina)でどんなことを行ったのかの振り返りと、待望の自社iOSアプリ「ミヤマアユミのイラストアプリ」が実際にリリースされるまでの話をアプリ開発編としてインタビュー形式でお届けします。

 

 

今回の執筆はゆうたが担当させていただきます。

 

今回のプロジェクトでは一番人数が多かったサーバーチームですが、実際にどのように開発を進めて行ったのか、そのときメンバー個人個人はどのようなことを思っていたのかなどが伝われば幸いです。

 

 

サーバーチームは人数が多かったためにインタビューがとても長くなってしまったので、記事を前半パートと後半パートに分けました!

 

ということでまずは前半パート、ご覧ください!!

 

 

 

 

 

 

 

プロジェクトを終えての感想

 

しゅんたはい、ではサーバーチームのインタビューを始めていこうと思います。よろしくお願いします!

 

将太郎よろしくお願いします!!

 

まさきよろしくお願いします!!

 

ゆうたよろしくお願いします!!

 

しゅうよろしくお願いします!!

 

ほうくよろしくお願いします!!

 

 

しゅんた早速ですが、2021年12月末に無事に「ミヤマアユミのイラストアプリ」をリリースできたということで、まずはチームの一人ひとりに感想を述べてもらえたらなと思います。

しゅう君からお願いします! アプリをリリースしてどう思ったか答えてもらえればと思います。

 

しゅうそうですね...。
僕は個人開発はこれまでやってきた経験はあったのですが、人数は多くないにしてもチームで開発をしたのは初めてだったので、みんなで何かを作り上げることそのものが有意義に感じました。

 

しゅんたはい、ありがとうございます。ほうく君はどうでしたか?

 

ほうく僕も一人で開発したり、数人の仲間で開発した経験はあったのですが、会社でさらに収益を目的としたアプリは作ったことがなかったので、とても貴重な経験をたくさんさせていただきました。

 

しゅんたはい、ゆうたさんはどうでしょう?

 

ゆうた僕もEMoshUに入社してから初めて社内の全員で一つのプロダクトを作る取り組みをしたのは初めてで、実際に一年ほど前に全く別のプロダクトを始めようとしていたのですが、そちらは規模の大きさだったり、リソースが足りなかったりなどの理由で断念していたのですが、それから半年ほど経って、その間に新しいメンバーも集まって、色々条件も揃ったところで新しいプロダクトを始められたという経緯でした。
今考えてみると、前のプロダクトを断念した当時は今よりも人数が少なかったですし、そこまで自社のアプリに時間を割く余裕もありませんでした。

今回はインターン生含めてメンバーのみなさんに恵まれ、一番最初の”リリースする”という目標を達成できたことは嬉しく思いますし、自分もこのプロダクトの開発を通じて成長できたところもあります。
その上で今はやっとリリースができた段階なので、まだまだこれからアップデートできる点はたくさんあるので、引き続き開発を進めていければと思っています。

 

Server_Interview-22.jpg

 

しゅんたありがとうございます。まさきさんはどうでしょうか?

 

まさきはい。ゆうた君にほとんど言われてしまった感じはありますがwww。

そうですね。一言で言うと、「やりきった・突っ走った」というのが感想になります。
自社プロダクトの開発を始めるにあたって、とりあえずプロダクトを作るという点ではもっとこうした方が効率よく楽に開発が行えるという選択肢がありつつも、将来性のことを見越してあえて個人的には使い慣れていない言語を選定して取り入れたりしました。

最初は色々と苦労しながら進めていましたが、途中から優秀で頼もしいインターン生の方々にも入ってもらって、一気に戦力アップしてリリースまでやりきったことは本当に良かったなと思っています。

その過程で、少人数ではあったのですが各々がちゃんと役割を全うしてくれたと思いますし、それぞれが成長し、自分自身も成長ができたプロジェクトだったかなと思います。以上です。

 

しゅんたはい、ありがとうございます。
では最後に将太郎さん、もう同じ質問を受けるのは3回目だと思いますが...ww
(将太郎さんは全インタビューに出演しています)

 

将太郎そうですね...ww

 

しゅんたサーバー側の視点で、どうだったかについて答えていただければと思います。

 

将太郎サーバーチームのみなさまとは、開発が本格的に動き出した当初1、2回ほど定例会議に参加してから、それからは顔も出さずに影ながら見守っていたという感じでした。
なので、私自身はAPIの仕様書作ったり、開発環境の構築などの部分をサーバー側のタスクとして進めました。それを含めて、アプリ側とサーバー側が連携しつつ、今回作り上げられたということは本当に良かったなというところです。

あとは、アプリ編や企画編(近日公開予定)のインタビューでも色々話しているので、興味あればそちらをご覧ください。

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

個人の役割について

 

しゅんたはい、ありがとうございます。

先ほどのまさきさんの話で、各々の役割を全うしてくれたということを仰っていましたが、本プロジェクトだと一番人数が多かったサーバーチームですが、具体的にそれぞれどういった役割をしていたかを聞ければと思います。
では、ほうく君からお願いします!

 

ほうくはい、僕はGo言語をやりたいということで入社したこともあって、初めはGo言語でAPIを開発していました。
リリース後はたまに管理画面(以下、CMS[Contents Management System])の開発も手伝っているところです。

役割ってこんな感じで合っています?

 

しゅんたAPIの開発を担当していたということですよね?

 

ほうくはい、そうです。

 

しゅんたそれで、そのあとCMSの開発を手伝っていた感じですか?

 

ほうくはい!

 

しゅんたわかりました。ありがとうございます。
では、しゅう君はどんな感じでしたか?

 

しゅう僕が入った時はすでに開発が進んでいて、既存機能を改良したり、もちろん新規の開発も行いました。

たぶん”ほうくさん”と同じようなことをやってきたのかなと思います。

 

しゅんたほうくさんwww(しゅう君は大学3年生で、ほうく君は高専3年生です)

 

Server_Interview-22.jpg

 

将太郎www

 

ゆうたwww

 

まさきなんか違和感あるなー...。

 

しゅう入社したタイミングが僕より先なのでwww。

僕もAPIの開発をメインに進めてきました。ほうく君が実装していない部分を主に担当しましたね。

 

しゅんたなるほど、ありがとうございます。
では、ゆうたさんお願いします。

 

ゆうた僕は前の2人とは別で、アプリリリース前までは、アプリの要となるガチャで排出されるアイテムを自動で生成する処理を作っていました。APIの開発をチームが進めている間、この部分を主に一人で担当して開発していた感じになります。
これもインターン生の2人が入ってくれたことによって、こちらの開発に専念することができたので、非常に感謝しています。

それに加えて、アプリリリース後からはCMSと呼ばれる管理ツールの開発を行なってきました。
こちらは社内向けのツールで、アプリ周りの設定やアイテムの確認ができるようになっていて、現在では最低限の機能しか備わっていませんので、これからも開発を進めていきます!!

 

しゅんたはい。まさきさんはいかがでしょうか?

 

まさき私はまず、環境を構築する必要な材料を集めたりだとか、初期の頃はAPIのベースを開発したり、データベースの設計を行なったりと方針を決める作業をしました。

中盤からは後半にかけては、APIやCMSのプルリクエストのレビューをメインに行なっていました。

 

しゅんたはい、では最後に将太郎さんお願いします。

 

将太郎そうですね。私はAPI仕様書などのドキュメント類の作成を行いつつ、影から見守っていました。あとは環境構築などを行いました。

 

 

 

 

 

 

 

API開発の言語について

 

しゅんたでは、次の質問に移ろうと思います。

先ほどからGoという単語が出てきましたが、今回APIの開発でGo言語を使用した理由ってありますか?
これはまさきさんに聞いてみたいと思います。

 

まさきそうですね...。Go言語を選択した理由はですね...。これは将太郎さんと議論して決めました。

言語自体の特性と言いますか、まず「パフォーマンスがいい」というのが一番の選定理由と、あとは「将来性がある」っていうことですね。
今後伸びていくだろうとか、シェアが広がっていくだろうという大きく分けてこの2点がGo言語に決めた理由ですね。

それで先ほども少しお話が出たんですけど、私自身はずっとPHPをやってきた人間なので、極端な話をすればPHPですべて開発してしまえば楽だったようにも思いますが、パフォーマンスの面だったり、将来性の面を考慮して選択しました。

 

Server_Interview-22.jpg

 

しゅんたAPI開発ではGo言語を使って開発していますが、しゅう君、どうですか? Go言語を使ってみて。

 

しゅうそうですね。そもそも僕はGo言語を半年ほど個人で開発してきて、Goを使ってプロダクトを使ってみたいと思ってインターン先を探していました。
そこでタイミングよくEMoshUに入ることができて、目的だったGo言語を使ってゴリゴリ開発ができました。

 

しゅんたほうく君は他の言語も触った経験があると思いますが、Go言語と比較してみてどうですか?

 

ほうくWebのバックエンドの開発という視点で言うと、がっつり触ったわけではないんですけど、PythonのDjangoとかPHPのLaravelとかを経験したことがあって、そういったフルスタックのフレームワークで作るよりかは、Goで作る方がアーキテクチャなども考えながら開発することができたので、僕は好きだなと思いましたし、楽しく開発できました。

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

CMS開発の言語について

 

しゅんたはい、ありがとうございます。

続いてCMSについて少し詳しく聞いてみたいのですが、これはゆうたさんですかね。 使用したフレームワークだったり、パッケージについて話せる範囲で聞いてみたいと思います。

 

ゆうたCMSの方は言語はPHPでフレームワークはLaravelを使って開発しました。

これを選択した理由としては、まずPHPのスペシャリスト(まさきさん)がいるということが大きくあります。
フレームワークに関しては、開発に入る前にPHPのフレームワークについて調査を行なって、他のフレームワークと比較して圧倒的にシェアが伸びてきていたり、定期的にバージョンの更新があってメンテナンスされていることが理由としては挙げられますね。
あとは使っている人が多いというので、記事だったり知見が溢れている点も選んだ理由になります。

先ほど話に挙がったガチャのアイテム周りのバッチ処理については、Laravelというよりかはほとんど素のPHPを使用して自動生成などの処理は実装しました。

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

サーバーチームで実装した機能について

 

しゅんたはい、ありがとうございます。

続いての質問なんですが、では今答えていただいた言語や技術を使ってサーバーチームどのような機能を実装したのでしょうか?
これもまさきさんですかね...。ちょっとざっくりとした質問ですみませんが、答えられる範囲で構いませんので、お願いします!

 

まさきはい。機能に関しまして、まずAPIの方はですね、アプリ編の記事でも触れられていると思いますが、基本的にクライアント側に必要な情報を返すためのAPIをいくつか開発しました。
ここでは一つ一つの詳細な話は割愛させていただきます。

CMSに関して言うと、アプリ初回リリース時には管理画面と呼ばれるものはなく、ガチャで排出されるアイテムを自動生成するバッチ処理がメインになっていました。

今現在は私たち管理者がその生成されたアイテムを一つずつ確認できるような画面も出来上がっていますし、アプリ内の必要な情報に辿り着きやすくするための検索機能などをゆうた君とほうく君を中心に実装を進めてもらっているような感じになります。

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

チーム開発で心がけていたことについて

 

しゅんたありがとうございます。

サーバーチームはメンバーが5人いるということで、チームで開発するにあたって何か心がけていたことはありますか?
各々どういったようにしていたのか聞いてみたいと思います。ではこれは将太郎さんからお願いします!

 

将太郎自分はAPI仕様書の作成などを行なったので、実際に仕様書を作った後、それを見てチームが実装できるか、チーム内で仕様内容に齟齬がないかなどは注意していました。

 

しゅんたまさきさんはどうでしょうか?

 

まさきそうですね。心がけていたことですか...。

API側とCMS側でちゃんとコミュニケーションを取りながら開発を進めていきたいなと思っていたのですが、色々と他タスクなども進めつつの今回の開発だったので、これに関しては個人的に反省するところしかないかなと思っています...。

そういったことがありつつも、メンバーの一人一人が開発を進めやすい環境と言ったら少し大袈裟な気もしますが、なるべく自由に開発してもらえるようにするにはどうしたらいいんだろうといったことは実は裏では考えていました。
実際にそうなっていたかどうかはちょっとわかりませんがww。

 

しゅんたはい、ありがとうございます。
では、ゆうたさんお願いします。

 

ゆうたはい、僕はチームという括りで話すとちょっと解釈が違うところがありますね。

API開発だとまさきさんをはじめとして、しゅう君、ほうくの三人体制で開発を進めていたんですが、僕はアプリリリースまでの間はバッチ処理開発を行い、その後もCMSの開発をもくもくと一人で進めるみたいな感じで、誰かと並行して開発することは本当に少なかったです。

ただそういった状況の中で意識していたのは、自分よがりのコードにならないようには心がけていました。
自分だけが理解できる設計や構成、コードではなく、レビューしやすいようにだったり、今後他のメンバーが加わっても開発に入りやすいように書こうとは意識していました。

それが実際レビューしていただいたまさきさんなどから見やすかったかどうかはちょっと分かりませんがww。

 

しゅんたちなみに、『コスパチェッカー』でもチーム開発をしていたと思いますが、その時との違いって何かありましたか?

 

ゆうたもうだいぶ前のことになるので、コスパチェッカーの開発を覚えていないところもありますが、やはりその時はインターン生のみで実施したこともあり、プロジェクトの進め方からチーム開発のあれこれを理解してないまま進めていたというのがありますね。
覚えているのは、SwiftのことだったりiOSの開発の進め方はほとんど分からないまま、とにかく期限と戦いながら進めていたということですね。

ですが、今回は開発に入る前に技術選定だったり調査期間があったうえで開発に取り組めたので、スムーズに開発に入ることができたと思います。そういったところで少し成長は感じました。

ですので、これまではチーム開発というよりかは個人開発のような進め方をしてきましたが、今後はチームで開発を行なってくるようになると思いますので、みなさんが経験した反省点を踏まえて取り組んでいければと思います。

 

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

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

 

しゅんたありがとうございます。
では、しゅう君お願いします。

 

しゅうはい、これはEMoshUらしいと言いますか、EMoshUの良い社風だと僕は思っているんですが、かなり温かいところがありますね。

質問したら何でも丁寧に優しく答えてもらえる環境だったので、僕はそれに甘えて最初の頃はいろんなことを社員の方に聞いていたんですが、さきほどまさきさんも仰ったように、別タスクで忙しそうなのが分かっていたので、自分でどんどん開発を進められるようになるのを目標にして頑張っていました。

 

しゅんたはい、ほう君はどうでしたか?

リモートという環境でしたが、そこも踏まえてチーム開発どうでしたか?

 

※EMoshUでは会社の方針として出社が基本になっていますが、ほうくは遠方に住んでおり、さらに高専3年生ということもあり、例外としてリモートワークが認められています。現在は、リモートワークでのいかなる職種も募集はしておりません。

 

ほうくそうですね。僕だけリモートワークでみなさんと違う働き方をしていたんですが、チーム開発においてはコミュニケーションをできるだけ取るようには心がけていました。

アウトプットをちゃんと出すことを気にかけていて、分からないことがあればSlackやDiscordなどのツールを使って実際に話しながら質問したりしました。

あと、週3日ほどの稼働だったので、今回のスピーディーな開発にキャッチアップするために仕様の変更だったり、そのタスクが発生した背景などには注目して、どういった機能を今自分は開発していて、どんなところに使われるかなどはちゃんと把握するように心がけていました。

アウトプットについても、例えば調査タスクなどは分かりやすくまとめてドキュメントとして残したり、日報に書いてみたりだとか、僕も社内のメンバーが何をやっているか見えづらいし、僕がどんなことをやっているか見えづらいところもあると思ったので、なるべくわかりやすくするための行動はリモートワークをやる上で気をつけました。

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

サーバー構築・構成について

 

しゅんたでは続いての質問ですが、サーバー構築・構成について教えていただければと思います。

これはまさきさんから答えてもらえばと思います。

 

ゆうたそれって企業秘密じゃないんですかww?

 

まさきそうですねww。
詳細についてはもちろんセキュリティの関係上お伝えすることはできないので言葉を選びながらお話ししますが...

APIサーバーとCMSサーバー、あと社内だと開発環境と呼んでいる検証用のサーバーがあります。
あまり深くお話しできないのでこれくらいになりますが、以上が構成になります。

 

Server_Interview-31.jpg

 

 

 

 

 

 

 

後半パートへ

 

ここまでサーバー開発編インタビューの前半パートご覧いただきありがとうございました。
後半戦も引き続き興味深い質問が続きますので、お時間ある方は是非ご覧ください!

 

 

【自社プロダクト】ミヤマアユミのイラストアプリ ~サーバー開発編~(後半パート)|Interview|EMoshU Blog|株式会社EMoshU

EMoshU Blog|今回のEMoshU Blogでは、2021年12月末に無事リリースできた自社プロジェクト(コードネームSina)でどんなことを行ったのかの振り返りと、待望の自社iOSアプリ「ミヤマアユミのイラストアプリ」が実際にリリースされるまでの話をサーバー開発編としてお届けします。