Sider Blog

コードレビュー自動化サービス「Sider」を運営するSider株式会社のコーポレートブログです。

新しい解析結果ページをリリースしました

こんにちは。プロダクトチームの渡邉です。Siderでは、プルリクエスト上で発生した警告を確認し、その重要度に応じて、ユーザーが対応、未対応の選別ができる解析結果画面を提供しています。

この度、この解析結果ページのデザインをリニューアルしましたので、ご紹介します。

f:id:sideci:20181004181752j:plain

新しい解析結果ページでは、いくつかのレイアウトの変更を行っておりますが、機能に変更はありません。Siderではより快適なユーザー体験を提供するために、今後とも継続的にデザインの変更を行っていきます。

新しい画面についてフィードバックなどございましたら、お気軽にSiderの右下のチャットからお問い合わせください。


あなたのチームの開発効率向上に!
Siderの自動コードレビューを14日間の無料トライアルでお試しください!

CircleCI×Sider 合同 Meetupを開催しました!

去る9月13日、GINZA SIX10階にある株式会社プレイドのオフィスにて、CircleCI/Sider合同Meetupを開催しました。

CircleCI、そしてSiderを普段ご活用いただいている企業四社の担当エンジニアのかたより、各社におけるSiderやCircleCIの活用法について、様々なお話を聞かせていただきました。

当日の会場提供にご協力いただいた株式会社プレイドの真新しいオフィスは、室内に芝生などがあり、とてもおしゃれで広々とした空間でした。

f:id:sideci:20181001184553j:plain
(サッカーボールもある!)

まず最初にご登壇いただいたのは、会場ホストでもあった株式会社プレイドの駒崎幸之氏。 ITベンチャー企業にてフロント、DB、インフラ、開発環境改善業務を経て、2017年6月より株式会社プレイドでKARTEの開発に携わる駒崎氏は、『PLAIDにおけるCI/CD環境 (スライドURL: https://speakerdeck.com/komukomo/development-and-deployment-at-plaid )』 というタイトルで発表してくださいました。メインとなる開発言語がJavaScriptのプレイドさんでは、開発フローでGitHubやCircleCIを活用していること、またリリースフローではNetflixのOSSであるSpinnakerを利用していることなどをご説明いただきました。

f:id:sideci:20181001184645j:plain
プレイドのリリースフローを表すスライド

二人目の登壇者はGVA TECH株式会社のCTOである本田 勝寛氏。主にスタートアップにてソーシャルゲーム・アドテク・シェアリングエコノミー領域に携わった後、2017年9月、契約書のAIによる判定サービスや、契約書の雛形ダウンロードや作成サービスを提供するGVA TECH株式会社のCTOに就任された本田氏は、『Siderで運用コスト下げて創業フェーズを乗り切る(https://www.slideshare.net/KatsuhiroHonda/sider-114364294)』というプレゼンタイトルそのままに、自動コードレビューツールであるSiderを利用してコーディング規約をチームメンバー間で統一していることや、プロダクトを個別ではなく全体的な最適化を図っていることなどについてお話いただきました。

f:id:sideci:20181001184944j:plain
(このプレゼンを凝縮したかのようなスライド)

つづいては、日本だけでなく海外にも進出しているフリマアプリを提供する、株式会社メルカリより鈴木祥真氏がご登壇。2016年よりメルカリで1人目のSoftware Engineer in Test を務められ、現在はマイクロサービス化方面で奮闘なさっているという鈴木氏は、『ソフトウェア開発のフィードバックループ( https://speakerdeck.com/shomas/feedback-loops-in-development )』をテーマに話してくださいました。デザインレビュー、コンパイル、コードレビューなど開発のサイクルのさまざまなステージで発生するフィードバックとその時間やコストなどについてお話しいただいたのですが、中でも印象的だったのが『HRT原則』です!鈴木氏はコードレビューの際に「Humility (謙虚)」「 Respect (尊敬)」「Trust(信頼)」という3つの要素からなる『HRT原則』を大事にされていて、問題が発生したときは「チーム対問題」として捉え、人格攻撃をしないように心がけている、ということでした。これは開発者だけでなく、あらゆるチームに活用できる考えではないでしょうか。

f:id:sideci:20181001185047j:plain
デザインレビューについて説明する鈴木氏

そして、この夜のトリを飾ってくださったのは、株式会社クラウドワークスの五十嵐 英樹氏でした。「より快適に開発がしたい」をモットーに、インフラからCI/CD、ChatOps、開発プロセス改善まで幅広く活動されてきた五十嵐氏は、2015年より株式会社クラウドワークスにてメインサービスである日本有数のクラウドソーシングプラットフォーム、CrowdWorksの開発に取り組んでらっしゃいます。本Meetupでは、『CrowdWorksにおけるCircleCIとSiderの活用法 ( https://speakerdeck.com/hideki/how-to-use-circleci-and-sider-in-crowdworks )』について講演していただきました。CircleCIに関しては、GitリポジトリをShallow Cloneして速さの改善を行っていることや、キャッシュを一斉にクリアするための戦略、CircleCI 2.1で可能になる機能などをレクチャー。続いてSiderの活用事例として、五十嵐氏は現在各リポジトリ言語の主要Linterを有効にされているそうなのですが、そのうえでRuboCopやQuerly、Misspellなどをどのようにカスタマイズして活用しているかという具体的な例を紹介していただきました。

f:id:sideci:20181001185138j:plain
Sider内でのRuboCopのカスタマイズ方法について話す五十嵐氏

以上、四つのプレゼンすべてが内容の濃いものだったにもかかわらず、休憩も挟まずマラソンのように駆け抜けた本Meetupでしたが、総勢24名の参加者の皆さんからは意欲的な質問が活発に飛び交い、非常に盛り上がった会となりました。また、会終了後の懇親会でも、ピザを片手に、参加者の皆さんが登壇者のかたを囲み、さらに熱心にお話されている様子も見受けられました。

ご来場いただいたみなさま、登壇者のみなさま、会場提供くださった株式会社プレイドさん、Meetup共同開催にご協力くださったCircleCI Japanさん、どうもありがとうございました! Siderでは今後もMeetupを開催していきますので、弊社のDoorkeeperConnpassもぜひフォローしてみてください。

f:id:sideci:20181001185225j:plain
左から: 駒崎幸之氏(株式会社プレイド)、角幸一郎(Sider)、金洋国氏(CircleCI Japan) 、 野田陽平氏(株式会社プレイド)

またこの日、9月からの新ノベルティグッズとして、Siderロゴの入ったキューブタイマーがお目えしました!こちらのタイマーは、今後のMeetupやGitHub Universeなどでも随時プレゼントしていく予定です。ぜひゲットしてくださいね! f:id:sideci:20181001185304j:plain

(お知らせ:Siderでは毎週木曜日に新着コンテンツをお届けしていますが、次回の投稿はGitHub Universeの関連で、10/15の月曜日を予定しています。ぜひチェックよろしくお願いします!)


あなたのチームの開発効率向上に!
Siderの自動コードレビューを14日間の無料トライアルでお試しください!

外部コラボレーターへのシート割り当て機能を改善しました

こんにちは。プロダクトチームの木庭(@ybiquitous)です。

Siderでは、オーガニゼーションオーナーはプライベートリポジトリの解析結果を閲覧するユーザーに対して、シートを割り当てる必要があります。 従来はオーガニゼーションのメンバーのみにシート割り当てが可能でしたが、今年の8月から外部コラボレーターへのシート割り当てに対応しました。

しかし、一部のユーザーに混乱を招くUIであったため、改善されたUIをこのたび9月14日にリリースしました。

こちらが古いUIの一例です。“Outside collaborators”の下にコラボレーターがずらっと並んでおり、情報過多の印象を与えます。

古いUIの一例
古いUIの一例

今回のリリースでは、Siderユーザーの検索ボックスUIが追加され、外部コラボレーターを簡単に検索できるようになっています。 そして、未割り当てのコラボレーターは初期状態では表示されなくなりました。これにより、視認性が向上しています。

コラボレーター検索
コラボレーター検索

このUIを試すには、以下のステップが必要です(シートプランを購入済みのオーガニゼーションに限ります)。

  1. Siderダッシュボードにアクセス。
  2. 管理者権限をもつオーガニゼーションのリンクをクリックし、オーガニゼーションページに移動。
  3. “Users”タブをクリック。
  4. Siderにサインアップ済みの、そのオーガニゼーション関連ユーザーが1人でも存在すれば、検索ボックスが表示されます。

これにより、そのオーガニゼーションのメンバーでなくとも、コラボレーターとして任意のユーザーにそのオーガニゼーションのシートを割り当てることができます。

今後もSiderプロダクトチームはUIを定期的に改善していく予定です。

フィードバックやご不明点がございましたら、お気軽にSiderの右下のチャットボタンよりお問い合わせください!


あなたのチームの開発効率向上に!
Siderの自動コードレビューを14日間の無料トライアルでお試しください!

エンジニアが作りたいものを本気で作るための起業という選択肢。起業、Pivot、レビュー支援サービスSiderの着想から現在、未来 (3/3)

最終回: 失敗と成功を重ね実感した、エンジニアの起業の強み

この秋、Siderが初めてGitHub Universeにスポンサーとして参加することを記念して、事業立ち上げから、コードレビューサービスであるSiderを提供する現在にいたるまでを振り返る、記念シリーズを三週続けてお届けしています。 前編ではCEOである私がどのように起業を志しSiderを立ち上げたか、中編ではSiderの歴史についてをお伝えしました。 シリーズ最終回となる今回は、Siderの成功と失敗から学んだこと、エンジニアの起業がなぜ有利なのかなどについて、書いていきたいと思います。

Siderを作っていく中で学んだこと

私がSiderを作っていく中で学んだことを大きく分類すると、次の3つが非常に大きいポイントだったと思います。

  1. ソフトウェア開発は難しい
  2. デザインは大事
  3. 現金や売上は大事

ソフトウェア開発は難しい

当たり前のことに感じるかもしれませんが、ソフトウェア開発は難しいです。プロダクトの種類によって、必要とされるリソースや技術は異なるうえに、Siderというプロダクトの性質上、専門的スキルが必要とされました。

求められるリソースの違い

Siderを始める以前に開発していた製品の開発工数は、短いもので1人日、長いものでもiPhone・Android・サーバサイド全部含めて6人月程度と、比較的小さいものでした。そのため、Siderのプロトタイプやベータ版の開発にも同等の工数を見込み、4人月程度の工数を掛けました。

ただし、これではSiderは全く正常に動作しませんでした。インフラの不安定性、最良ではないユーザ体験、継続的な機能追加の難しい設計、高いサーバコスト、沢山の問題がありました。改修には多くの時間を要しました。

実際に開発して提供する製品・ソフトウェアの種類によって、必要となる開発リソースは大幅に違います。日本のスタートアップ企業では開発リソースにそれほどの工数を必要としないものを提供している企業も多いかと思います。その経験や前提で走り始めると、必要なリソースを見誤ります。ソフトウェア開発の難しさの一つです。

求められる技術セットの違い

「必要なリソース」は人数の話だけではなく、開発者の技術セットについても当てはまります。iOSのアプリケーションを作ることと、Job Queueを用いてDockerのコンテナをコントロールするインフラ・アプリケーション基盤を作ることは、必要となる技術スキルが全く異なります。

「フルスタックエンジニア」という肩書き、役割、職能の方はスタートアップ企業において非常に重宝されます。企業のバーンレート(毎月の支出)を低く抑えながらプロダクトを提供していくためには、フルスタックエンジニアが必要です。私もUIの簡単なデザイン、プロダクトの導線の設計などの企画面、iOSやAndroidなどのスマートフォンアプリケーション、Ruby on Railsを用いたサーバサイドの開発(もちろん他のWebフレームワークも使えますが)、AWSなどのIaaSを使ったサーバの運用など、一通りのことが行える、いわゆる「フルスタックエンジニア」です。

ただし、私のスキルだけでは、Siderを安定稼働させることや、拡張性の高い良い設計にすることなどはすぐには行えませんでした。学びながら進めていくことはできますが、それでは開発が思うように進まず、時間が掛かってしまいます。

「すべてのことを知っている開発者」になることは非常に難しいです。だからこそ、「この製品に必要なこの技能を有している開発者」をメンバーに迎え、チームを作っていくことが必要です。

専門的なスキルの要求

Siderは静的解析を軸にコードレビューの自動化を提供しています。そのために静的解析器への積極的なコントリビューション(RuboCopなど)を業務として行っていますし、Siderの開発のために、それらのコードをよく読み、お客様からの問い合わせの際に静的解析のライブラリを読んだ上でのサポートなども行っています。

また、より広い範囲、より多くの内容、より役に立つ内容をSiderのコードレビューで提供していくため、自社製のコードの解析器の開発も行っています。 例: Querly、Goodcheck、PHPQuerly

これらにはソースコードを解析するためのプログラムを書く技能が必要であり、非常に専門的な技能が要求されます。サービスの独自性、高い価値を提供していくためには、尖った・突き抜けた、高い技能が製品のコアとなる部分に必要とされます。 もちろんサービスを提供しながら、作りながら、学習していくことも多くあると思います。ただし事業によっては、それでは速度が間に合わないため、初めから高い専門技能を持った開発者が必要です。

ソフトウェア開発は本当に難しいのです。

2.デザインは大事。

良い製品には良いデザインが不可欠です。見た目の面・ぱっと見の印象の良さも必要ですし、良いユーザ体験のためにも必要です。初期のSiderはエンジニアのみで開発していたため、見た目は非常にダサかったです。(初期のデザインについては前章のブログ記事をご覧ください。) ぱっと見の印象で、「モダンなイケてるサービス」かそれとも「趣味で作っているサービス」か、といった製品そのものの価値に対する印象まで変わります。Slackが一気に普及したのも、機能面についての要因もありますが、デザイン、ユーザ体験の面も大きな理由かと思います。

また、スタートアップの初期はユーザへのヒアリングが重要です。もちろんCEO、CTOも行いますが、ユーザに寄り添えるデザイナーがいることは大変貴重だと思います。特に法人向けのサービスの場合、展示会などへの出展なども多くする必要があり、ブースのデザインやノベルティグッズのデザインをメンバーとして一緒に取り組んでくれるデザイナーの存在は非常に重要です。

f:id:sideci:20180919133643j:plain
(ブースの一例)

3.現金や売上は大事

現金や売上は選択肢を増やし、心に安寧をもたらす

現金や売上は選択肢を増やし、心に安寧をもたらす 当たり前のことですが、会社に現金があることや、売上があることは重要です。 売上があると、会社が長く走り続けられるようになる、もしくはずっと黒字経営で無理せずに事業を展開していくことができます。心の安寧が得られます。

また、現金が多くあれば多くの選択肢を得ることができます。開発者を多く雇い、機能開発への積極的な投資や、販売活動への投資など、多くのことが可能になります。当然ではありますが、現金は重要です。

創業社長エンジニアはエンジニアではなくなる

資金調達は社長の時間を多く必要とします。社長がエンジニア業務も兼任している場合、資金調達のタイミングではコードを書く時間が無くなり、サーバの運用保守に当てられる時間も少なくなるので、それまでにそのほかの開発者の方をチームに加える必要があります。

その後はチームをスケールするための仕事などが多く待っているので、社長がコードを書くことができる時間は減っていきます。そですから、コードを書き続けたいエンジニアの方には、社長というポジションは残念ながらおすすめできません。

正しい事業計画が必要

ビジネスの成長のためには多くのリソースを必要です。開発、販売、認知、様々なことに成し遂げるためには、人とお金が不可欠です。開発者を主として構成されたチームの場合には、受託開発などを行いながらサービスを作っていくという手段もありますが、そうでない場合や、競合企業が多くあるマーケットに製品を展開している場合、受託開発をしている時間はありません。

製品開発の際に必要な時間・工数は少なく見積もられがちですが、事業計画、必要な資金額などについても、経営者は甘く見積もりがちです。事業を継続的に成長させていくためには、正しい事業計画が必要です。エクセルやGoogle Spreadsheetと向かい合うことはエンジニア社長にとっては退屈な作業ですが、非常に重要な仕事であり、欠かすことはできません。

エンジニア起業家の良い点

失敗しても、生きていける。生きている。

多くのスタートアップ企業は1年以内に、「チームが崩壊する」「現金がなくなる」等の理由によって、解散や冬眠に追い込まれます。しかし、エンジニア起業家(エンジニア社長)の良いところの一つとして、「生きていける」ということがあげられます。

褒め言葉かどうか微妙ですが、私は、同じ頃に起業した友人や、株主の方からは「サバイバー」と呼ばれています。創業からすでに6年以上が経過しているのですが、創業してからの2年間である2012年5月〜2014年2月の間には、初回の100万円の資金調達だけしかしていませんでした。少ない資金調達でこれだけ長い期間サバイブ(生存)することができたのは、受託開発などによって日銭を稼げたからであり、開発者主体であることが寄与しています。

また、社長がエンジニアなら、会社がたった一人になってしまった場合でも、製品開発と受託開発により、会社を存続しながら、事業を作っていくこともできます。「社長一人で製品を作りながら受託開発をする」というのはあまり幸せなストーリーではありませんが、その選択肢を選ぶことができること、作りたい事業を作れることは幸せなことです。

エンジニアであることは投資家からも評価される

エンジニア起業家は投資家から高い評価を受けやすいです。多くの起業したい方はまず「プロダクトが作れるのか」という初期の壁にぶつかりますが、社長が自分自身でプロダクトを作れるならば、その壁にぶつかることはありません。そのため、エンジニア起業家は投資家からも相対的に高い評価を得られます。私も初期の資金調達は、「アイデアはないがプロダクトを作る能力はある」というだけで行っていました。

起業することなく、資金を必要とせず、事業を作れる

会社で働きながらプロダクトを作ることがエンジニアならできます。最近は起業と同時に資金調達をする企業が多いですが、昔の日本ではあまりその手段を取れず、会社に勤めながら事業を進める方が多かったと思います。様々な意見がありますが、会社で働いて安定的な収益を得ながら、業務時間外に製品を作り、事業が成長してきた(プロダクトマーケットフィットに到達した)タイミングで法人化することは、非常に合理的だと考えます。

社長が非エンジニアの場合には、誰かコードを書いてくれる人を探したり、技術的に可能かどうかを調べてくれる人を探したりするところから始めることになり、非常に難しいですが、エンジニアの方であれば、プロダクトマーケットフィットやもしくはその近くまで、一人でサイドプロジェクトとして進めていくことができます。

おわりに

この記事に書いたように、エンジニアが起業することは、ビジネス系の方が起業するのに比べていくつかの大きなメリットがあります。作りたい製品や世界がある方は、挑戦してみてはいかがでしょうか。

これにて、SiderのてGitHub Universeスポンサー記念の3週連続投稿ブログ記事はおしまいです。もし追加で聞いてみたい話などがあれば、サンフランシスコで10月16日、17日に開催されるGitHub Universeのブース会場でお会いしましょう! ここで、これからGHUの参加券を購入する方に向け、Siderが特別に優待クーポンをご用意いたしました!ご参加をご検討の方はぜひこちらの20% OFF クーポンコード: 『GHU18SideCI20』 をご利用ください。

「USAまで行けないよ!」という方もご安心ください。Siderはそのほかにもイベントを多く開催しています。直近では9月13日にCircleCIとの合同イベント、9月27日にRuboCopのコミッターの方などを招いたCode Review Meetupを主催しました。これらのイベントレポートも順次発表していく予定ですので、ご興味のある方はぜひご覧ください。また主催だけでなく、Siderのメンバーはいろいろなイベントに参加しています。見かけた際にはぜひお気軽にお声がけください。 Siderをご利用いただいた上でのフィードバックなども頂ければ、とても嬉しいです。

Siderは今後もより便利なコードレビュー支援サービスを目指して、機能拡充を続けます。世界中で使われるように、世界中への販売活動に注力しています。これからも応援のほど、よろしくお願いします!


あなたのチームの開発効率向上に! Siderの自動コードレビューを14日間の無料トライアルでお試しください!

エンジニアが作りたいものを本気で作るための起業という選択肢。起業、Pivot、レビュー支援サービスSiderの着想から現在、未来

第二回 コードレビュー支援サービスSiderの歴史

この秋、Sider株式会社が初めてGitHub Universeにスポンサーとして参加することを記念して、事業立ち上げから、コードレビューサービスであるSiderを提供する現在にいたるまでを振り返るシリーズ記事を三週続けてお届けしています。
先週公開した前編では、CEOである私がどのように起業を志し、最終的にSiderというサービスを立ち上げていったのかをお伝えしました。今回は、Siderの歴史について書いていきたいと思います。

先週までのあらすじ

学生時代からのアプリ開発経験、そして会社員時代にはプロジェクト立ち上げなどを経て、課題解決型のスタートアップを起業することに決めた私は、コードレビューを支援する事業を立ち上げることを決めました。以前の名前のSideCI、そして現在のプロダクト・社名のSiderにも含まれる「side」というのは、いつも開発者さんの隣でお力になれるよう見守る、開発者の隣でお役に立てる、メンターのような、パートナーのような、同僚のような、そんな存在になれるように名付けました。

SideCI プロトタイプ 開発スタート 2014/1

紆余曲折を経て2013年12月頃にアイデアを発議したコードレビュー自動化ツール『SideCI』(現在のSider。前編参照)は、2014年1月から実際の開発に進みました。CTOの友人たちへのヒアリングのおかげでコードレビューのプロセスに課題があることが明らかになってきたため、課題を解決するプロトタイプの開発に乗り出しました。
ちなみにこの時のメンバー構成は、自分を含めた計3名の開発者がいるだけで、開発以外の業務は全て自分のみでカバーしていました。

プロトタイプの機能は、ユーザーがZipでアップロードしたソースコードをSideCIがサーバサイドで解凍し、rails_best_practices gemで解析した結果をHTMLで表示する、というものでした。今思い返すと、当時の自分はなぜこれがMVP(Minimum Variable Product)だと思っていたのか全く理解ができません。明らかに手元のPCのコマンドラインでgemを実行するのとほとんど変わらない、もしくはコマンドライン実行の方が便利そうです。

f:id:sideci:20180910165443p:plain
(プロトタイプの画面)

しかし開発当初は、このプロトタイプをもってユーザヒアリングを進めていました。

SideCIベータ版リリース 2014/4

コードレビューをどのようにしているのか、このMVPでコードレビューが楽になるかといったことをヒアリングさせて頂いたところ、多くの方がGitHub Pull Request上でコードレビューをしている、Zipでアップロードするのは面倒でやらないだろう、といった意見が多く、GitHub Pull Requestと連携するのがシームレスだろうと考えました。そのため、GitHubと統合した形でSideCIベータ版の開発を行いました。
ベータ版は、『コードレビューの自動化』をコンセプトとしてすべてのコミットを静的解析器で解析し、結果をGitHub Commit Comment APIでコメントするものでした。解析部分の実装はHeroku上でgit cloneを行い、rails_best_practices gemなどの解析器をKernel.#systemで呼び出す形です。

しかしこのベータ版は大きな2つの問題を抱えていました。一つは、Herokuでのコードの解析には当時のHerokuの最大スペックのPX Dyno(8コアマシン)でもメモリが足りないということ。もう一つの問題はrails_best_practicesが親プロセス(Railsアプリケーション層)ごと巻き込んで死ぬことがたびたびあるということ。つまり、本当にシステムが安定しなくてダメでした。

そのほか、密結合なマイクロサービスアーキテクチャを取っていたため、最小のサーバ構成がHerokuのPX Dynoが4台であり、毎月$2000が必要でした。売上がないベータ版の状態でこの費用は大きすぎました。
またプロダクトの機能面でも、すべてのコミットを解析してコメントしてしまうため、非常にうるさいサービスでした。そこでベータ版リリース後、Pull Requestの作成と更新のタイミングでのみコメントを行うように仕様を変更しました。 f:id:sideci:20180910165538p:plain https://web.archive.org/web/20140812205202/https://www.sideci.com/

f:id:sideci:20180910165625p:plain
(ベータ版のリリース記事)

https://jp.techcrunch.com/2014/04/30/%E3%82%A2%E3%82%AF%E3%83%88%E3%82%AD%E3%83%A3%E3%83%83%E3%83%88%E3%81%AE%E3%80%8Csideci%E3%80%8D%E3%81%AF%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E8%87%AA/

Dockerベースに移行 2014/9

SideCIベータ版の「HerokuでKernel.#systemを呼び出して実行する」という形は不安定であり、また、並列実行する際にはセキュリティ上の懸念がありました。そのため、アーキテクチャをDockerベースに変更しました。具体的にはHerokuからAWSにシステムを移行し、EC2上にDockerコンテナを起動し、そのコンテナにSSH接続を行ってコンテナの中でgit cloneや解析器の実行をするという形です。
この形を採ることで、Herokuで動かしていたベータ版よりは動作がマシになりました。ただし、時折Dockerのインスタンスが残ってしまったり、コンテナ内で暴走したプロセスをきちんと終了できなかったりといういくつかの問題があり、残念ながら不安定な状態が続いていました。

f:id:sideci:20180910165834p:plain

https://web.archive.org/web/20141230072517/https://www.sideci.com/

最初の危機 2014/11

f:id:sideci:20180910170305j:plain
(Paul Graham氏の提唱するスタートアップ曲線。出典:http://www.fastcompany.com/1825877/5-things-i-learned-about-entrepreneurship-y-combinators-paul-graham

スタートアップ企業は往々にして、「愚かさがクラッシュ」(Paul Graham氏の提唱するスタートアップ曲線の中での、The Crash of ineptitudeと呼ばれる停滞期の後にくる事業が落ち込む時期のことを指す)するタイミングがあります。Siderは2014年の11月、この「愚かさのクラッシュ」、つまり最初の危機を迎えました。

不安定なシステムと合わせてメンバー間の仲も不安定になりました。結果、一度チームは崩壊を迎え、私がCEOとCTOとそのほか全部を兼任する、1人体制になりました。

設計をゼロからやり直し。再リリース 2015/2

チームが崩壊した後、メンバー構成は 暫定的に、私とフリーランス1人の2人体制になりました。そこでまずはシステムの不安定さを根本的に解決するため、アーキテクチャの根本的な見直しをはかりました。具体的にはSSHでDockerコンテナに接続する形を廃止して、docker exec rubocop –R dirname といったコマンドをSidekiqのWorkerプロセスから呼び出す形に変更し、WorkerプロセスやDockerコンテナが暴走した場合にはKill、そこにRailsアプリケーションと、解析器の間に中間層のような構造を導入しました。それに合わせて各静的解析器の解析結果を共通の形式に変換し、GitHub APIに送信する形にも変更しました。
その後、SideCIに一瞬テスト&デプロイ機能が付いたこともありました。 2015年3月のことですが、文字通り、Side「CI」に一瞬なったわけです。この変更により、コードレビューの自動化サービスから統合的なCIのサービスに進化(?)しようとしたのですが、「TravisCIやCircleCIでやるからその機能は要らない」という意見が多く、すぐに撤退することになりました。

f:id:sideci:20180910170431p:plain f:id:sideci:20180910170518p:plain https://web.archive.org/web/20150322061315/https://sideci.com

Ruby以外の言語のサポートを開始 2015/7

結局SideCIがCIであったのは短い間でしたが、Dockerコンテナをベースとし、解析器の出力結果の取り扱いを共通形式に変更したことによって、新しい解析器のサポートが容易になる、といういい面もありました。新しい解析器の追加によって、様々なプログラミング言語をサポートすることも可能になったため、2015年夏頃からはRuby以外の言語のサポートを開始しました。SideCIから名称を変更した現在のSiderは20以上の解析ツールに対応していますが、これはその第一歩とも言えます。また、テスト機能を廃止したことで、レビューのみに再度フォーカスしようということになりました。レビューの自動化を集中して扱うサービスにしようという動きが本格化したのもこの時期です。

f:id:sideci:20180910170535p:plain f:id:sideci:20180910170706p:plain

https://web.archive.org/web/20160207112639/https://www.sideci.com/

1人→3人に 2015/11

新しい道を歩みだしたSideCIの元に、少しずつ新しいメンバーも集ってくれました。一人目はPockeです。SideCIについてエゴサーチしていた際に、TwitterでPockeのつぶやきを発見したことが縁となり、2015年10月、学生アルバイトとして迎えることになりました。PockeはSideCIを作っていく中でOSSのRuboCopにコミットを続け、RuboCopのコアコミッターとなり、2018年4月には当社の技術顧問に就任しています。さらにその後、2015年11月にはVPoE・取締役に就任する開発者も入社し、株式会社アクトキャットは3人体制になりました。

資金調達(4度目) 2016/3

その後順調にメンバーも増え、プロダクトも安定して動作するようになったので、事業拡大のために4度目の資金調達を実施しました。この頃はSideCIには指摘を修正するPullRequestを自動的に作成する機能も提供されていました(現在は廃止)。そして2016年4月、SideCIはついに「正式版」としてローンチします。

負債カンバン機能をリリース 2016/8

続いて、技術的負債を可視化する『負債カンバン』という機能をリリースしました。これは「技術的負債を返したい、けれど返せていない」という課題を解決する機能です。スタートアップのフェーズなどでは、コードの善し悪しは気にせずとにかく機能をリリースして、「技術的負債」の名前の通り、先に作った負債を後で返済する(リファクタリング)、といったことが多くあります。負債カンバンは、その「後に返済する」ことを支援するために作られました。裏側は静的解析器を使っており、解析結果にファイルの修正頻度などを加味してSider側で優先度付けをし、それをトヨタ生産方式やアジャイル開発で有名なカンバン形式で表示したものでした。

f:id:sideci:20180910170813p:plain
(出典:TechCrunchで紹介された際の記事https://jp.techcrunch.com/2016/08/31/sideci-introduces-technical-debt-kamban/

受賞 & 再度、愚かさがクラッシュ 2016/12

こうして軌道に乗り始めたSideCIは、2016年の末には、「コードレビューの支援」という製品の性質や製品自体、Rubyコミュニティへの貢献などを評価され、Ruby biz grand prix 2016 special prizeを授与していただきました。

f:id:sideci:20180910170914j:plain
(Ruby biz grand prix 2016 授賞式)

しかしここで「愚かさのクラッシュ」が再来しました。Ruby biz grand prix 2016授賞式のわずか数日後、VPoEから退社したい旨の相談を受け、実際に退社することとなりました。この頃は資金調達の活動中であり、また、VPoEが取締役に就任してからまだ4ヶ月という時期でした。突然の事態に私やチームは驚きでいっぱいになり、開発チームに再び混沌が訪れてしまいました。
VPoE退社への応急処置として、翌2017年の1月から新人事とスクラム制の導入を行いました。当時、前職でもCTOを長く務めていたsoutaroが社内にいたため、VPoEに代わり、急遽CTOに就任してもらうことにしました。また、VPoEが抜け、かつCEOは資金調達で忙しいことからプロダクトマネージャーが不在がちになってしまうという問題に対しては、スクラム制を導入しました。こうしてなんとかCEOが製品開発の優先度付けだけはできるように体制を整え、SideCIの2017年が幕を開けました。

SideCIのレビューフローを「コメント」からWebUIへ変更 2017/1

それまでのSideCIは発見したコードの問題をGitHubのPull Requestにコメントしていました。これには指摘が読みやすく、GitHub上で完結するというメリットがある一方で、指摘が多くなるとPull Requestのページが開けなくなることや、開くのに時間がかかること、SlackとGitHubが連携している場合にSlackがNoisyになること、などの様々な問題がありました。この問題を解決したいと考え、ユーザ体験の変更に着手しました。
ここでSideCIは、WebUIで指摘を表示する形に変更されました。さらに、SideCIが提示した指摘を無視することもできるようにしました。この変更にはSideCIの指摘が有用なのかどうかや、ユーザが指摘をどう判断しているのかを知りたいという意図もありました。それが判れば、SideCIが提供した指摘が「誰にとっても有益な指摘」「そのプロジェクトでだけ有益な指摘」「誰にとっても無益な指摘」のどれだったのかを知ることができます。この非常に有益な情報を元に、レビューの品質や量、誤検知率などの改善を繰り返してきました。

f:id:sideci:20180910171444p:plain

https://blog-ja.sideci.com/entry/abyssinian_beta_release

資金調達(5回目。累計調達は3億円超に) 2017/4

この時点でエクイティファイナンス及び長期のデットファイナンスの累計額は、3億円を超えました。この頃にはお客様の解約率も低く、また新しいお客様も日々オーガニックに入ってくるようになっていました。SideCIはプロダクトマーケットフィットに到達したと考え、継続的な製品開発並びに販売拡充のために新たに資金の調達を行いました。会社としても新たなフェイズを迎えるための準備が再び始まりました。

人事についても見直しました。2016年12月のVPoE退職から、開発体制は私をプロダクトオーナー(PO)としたスクラム開発になったままでしたが、この機会に自分をCEOとしてセールスやマーケティング、採用の核となるため、POをSoutaroに委譲しました。Soutaroはプログラムの解析の有識者で、プログラミング言語の型解析の論文などによりPh.Dを取得しており、Ruby3x3プロジェクトの一つである静的型推論の実装steepの開発者でもあります。
元からSideCIは静的解析を用いたコードレビューの自動化や支援に集中していたため、RuboCopやReekのコアコミッター、コミッターがメンバーとして在籍しておりました。SoutaroのPOへの就任はこの方針をより強化しました。結果、SideCI株式会社はレビューできる範囲を広げるための新しい解析器やQuerly(Ruby)、Goodcheck(全言語)の提供や、それに合わせたWebUIの提供などに集中できるようになりました。

参考: 誤検知を増やしても良い、増やせるようにし、レビュー範囲を広げる
https://blog-ja.sideci.com/entry/2017/04/07/161025

合わせて、機能を取捨選択し、ユーザにとってより使いやすいサービスにするため、「負債カンバン」などのコードレビューに直接的な関連性の薄い機能は廃止されることになりました。

参考: クラシックモードを廃止し、開発リソースをコードレビュー自動化カバレッジの向上により集中
https://blog-ja.sideci.com/entry/2017/09/06/160514 Styleint, Java, Misspell, Flake8プラグインサポートなどを追加したのもこの時期です。より多くの人に、より充実した内容のコードレビューを提供できるSideCIになれるよう製品改善を進める姿勢は、現在も大切にしています。

マーケティング & セールスへの集中

製品の質を高める一方で、より多くの方にSideCIを使っていただきたいという思いが大きくなりました。そこで2017年からは製品を世界中へ拡大させるために、イベントへのブース出展や登壇による認知度の拡大を図っています。以下はその一例です。

  • RubyBusiness User Conference
  • RubyKaigi2018
  • RubyConf Taiwan
  • Rails Developers Meetup
  • GitHub Satellite 2018 Tokyo
  • Code Review Meetup(自社にて4回開催)

SideCIからSiderに名称変更 2018/6/13

2014年リリース当初から約4年間ほど「SideCI」という名称でサービスを提供してきました。おかげさまで新規のお客様も途切れることなく、日本の開発者の方々の中では「SideCI」の知名度は高いと考えています。
一方、アメリカや台湾などの海外では、SideCIの話をするたびに、「テスト&デリバリー(CI)のためのサービスと何が違うのか」「テスト&デリバリー(CI)はもう使ってるからSIdeCIは必要ではない」といった話を聞く機会が多くあり、「CI」がサービス名に含まれていることの弊害を感じることも多々ありました。「SideCI」という名称のままでは今後も同様の状態が続くだろうと考え、製品名の変更を決定しました。GitHub Satellite 2018に登壇した際にアナウンスを行って以降、「Sider」として製品の提供を続けています。また、2018年8月31日時点ではまだ当社からのアナウンスは行われておりませんが、GitHub Enterpriseに対応したSiderの提供を開始しました。結果、様々な大手企業にもSiderの導入が進むようになりました。

参考: https://githubsatellite.com/

Siderはこのように着想から色々な困難を乗り越えてリリースされ、約4年間皆さまからいただいたフィードバックとともに歩みながら、いまお届けしているSiderになりました。Siderは、これからも皆さまの隣に寄り添う「Sider」であり続けます。

これから

今後Siderをより多くの人々に広めていくため、2018年10月16日、17日にサンフランシスコで開催されるGitHub Universeという大型イベントのスポンサーやブース出展を行います。もし機会がございましたら、ぜひブースに遊びに来てください。様々なノベルティをご用意して、皆さまのご来場をお待ちしています。

f:id:sideci:20180910171759p:plain https://githubuniverse.com/


あなたのチームの開発効率向上に!
Siderの自動コードレビューを14日間の無料トライアルでお試しください!