スタートアップの開発ツールの移り変わりをまとめてみた

![開発ツールの変遷.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27314/4f5fa48f-4757-6659-b4bc-182a9975443c.png)

センシンロボティクスというスタートアップのエンジニア組織を立ち上げて早4年。短いようで長いようで短い4年でしたが、エンジニアの数は業務委託の方も入れると50名を超える組織となりました。
その間、開発業務で使うツールは少しずつ増えたり変わってきたので、この機会に振り返ってみます。
採用面接などでもどんな開発ツールを使っているのか聞かれる事が多いので、2021年12月末時点での開発ツールの紹介も兼ねてのまとめです。

## チャット

僕が入社した時は「**V-CUBE Gate**」というビジネスチャットを使用していました。
シンプルな機能のチャットだったのですが、エンジニアが僕しかいない間はそんなに困らなかったです。

とはいえ、エンジニアが2名になったタイミングで「**Slack**」を導入。最初はエンジニアだけで使っていましたが、すぐに全社員で使うようになり、日々のコミュニケーションに加え、日報や役員の週次メッセージ、システムアラートなどなど、リモートワークでの最重要ツールとして活用しています。

最近はチャンネルやゲストアカウントが増えすぎたので棚卸しをしたり、チャンネルの命名規則を作ったりとルールの整備を行い、もっと人が増えてもカオスにならないように頑張ってます。

## グループウェア（メール、カレンダー、ファイル共有）

僕の入社前から「**Google Workspace**」を使い続けてます。Gmail、カレンダー、ドライブ、ドキュメント、スプレッドシートなどなど、色々活用しています。

ずっとStarterプランだったのですが、大量の画像データを管理する事が多いため容量不足の人が多発して都度追加容量を購入していたり、ドライブの権限管理を厳しく運用したいという要望から、Standardプランへ変更して容量アップ＆共有ドライブで権限管理の徹底をしています。

## ソースコード管理、CI/CD

ソースコード管理は「**GitLab**」を選びました。ホスティング版のGitLab.comです。
GitLab CIというCI/CDが統合されていたのが選択理由です。しかも無料。
最初の頃はタスク管理もWikiもGitLabを使って、必要な情報は全部GitLabにある状態にしました。シンプルで個人的には好きな構成でした。

ただGitLab CIを動かすためにはGitLab Runnerを自前のVMで動かす必要があって、このGitLab Runnerが遅いとか止まってしまうなどのトラブルがたまに発生していて、プロダクトの数が増えてくるとメンテナンスコストやVMコストがどんどん増えていく事態に。

今は、もっと本質的な開発業務に時間を使えるようにとGitHub Enterpriseへ移行してGitHub ActionsでCI/CDしてます。

## Wiki、タスク管理

上述の通り、最初はGitLabのWikiやIssuesを使ってました。
しかしエンジニアだけで使う分には問題なかったのですが、非エンジニアにはGitLabは敷居が高かったようで、非エンジニアを含むチーム全員で情報を共有するのには不向きとなったため「**Backlog**」へと移行しました。
Backlogは非エンジニアにもわかりやすいUIでチームでの情報共有は活発となりました。

一方で、会社全体での情報共有には課題があって、Googleサイトで社内ポータルを作っていたのですが、あまり更新されていなく、GoogleドライブやSlackに情報が散乱している状態でした。

Backlogはプロジェクト管理ツールであるため社内ポータルには不向きと考え、全社での情報共有ツールとして「**Confluence**」を導入。Googleサイトの社内ポータルやBacklogのプロジェクト情報をConfluenceに集約しました。
併せて、Backlogでのタスク管理も「**Jira**」に移行。エピックやストーリーを活用して、より細かなタスク管理を実現しています。

最近はアプリの実装でVuetifyを使っているのですが、FigmaからVuetifyへの書き出しを簡単にしたいというのが課題です。

## オンラインホワイトボード

リモートワークになって不便なのがホワイトボードを使ったMTGができない事です。この課題を解決すべく「**Miro**」を導入しています。まだ一部の人で試用している段階なので、これからの活用に期待です。

## テスト管理

以前はExcelやスプレッドシートでテストケースを作成して管理していたのですが、テストケースの追加や更新がなかなか上手くいかなくて標準化もされず、管理が煩雑になっていました。
そこでテスト管理ツールである「**TestCaseLab**」を導入しました。

テストケースやテストの実行履歴を簡単に管理することができて、リグレッションテストが捗りまくりです。

## アクティビティ可視化

「LeanとDevOpsの科学」という本で開発組織のパフォーマンス指標として以下が紹介されていました。

* リードタイム
* デプロイの頻度
* MTTR（平均修復時間）
* 変更失敗率

そこで、リードタイムとデプロイの頻度を計測しようと思い、GitLab APIとGoogleデータポータルを使ってGitLabのアクティビティを可視化するツールを作ってみました。マージリクエストのリードタイムや処理数≒デプロイ頻度、レビューのコメント数などを指標としてます。

しばらくはこの自前のツールを使っていたのですが、GitLabからGitHubへ移行することとなり、GitHub APIで書き直す元気がなかったので可視化を一旦諦めてしまいました。
自前ツールはメンテナンスが面倒なので同様のツールを探して検証していた時に出会ったのが「**Findy Teams**」です。機能が豊富な上にUI/UXが優れていて使いやすいという素敵なツールでした。

Findy TeamsはGitHubとJiraの情報を可視化して、チームや個人のパフォーマンス分析やボトルネックを把握することができ、チームの状態を俯瞰して確認する事ができます。なによりメンバーが自分の日々のアクティビティを定量化して見ることができ、様々な気づきからスキルアップに繋がる良いツールだと思います。

## ISMSオートメーション

最後に開発とは直接関係ないのですが、弊社は今年の1月にISMS認証を取得しました。
その際に大活躍したのが「**SecureNavi**」です。ISMSオートメーションツールというらしいのですが、ドキュメント・情報資産・セキュリティルール・インシデント・内部監査・eラーニングなどなど、ISMSに必要な情報やアクションを全て一括して管理できるという優れものです。

SecureNaviのおかげでISMS認証の取得はもちろん、その後のISMS運用までスムーズかつモチベーション高く取り組めています。
ISMSってなんか大変そう、面倒そうって印象を持っている方に是非知ってもらいたいツールです。

導入事例に弊社の記事も掲載されているので紹介します。
[ISMS認証取得をゴールにしない。継続的なセキュリティレベルの向上を支える仕組みとは](https://secure-navi.jp/voices/sensyn-robotics)

## ふりかえってみて

開発ツールって組織の文化が色濃く出るものですね。どのツールを選ぶかによって、どんな組織にしたいのかというメッセージも含んでいたのかなと改めてふりかえってみて感じましたね。

これからもどんどん新しくて魅力的なツールが出てきます。エンジニアは特に新し物好きな人が多いし、少しでも効率化を求める生き物なので、これからどんなツールを導入していくのか楽しみです。

ちなみに最近気になるのは情シス周りのツールですね。情シス業務は人が増えるのに比例して忙しくなるイメージなので、情シス業務の効率化は重要課題です。