2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
急成長中のレシピ動画サービス『クラシル』を運営する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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには