2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
急成長中のレシピ動画サービス『クラシル』を運営するdelyが、 これまでのグロース戦略、エンジニアリング方針、ユーザー調査手法等についてお話しします!(全6記事)
リンクをコピー
記事をブックマーク
渡邊海斗氏(以下、渡邊):みなさんこんばんは。クラシルのiOSエンジニアをしています渡邊と申します。クラシルというか、delyでは2017年6月からiOSエンジニアをやっているので、ほぼ1年ぐらいという感じです。
今回の話はiOSアプリの開発ということで。ちなみにiOSエンジニアとかiOSの開発したことある方はどれぐらいいますか?
(会場挙手)
ありがとうございます。思ったより多いですね。もう少しいないかなと思っていました。開発していない方もいらっしゃると思うので、気軽に聞いていただければと思います。
さっそくですが、iOSアプリの開発はけっこうすることがあります。リリースやテストはもちろんそうなんですが、機能を追加したり、なにか問題があったらそれを修正したりとか、そういったことをやっています。
クラシルは比較的少数でやっています。少人数での開発で全部やるのはけっこう大変なんですよね。でも、1人あたりの時間を増やすわけにもいかないので、基本的には人を増やしたいです。
でも、人を増やすのって大変ですよね。だいたいの方がそうだと思うんですけど、採用するのもすごい大変だし、採用しても会社に合うかわからないし、パフォーマンスをすぐ出せるかわからないし、辞めちゃうかもしれないし。
なので、基本的に全部やろうということは無理で、自分のやることを減らすしかありません。でも、人が少ないのでほかの人に任せるわけにもいきません。なので、基本的に自動化します。
これが1年前、入社時のiOSの開発で自動化しているときは、0です(笑)。これはあかんぞと。さすがにリリースなどを全部手動でやるのはやばいと思って、0の状態から自動化を始めていきました。
まずは定期的に繰り返していることが自動化と相性がいいのでそこからはじめました。絶対「リリース」はするよねと。なのでiOSのリリースを自動化することに取り組みました。「リリースする」といってもけっこういろいろなことがあります。とくにiOSは審査があったりします。
ですが、iOSのリリースで使うツールには最強のものがあって。iOSの開発をしている人には有名だと思いますが、fastlaneというツールがあります。
アプリのビルドをしたり、App Store Connectにアップロードしたりとか、β版配信したりとということをほんの数行コードを書いてコマンドを実行するだけで、この上のようなことをやってくれたりします。
fastlaneを追加した結果、だいたいこれぐらい生産性が上がりました。
……と思いきや、fastlane単体だと、それを自分のPCで動かしたりすると、その間にビルドをしていると、ほかのプロダクトの開発ができない。開発だとGitHubをよく使うと思うんですが、「それをGitHubにマージしたら、なにかする」みたいなこともできません。
なので、これだけfastlaneの力を十分に活かせなので、実質これぐらいしかまだfastlaneの力が出せていません。その力を出すにはCIサービスを使う必要があります。
CIというのは継続的インテグレーション(Continuous Integration)の略です。簡単に言うと、定期的にビルドやテストを実行して、問題があったら早い段階で通知してくれるもの。これは手元のPCを使うわけではないので、並行して開発ができたりします。一番大事なのが、fastlaneの実行ができるというところです。
CIのサービスで、クラシルの開発ではBitriseというサービスを使っていて、すごい使いやすくて、スケジュール機能があって、料金体系も今の開発の型にすごい合っているのでこれを選んでいます。
できるようになったのはこんな感じです。なので、開発がすごく進むようになりました。あと、Slackを使われている方が多いと思うんですけど、Slackから呼び出せます。なので、fastlaneとBitriseを組み合わせると、こんな感じで生産性が上がります。
でも、課題点はけっこうあります。さきほど言ったSlackのコマンドなんですが、Bitriseを呼び出すコマンド、例えばmasterブランチでリリースというワークフローを動かすというコマンドなんですが、けっこう覚えられなくて。一文字でも間違えると「ワークフローの実行に失敗しました」みたいな感じで出てしまいます。あと、すごく味気ないんですよね、コマンドって。
なので、Chatbotにしようと思いました。ChatbotをSlackで動かすには、Slackのアプリを作る必要があります。それをAWSのLambdaを経由してBitriseで呼び出すということをやっています。
こんな感じのbotを作って、実際に導入してみました。なにが一番良かったかというと、Chatbotにすると、一緒に仕事している感がけっこうあります。
(会場笑)
まず、コマンドじゃなくてメンションになるので、お願いしてる感じですね。思わず敬語を使ってしまいます。
一番上のやつだと、「次回バージョンの準備」みたいなキーワードが入っていればいいんですが、「お願いします」ってつけちゃったり、「おつかれさま」と言ってもらえるとなんかうれしかったり。これはほかのチームメンバーなんですが、スタンプをつけて「ありがとう」という気持ちを伝えたくなっちゃう。
(会場笑)
……なので、Chatbotをつけると、生産性が上げるというのはもちろんですが、楽しさが生まれます。でも、やっぱり仕事を楽しくするとそれだけはかどったりとかするので、さらに生産性が上がりました。
生産性が上がると同時に、実は選択肢もすごく広がりました。これはSlackに関しての話ですが、Slackのボタンもできるようになりました。こんな感じで「次のバージョンはどれですか?」みたいなのを出してくれて、このボタンを押したらそれ用のビルドを作ってくれます。
あと、あまり知られていませんが、こういう感じでフォームが出てきて、なにかここを入力して、それでなにかするみたいなこともできたりします。なので、さらに生産性が伸びました。
それでもやはりまだ課題はあります。人間は忘却する生き物なので、僕もめちゃくちゃ忘れっぽくて、この時間にリリースしようと思ってリリースボタンを押さないといけないんですけど、急なタスクが入ったりするとすぐ忘れちゃったりとか、実装に集中しすぎて忘れたりということをめちゃくちゃやってしまいます。なので、ボットに通知してもらおうと思いました。
まず、Bitrise選んだ理由の1つでスケジュール機能という点があります。beta版なんですが、曜日と時間を指定して「特定のこれをやってください」ということができます。現時点ではいくつでも作れそうなのでいい感じだなと。
通知を実際にやってみました。その結果、たくさんワークフローができてしまいました。そして、通知ごとにワークフローを作らないといけないのでたくさんできてしまい、全部GUIでポチポチしないといけないのですごく面倒くさくて。
変更履歴もわからないからやっぱりGit管理したいなぁ、fastlaneでなんとかしたいなと思い、今度はfastlaneのプラグインを作ってみました。
fastlaneのプラグインは意外と簡単に作れます。通知のスケジュールを定義して、Bitriseでそのスケジュールを1時間ごとに実行するようにと設定しておいたら、それに該当する時間になったら勝手に実行してくれるというものを作りました。
簡単にfastlaneのプラグインのテンプレートがコマンドで作れたりするので、GitHubに上げたりとか、gemとして公開したりということもサクッとできます。
実際にボットにいろいろ通知してもらいます。まだレビューが終わっていないPull Requestを朝に通知してくれたり、審査に提出する時間を教えてくれたり、テストを定期的に実行したりということをやっています。
これによって、「これをしないといけないな」とか「これを忘れたらやばい」みたいなことをあまり考えなくてよくなったので、安心感が生まれました。
他にも、さまざまな自動化をやりました。GitHubリリースを自動生成したり、それを自動生成したものをGoogle Calendarに送ったり。なので、こういうことをやって、いつこういう内容をリリースしたというのがわかるようにしました。
チェンジログを書くようにしているんですけど、それもすぐ忘れてしまうので、Dangerというツールを導入してそういうのも全部通知してくれるようにしたりとか。テストを毎日実行して、結果のファイルや、どれぐらいテストが回っているかを通知してくれたりとか。
そんなことをいろいろやって、1年前は0だったんですが、今はガンガン生産性が上がっています。
なので、すごくざっくりなんですが、リリースの担当者、僕なんかは、月あたり2日分ぐらいは負担がなくなったと感じています。2日あれば小さめの機能はサクッと作れたりします。そうじゃないエンジニアも1日ぐらいは負担軽減されたかな、という感じになっています。
その他の効果としては、決まったことを確実にやってくれるので、ミスがなくなりました。ミスしちゃいけないと思って人間がやる部分があるんですが、それがなくなるので心理的に負担が軽減されています。
また、ちょうど今週、僕、月〜火になぜか熱が出て休んでしまったんですが、そんなときがあっても、ほかの代わりのメンバーが、ボットを呼び出すだけでリリースができたりとか。
あとは、IT業界は人材の入れ替わりが激しいと思いますが、そういうときにドキュメントを残さなくてもスムーズに替われるというメリットもあるかなと思っています。
まとめになります。iOSのプロダクトは大変です。でも、自動化するとリソース増やせたり楽になったりします。ちゃんと繰り返し忘れずにやるということは人間は得意ではないと僕は思っているので、そうしたことはちゃんと機械に任せて、やるべきことをやりましょう。
そうやって自動化して、「プロダクトの開発は本質的にどんなことをやるべきか」であったり「こういうことをやりたい」ということに時間を使えるのはすごい楽しいなと思ってやっています。
自動化に興味ある方や大好きな方は、このあと懇親会とかでお声がけいただければと思います。以上で終わります。ありがとうございました。
(会場拍手)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05