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

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

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

もくじ

 

 

 

 

 

 

 

 

 

後半パート

 

今回は自社プロダクトブログ第二弾として「サーバー開発編」をお届けします!
この記事はサーバー開発編インタービューの後半パートになります

前半パートをまだご覧になっていない方はこちらからご覧ください!

 

 

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

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

 

 

 

 

 

 

 

バッチ処理と管理画面について

 

しゅんたでは続きになりますが、バッチ処理と管理画面について少し詳しく聞いてみたいと思います。

ゆうたさんお願いします!

 

ゆうたはい、ちょっとだけ語らせてもらってもいいですかww?

 

しゅんたもちろんです!
ゆうたさんがいなかったらこのサービスはできなかったと言われていますから!

 

ゆうたでも、この後の質問内容にも被ってくるところがあるので、話せるところについてお答えしますね。

まず、バッチ処理というのはアプリのガチャから排出されるアイテムを自動で生成させるための機能と言いますか、処理になります。

こちらがアプリの主力商品になるものなので、ユーザー目線で思わず購入したくなるようなアイテムにしたいなと思っていました。
実際にアイテムを作る前の調査期間では、どういったレイアウトが良いのか、配色が良いかのなどの議論を重ねたのを覚えています。

また、ロジックなども何日もかけてホワイトボードに書き出すなどして入念に考え、複雑になりつつも、正常に動作するよう心がけて作りました。
今のところリリースして数ヶ月経ちますが、大きな問題もなく順調に動いてくれています。

CMSに関しては、先ほどもあったようにリリース時はログインの機能くらいしかなかったのですが、リリース後に徐々に開発を進め、今では生成したアイテムの内容を見ることができるようになっています。

CMSは今後も開発を続けてより高機能なものに仕上げていければと思います。

 

しゅんた僕はあまりバッチ処理については詳しく分かっていないのですが、ゆうたさんが会議室に籠って一人でホワイトボードに書きながら設計を考えていたのが印象的です。

この辺ってしゅう君とかは理解しているものなんですか?

 

しゅう実装の部分はちゃんと見たことはなくて、たしかに会議室のホワイトボードに色々書いていたのは僕も覚えています。
難しいというかパッと見ても複雑そうだなとは思うので、苦労して開発したんだなと思っていましたwww。

 

まさきロジックをね、組み立てていたんですよね。
自分の頭の中を整理しながらね。

 

ゆうたそうですね。

 

しゅんた大丈夫ですか? もうゆうたさんしか触れないゾーンになっていませんかww?

 

ゆうたいえ、そこは大丈夫だと思います!

 

Server_Interview-22.jpg

 

 

 

 

 

 

 

難しかったところ・苦労したところ

 

しゅんたそうですか。

では、少し話題にも挙がりましたが、アプリリリースまでで一番難しかった実装はどの部分だったんでしょうか?
まさきさんからお願いします!

 

まさき私の方は直接的に特定の機能を実装したというようなことはほとんどやっていないのですが、APIの最初のベース部分を作るところで、Go言語が良くも悪くも自由だったりするところと、自分自身もキャッチアップしながらという事情もあったので、何をどうしたらメンテナンスしやすいかなと考えながら進めていました。

最初はもちろん右も左も分からない状態からスタートしたので、その辺でだいぶ苦労したと言いますか悩みながら悪戦苦闘した日々を送っていたと思います。

 

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

 

ほうく難しかった機能...。
難しかった実装で言うと、最初の頃はまさきさんが作ったAPIのベースに僕が機能を追加していく実装をしていた頃は進め方が難しかったなと思います。

ですが途中から"しゅうさん"が加わって...。

 

しゅんたしゅうさんwww。

 

Server_Interview-6.jpg

 

ほうくなんか”しゅう君”だと年上なので馴れ馴れしいかなと思ったのでww。

そうですね。しゅうさんが加わってよりスピーディーになったのを覚えています。
初期段階だったので、一週間ぶりに見たらコードもすごい変わっていて、「やばい、進んでる!」と思いましたね。

それに沿って実装していくときに、変更した内容にキャッチアップしながらテスト書いたり、新しいAPI実装していたところが難しかったことかなと思います。

ただ、人のコードを読んで理解して、自分でも実装していく流れが良い経験にもなりましたし、勉強にもなりました。

 

しゅんた要するに、しゅう”さん”がすごかったとww?

 

しゅういやいやwww。

 

ほうく本当にすごかったです!
一週間あったらものすごい進展があったので、びっくりしちゃいました。

 

しゅんたそんなすごかったしゅう君は難しかったところありましたか?

 

しゅう難しかった実装だと、正直全部難しかったですけど...。

