
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
TABETEのフロントエンドをNuxt.jsでリプレイスする話(全1記事)
リンクをコピー
記事をブックマーク
榊原徹哉氏(以下、榊原):最初に自己紹介になりますが。私は榊原徹哉といいます。好きな言語やフレームワークはVue.jsとか、Rubyが好きです。好きなものはガジェットです。例えば、indiegogoでおもしろいガジェットを漁ったりとか、家をスマートハウス化したりしています。最近の趣味はInstagramで、会社のInstagramを運営しています。良かったらフォローしてください。
今コークッキングという会社で働いているんですが、仕事は「TABETE」というB to B to Cのフードシェアリングサービスをつくっています。まず、その「TABETE」について説明します。飲食店さんが本当は食べて欲しいのに、急な天候の変化でお客さんが想定よりも少なかったり、Twitterでコース料理のドタキャンなどの理由で「食材や料理が余りそうだな」と感じた時に、お弁当としてTABETEに出品します。
ユーザーは出品情報を見て、サービス上でクレジットカード決済をして、指定された時間にお店に行けば、その料理をレスキュー、つまり手に入れることができます。TABETEは、「食べて欲しい!」という気持ちと食べる人(食べ手)を繋ぐサービスです。美味しい料理がお得に食べられるサービスなので、ぜひここにいるみなさまも使ってください。よろしくお願いします。
(スライドを指して)これは現在のTABETEを構成しているアーキテクチャの全体像です。ここに一応Firebaseを使っていたりするんですけど、WebとかAPIとか、バッチとか管理画面とか、そういうものはぜんぶRubyで書いています。先月「Ruby biz グランプリ」というRubyの特徴を活かして、新たなサービスを開発している企業を対象としたグランプリがあったんですけど、大賞をいただきました。
ちょっと待てと。「Rubyしか書いていないって言ってたけど、これってVue.js の勉強会だよね?」と思われた方がいると思うんですけど、 フルRubyで開発している現在のサービスのフロントエンドをVue.jsにリプレイスします!
ということで、仕切り直してTABETEをフロントエンドが理由でリプレイスする話です。
今日のアジェンダです。最初にリプレイスするきっかけの話をして、その次に言語・フレームワークの選定、最後にVue.jsを導入して良かったことなども話したいと思います。まず、リプレイスするきっかけについてです。そもそもリプレイスしようという話の発端は、現在のTABETEのデザインを一新するということが大きな理由です。
現在のデザインはデザイナーさんではなく、リリースのために取り急ぎCOOにデザインしてもらったものでしたが、最近ついに念願のデザイナーを雇うことができました。このタイイミングでTABETEの世界観をより一層出すために、サービスもデザインも一新することになりました。
さて、現在のベースはRubyなので、そこからフロントエンドの見えるところだけを改修するのか、それともすべてを一新するリプレイスをするのかという議論になりました。(スライドを指して)ここ1年のおおまかなスケジュールです。横軸が2018年の1月から2019年の1月で、時間軸です。
最初の3ヶ月ぐらいはサービスの開発やリリースをして、iOSのアプリ開発したり、管理画面をいきなりリプレイスしたりとか、あとはWebサービスの全国版対応やAndroid版の開発など、いろいろやっていました。スケジュールを見てわかるとおり、今運用されているサービスのほとんどの管理画面、API、フロントエンドは、全て3ヶ月で開発したものを用いています。
最初の構想として、リリースの1ヶ月前までは「データベースにアクセスするのは全てAPI経由でやろう」と思っていました。でも、リリースに向けて圧倒的な開発速度を求められたために、中途半端に「もうWebからもアクセスしよう」とか、直接データベースを叩き始めて、しかもロジックをWebアプリケーションのほうに書いたりとか、かなり可読性の悪いことになっていました。
ただ救いとしては、APIはけっこうきれいに書いていて、実は今のAPIを開発する前に、3種類ぐらいプロトタイプ実装をしていて、「どれが一番開発しやすいか」「変化に対応できるか」という議論を行っていました。その結果を反映したことで、突然の方針変更やシステム改修とかは速度感を求められるんですけど、そういうものにもついていけるようなソースコードになっていました。ただ今回はフロントエンドの話なので、その辺はちょっと省略させていただきます。
iOSアプリはWeb開発が終わったあとなので、サービスに必要なAPIのすべてを開発していました。その結果フロントエンドの改修コストは最小限になっていたためいつでも改修できるような状態でした。
ここまで説明したとおり、Webアプリケーションのソースコードが汚いということと、必要なAPIはすべて揃っていたので、改修ではなくリプレイスすることに決めました。
次は「どの言語で開発しよう」とか、「フレームワークをどうしよう」という時の話です。いきなりですが、サーバーはホスティングサービスを利用したいという思いがありました。現在のWebサーバーというのはGoogle Compute Engineというものに載せていますが、通常1台構成で運用しており、テレビ放送があるときにサーバーを手動で増やして、デプロイもCapistranoなどのデプロイツールを使っていないので直接サーバーに入って、ソースコードを直接引っ張ってきたりというような事をして対策をしていたんです。
ただ、APIのほうはGoogle App Engineにのっかっていて、メディア露出の際の負荷対策とかもオートスケーリングがあるのですごく楽だったんですけど、「今の現状をどうにかしたいな」という思いがあったので、Firebase Hostingを使い、同時にJavaScriptにリプレイスする事にしました。Firebase Hostingの導入は学習期間を含めて2時間程度でできるので、みなさんも試してみてください。
JavaScriptに書き換えることは決まりましたが、よく話題になるのがReact.jsにするか、Vue.jsにするかなどのよくある「宗教論争」です。(スライドを指して)これは日本ではなくて世界のGoogleトレンドでReact.jsとVue.jsを比較したものなんですが、Vue.jsのほうが人気があったりよく書かれているということなんですけど、Vue.jsはシンプルで少ないコード量でいろいろできたり、最初の学習コストがけっこう少ないので、Vue.jsを採用しました。
最後に導入して良かったことについてお話しします。
まず初めに公式ドキュメントがとても充実しているのことに、すごく驚きました。フロントエンド界隈では普通なのかもしれないですけど、かなりリッチでした。例えば、サーバーサイドのドキュメントだと、サンプルを落としてきてがんばって起動して、いろんなコードを読んで、「あっ、必要なのはここか!」「じゃあ、いろいろ改変して試してみよう!」みたいな感じの流れなんですけど、Vue.jsはドキュメントを表示しているブラウザ上でいきなり実行や修正できる事に感動しました。
また、コミュニティがDiscordとかにもあるんですけど、とても優しいんです。しかも日本語で質問できるから、GitHubやStackOverFlowにがんばって英語に翻訳して投稿したけど、返事が返ってきてもよくわからないみたいなことが起きません。実際にチャット内に、「Enterキーを押したら送信されて悲しい」とか、「どうやってDiscordを触ればいいの?」みたいなことを書いている人がいるんですけど、「ググれ!」って言われるのかなと思ったら「改行はShift + Enterで」と言われていたりして。これって優しすぎますよね。
また、「決済はStripeを使いたいな」と思っていたので、「Stripe Vue.js」で検索したら、CodePenとかに、もうすでに動くやつがプラウザ上で動作するものが既にあったりしました。
この様に、Vue.js界隈の優しさや先人の知恵の膨大な量により、学習コストが開発速度に大きな障壁にならなかった事が使ってみて良かったと感じたポイントでした。やっぱりVue.jsは楽しいです。
最後になりますが、もともとサーバーサイドのエンジニアだったので、Googleやコミュニティに助けられながらですけど、フロントエンドの開発をするのはとても楽しいです。まだUIやUXの知識とかは全然足りていないんですけど、コミュニティに助けられてばかりなので、逆に貢献できる側になりたいなと思います。本日はご清聴ありがとうございました。良かったらTABETEを使ってください。
(会場拍手)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07