この後の質問で話そうと思っていたんですけど、僕自身結構設計とかの知識があって、修正のしやすさやテストのしやすさを考えていたんですが、トランザクションを実装するところでどうすれば影響範囲が少なくて実装できるかなどを考えるところは難しかったですね。

トランザクションのベース部分はまさきさんが実装していたものがあったので、そこに実装を加える形ではあったのですが、影響範囲を考慮した実装なんかは難しかったですね。

 

Server_Interview-36.jpg

 

しゅんたしゅう君とまさきさんが何か難しい話をしている場面を頻繁に見かけていたので、そこらへんが本当に苦労したんだろうなとは思いました。

では、最後にゆうたさんお願いします!

 

 

ゆうたそうですね、これも話のメインはバッチ処理になってしまうんですけど...。
みなさんが目撃していたというホワイトボードに色々書いていたところですかね。

バッチ処理のロジックを組み立てるところで、パターン数を増やすために画像の組み合わせを工夫して、できるだけ多くのアイテムが作れるようにしました。
その過程での組み合わせの判定だったり、画像書き出しの部分が複雑になっていたので、僕はホワイトボードに書いて全体像が常に見れる状態で作業していましたし、ここが一番時間のかかったところでした。

 

 

 

 

 

 

 

楽しかったところ

 

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

では楽しかったところはありますか? ほうく君からお願いします!

 

ほうく楽しかったところは、開発していく中で自分の知らないツールとか技術に触れられたことですね。

Go言語は知っていたのですが、ユニットテストのようなテストは今まで書いたことがなかったり、テストの中でモックを使ってデータベース部分のテストをするようなことはこれまで経験が全くなかったので、その概念とか使い方から調べて理解して実装して、動作するものが作れたことは楽しかったことですね。

 

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

 

しゅう先ほどほうく”君”が...ww。
ほうく君が言っていたんですけど、その「コードが結構変わっていた」みたいな。結構そこらへん自由にやらせてもらっていたところが楽しかったです。

もともと自分でも設計やアーキテクチャの部分は勉強していたところもあって、元々あったコードをどうより良くしていくかを考えられたのは楽しかったです!

 

しゅんたはい、ではゆうたさんお願いします。

 

ゆうた僕もしゅう君と似たところで、自分の思い通りに進めさせてもらった点は大きいですね。

僕はAPI側の開発には携わっていなかったので、一人で進めるところが多くて自分で考えて進めるところもたくさんあったので、その実装をやりきれたところは楽しかったですし、実際にその処理を動かしてみて、初めてガチャのアイテムが作れたときは興奮しました。

ずっと話には出ていますが、バッチ処理のロジック部分は自分の力で考えて考えて、トライ&エラーを繰り返して完成させたものなので、自分の想いが乗っかっているコードかなと思いますし、もう一度ゼロから同じ処理を書くとなっても難しいんじゃないかなと思います。

 

しゅんたバッチ処理ができたときハイタッチしてましたもんねww?

 

ゆうたはい、そうですねww。
実際にログを流しながらテストを繰り返していて、一番最初に成功してログが流れたときは嬉しかったですね。

 

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

 

まさきはい、私の場合は今回の開発全てが楽しかったなと思っています。

もともと自社のプロダクトやサービスの開発をやりたいという想いがあって、EMoshUに入社した経緯がありますので、ここに関しては終始”ワクワク感”が出まくりでした。

 

※まさきさんはこの”ワクワク感”という言葉を大事にされています。詳しい内容を知りたい方はぜひこちらのブログ記事もご覧ください!

 

【インタビュー】EMoshUのエンジニアマネージャー雅樹さんが語るEMoshUについて|Interview|EMoshU Blog|株式会社EMoshU

EMoshU Blog|本日はEMoshUのエンジニアマネージャーである、雅樹さんへのインタビュー記事を公開します!

 

 

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

 

将太郎サーバーチームとの関連で言うと、初めて開発環境のサーバーとアプリで動作確認を行なってちゃんと動作したときですかね。

 

まさき初めてちゃんとサーバーとアプリで疎通できたときですね。
「できたぞ!!」って思いましたね。

 

将太郎そうですね。あの時はとても楽しかったです。

 

Server_Interview-20.jpg

 

 

 

 

 

 

 

はまったところ・詰まったところ

 

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

難しかったところと少し被る内容になるかもしれませんが、サーバーチームの開発ではまったところ・詰まったところはありますか?

アプリチームだとえつし君が広告の実装ですごいはまっただとか、最後の申請回りで大変だったなどがありますが、サーバーチームはどうだったでしょうか?

比較的スムーズにできた感じですか?

 

まさきwww。

 

ゆうた僕はありますねww。

 

しゅんたはい、どうぞ!

 

ゆうたリリース前というよりかはリリース後のCMSを開発していたときなんですが、データベースから膨大な情報を取ってくる処理のところで、最初すんなりと機能としては実装できたんですが、処理がどうしても重くなってしまってたところがありました。
機能として使えはするんですが、あまり使い勝手は良くない状態でした。

自分でも負荷を軽減するために試行錯誤したのですが、新機能の実装も進めなければならなかったので、あまり多くの時間を割けずに重い処理のままになっていました。

そんなところに救世主が現れたんです!!

 

しゅんたおぉ!!

 

ゆうたいつもはAPIの開発をしていたしゅう君なんですが、タスクの進行状況の兼ね合いもあって一日だけCMSの実装を手伝ってもらったことがあったんです。
実装してくれたのは別の機能だったんですが、その中に負荷を軽くするヒントになる一行のコードがあったんです!

「こんな書き方があったんだ!」と思いながらも、それを参考に自分でも修正してみたところ見事に負荷を軽減させつつ、今までの機能のまま実装することができました。


そのとき思いましたね。 「この人は天才だ」と。

 

Server_Interview-28.jpg

 

将太郎www。

 

しゅういやいやww。そんな大したことしてないですよ。

 

ゆうた僕は探しても探してもその答えに辿り着けなかったので、すごいなと思いました。

 

しゅう嬉しいです。ありがとうございます!!

 

しゅんた他は何かありますか? 何か言っておきたいことでも大丈夫です。

 

しゅうアスペクト比の問題とかはどうですか?

 

まさきあー、たしかに扱いをどうするのかについては考えましたね。

 

将太郎結構議論したような気がします。

 

しゅんたどういった内容だったんですか?

 

まさきiPhoneの端末によって画面サイズが異なるので、各画面サイズに対してどうやって対応するかみたいな課題があったんですが、それはアプリ側とサーバー側の両方が一緒になって議論しました。

 

Server_Interview-38.jpg

 

しゅんたそうだったんですね。ありがとうございます!

 

 

 

 

 

 

 

学びになったこと

 

しゅんた質問も残り2つになりました。

みなさんの中で学びになったことはありますか? 僕は個人的にベテランの将太郎さんやまさきさんが、まだ学ぶことはあるのかという疑問を抱いているのですが...。
将太郎さんから何かありますか?

 

将太郎その点で言うと、実はアプリとサーバーがセットになったサービスをゼロから作ったのは今回が初めてだったんですよ。
そういう意味でゼロから作れたことは学びになったと思います。

 

 

 

 

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

 

まさきはい、私もC向けのサービスをゼロから開発したことが全くなかったです。

これまでは前職でB向けのサービスに携わってきたり、クライアントワークでも既存のサービスの開発を行うとかで本当にC向けのゼロからの開発は初めてでした。
そういった新規開発の部分で知見やノウハウを得ることができたかなと思います。
あとは課金回りの対応で、サーバーサイドでレシート検証するとき(アプリ内課金)の処理の流れは今まで扱ったことがなかったので、今回実際に触れてみて学びになったかなと思います。

 

しゅんたありがとうございます。
続いてゆうたさんお願いします。

 

ゆうた僕はPHPという言語とLaravelというフレームワークの理解が深まりました。
PHP自体もバッチ処理の開発に入るまで約半年ほどしか経験がなかったのですが、今回の開発を通じて色々と知識の量が増えました。

Laravelに至っては調査のときに触れた程度だったんですが、今ではだいぶ機能追加もスピーディーに実装できるようになってきています。

 

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

しゅう君とほうく君は他の会社でもインターンシップの経験があると思いますが、EMoshUならではの学んだこととプロダクトを通じて学んだことのどちらもあれば聞いてみたいなと思います。
しゅう君からお願いします。

 

しゅうそうですね、さっきほうく君が言っていたように今まで使ったことがなかったツールを触ることができたというのと、今までは結構我流でやっていた部分もあったので、SQLの記述などをプロから吸収できたことはかなり学びになりました。

もう一つあって、自分の実装によってサービスにバグが発生したことがありました。
僕は今までそんな経験がなかったので、そういったところで改善策を話し合うための会議のアジェンダの書き方を純さんやまさきさんにサポートしていただいて、ミスしたときの反省と改善を行う部分でも非常に学びになりました。

 

しゅんた僕もそこは思うところがあって、おそらく他の会社でインターンをやっていたらこういったバグや不具合が起こっても議論の中心には社員の人が入って行うことになると思うので、インターン生が最後まで責任を持って進めるというのはEMoshUらしいのかなと思いました。

では、ほうく君どうでしょうか?

 

ほうく僕はEMoshUの前に他の会社でインターンをした経験があったのですが、何かプロダクトを作るということは今回が初めてで、細かいところでGoとかPHPとかのコードの部分で勉強になったことはあるんですが、それよりもC向けのさらに課金が発生するサービスではどういったことを気をつけなくてはいけないかだったり、CMSという管理ツールでアプリのデータを管理することも今回初めて知りました。

個人や学校の中だけで開発をやってきていたら絶対に触れられなかったことを、今回のサーバー開発を通じて体験できたことはとても有意義だったなと思います。

 

Server_Interview-7.jpg

 

 

 

 

 

 

 

今後やっていきたいこと

 

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

では最後の質問です。今後どういったことをやっていきたいですか?
しゅう君からお願いします。

 

しゅう自分の失敗からの視点になりますが、バグや不具合を極力出さないようなプロダクトにはしていきたいですね。

あとは、今後開発メンバーが増えていったときにチーム開発がスムーズに行えるようなわかりやすいコードが書けたらなと思います。

 

Server_Interview-27.jpg

 

しゅんた素晴らしいですね。ありがとうございます。

ほうく君お願いします。

 

ほうく僕は最近インフラ寄りのタスクを行なったことがあって、そこでインフラについて深く考える機会があってとても新鮮に感じたので、これまではGoとPHPでひたすらコードを書いてきましたが、もし機会があればインフラの部分もタスクをやってみたいなと思います。

あとは今後どんどん改修を重ねていくと思うので、保守性のあるコードを書いていきたいと思っています。

 

しゅんたありがとうございます。
僕個人的には一度ほうく君と直接会ってみたいですね。
コロナのご時世やまだ学生ということろもありますが、共にプロダクトを作った仲間として一緒にご飯食べたりしたいですね。

では、ゆうたさん!

 

ゆうたCMSの方がまだまだ開発がスタートしたばっかりで、機能も少ないです。
今後アプリと連動する部分はもちろんのこと、より多機能にしていって、CMSを見ればアプリのことはすべてわかるようなものにしていければなと思います。

あと、僕は今までAPIの開発に全然携わることができていなかったので、Go言語をしっかり学んでAPIの開発もサポートできるようにしていきたいなと思います!

 

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

では、まさきさんお願いします。

 

まさき観点としては2つありまして、まず作業的な面でお話しすると、現段階でリリースしたとは言ってもまだまだやりたいことややらなければならないことが山ほどあって、機能の追加だったり、内部的に改善できるところを修正していくところをどんどんやっていきたいなと思っています。

あとは個人的にGo言語自体の理解をもっと深めていきたいです。

もう一つは、今回のアプリですごくクオリティの高い商品が出来上がったなと思うので、これをいかに一般の人にアプリの存在を知ってもらうかの部分に力を入れていきたいなと思います。
まずは身近なところからこういったアプリがあるということを少しずつ広めていければと思います。

 

しゅんたありがとうございます。
では最後に将太郎さん、お願いします。

 

将太郎はい、サーバーチームで言うと開発はほとんど携わっていなくて、開発開始当初はコードレビューくらいは自分もやっておこうかなと思っていたんですが、早々に時間が足りなくて全てまさきさんに頼ってしまいました。

なので、時間に余裕があるのが前提になってしまいますが、サーバーチームのコードレビューをやってみたいなと思いますし、Go言語書いて何か実装してみたいとも思っているので、何か簡単なタスクがあればやってみたいです。

そのときはしゅう”先輩”に色々教えてもらおうと思うのでよろしくお願いしますww。

 

Server_Interview-19.jpg

 

しゅうはいwww。

 

しゅんたまだまだやりたいことだったり、やらなければいけないことがたくさんあるということで、これはGo言語に強いエンジニアを募集しているということですかね?

 

まさきwww。そこにたどり着くんだね。

 

しゅんたはい、本日用意していた質問はこれで以上になります。

みなさん長々とインタビューにお付き合いいただきありがとうございました!!

 

 

 

 

 

 

 

おわりに

 

サーバー開発編後半パートは以上になります!
前半パートを合わせてご覧いただいた方、長々とお付き合いありがとうございました!!


今回のブログを通して、初めての自社プロダクトでサーバーチームがどのように活動していたかがかなりわかっていただけたと思います。
今後はより改良を重ね、多くのユーザーに触っていただけるアプリになるようサーバーチームも力を入れていきます!

また、チャンスがあればまた新しいアプリやサービスにも挑戦してみたいと思っています!
そんなぐんぐん成長しているEMoshUにご興味を持たれましたら、ぜひ一度ご連絡いただければと思います!!

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

 

Server_Interview-8.jpg

 

 

 

 

 

 

 

募集要項

 

 

 

 

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

 

 

 

 

関連記事

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

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