"サービスの成功にコミットする"ために自社開発したフランジアのCI/CD―エンジニアたちが賛同して自ら開発に名乗りを上げて生まれたツール

フランジアでは、お客様から依頼を受けた開発だけでなく「サービスそのものの成功」にコミットする姿勢を大切にしています。お客様のプロジェクトを成功させたいという思いからCI/CDContinuous Integration/Continuous Deliveryの導入を提案してきましたが、コスト面で諦めるお客様が少なくありませんでした。であれば無料で使えるCI/CDを作ろう。そして、それを改良し続けることでお客様にCI/CDが必要だということを体感してもらいたい。そんな思いにエンジニアたちが賛同し、自ら開発に名乗りを上げて生まれたツールです。

フランジアは、2012年にオフショア開発会社として創業、現在は日本とベトナムをはじめ6ヵ国、1,000名体制で活動しているITプロフェッショナルチームです。社員の8割がエンジニアで、システム・UI/UX設計・デザイン・インフラ構築を含むプロダクト開発やスタートアップのアクセラレートプログラム、テクノロジ人材の育成をおもな事業として展開しています。
フランジアは、2012年にオフショア開発会社として創業、現在は日本とベトナムをはじめ6ヵ国、1,000名体制で活動しているITプロフェッショナルチームです。社員の8割がエンジニアで、システム・UI/UX設計・デザイン・インフラ構築を含むプロダクト開発やスタートアップのアクセラレートプログラム、テクノロジ人材の育成をおもな事業として展開しています。

Framgia CI/CDツールとは?

フランジアでは、これまで150社、200を超えるサービスの開発を支援してきましたが、現在、約9割のプロジェクトでこのCI/CDツールが活用されています。最新版のFramgia CI/CDは、オープンソースのCIツールであるDroneをDockerと組み合わせて構築されており、商用のCI/CDツールとほぼ同様に、コーディング規約のチェックや単体テスト・インテグレーションテストなどの自動テスト機能が実装されています図1⁠。また、静的なソースコード解析のオープンソースライブラリをプロジェクトに導入することも簡単です。

図1 Framgia CI/CDのアーキテクチャ
図1 Framgia CI/CDのアーキテクチャ
表1 Framgia CI/CDの機能
機能内容
Framgia-CI CLIコマンドラインツールとしてDocker内にインストール
Docker の拡張設定管理とFramgia CIレポートと連携
Framgia CI
Reports
テストのレポート・実行したログを管理するWebアプリケーション
GitHub CommentDockerのプラグイン
レポート分析、GitHubへコメント付き

コストの削減と品質の向上を実現

このCI/CDツールを導入したことで、コーディングチェックなどにかかっていた人的コストがほぼゼロになりました。コーディング規約・ライブラリで定義したルールに違反する箇所があるとGitHub のPull Requestに表示されるため、Pull Requestの作成者も確認と修正が容易にできます。

これにより、Pull Requestに対する単体テストの実行結果はもちろん、お客様やプロジェクトマネージャーがソースコードの単体テストのカバレッジをレポート画面で簡単に確認でき、常にソースコードの品質を一目で把握できるようになりました図2、図3⁠。

図2 CIの実施結果をWebで確認できる
図2 CIの実施結果をWebで確認できる
図3 Pull Request単位のビルドの結果画面
図3 Pull Request単位のビルドの結果画面

Framgia CI/CDツールが生まれた背景

CI/CDツールを独自に構築した背景には、内的な要因と外的な要因の2つがあります。

社内の教育プログラムを効率化したい

内的な要因のおもなものは、新人教育の効率化とコスト削減です。フランジアは、ベトナムのハノイ工科大学をはじめ、理工系トップクラスの大学と提携して毎年1,000人近くのエンジニアを育成しているため、新卒エンジニアの割合が多い会社です。

新卒でフランジアの正社員になるためには、インターンの教育プログラムに参加し、実践で模擬プロジェクトを完成させます。コーチがきっちりコーディング規約をチェックするため、新人のメンバーが増えるにつれて効率化が求められるようになりました。当初は商用のCI/CDツールを検討しましたが、1,000人規模の組織ではコストもかかります。

CI/CDの導入を躊躇されるお客様に無償で提供したいという声にエンジニアたちが賛同

外的な要因については、Framgia CI/CDを構築するまでは、お客様自身でCIを導入いただいており、お客様によってCI/CDツールが異なっていました。また、商用だとコストを理由に導入を躊躇(ちゅうちょ)されるお客様もいました。自社で開発すればお客様に無償で提供できるだけでなく、組織全体の品質向上にもつながります。であれば無料で使えるCIを作ろう。そして、それを改良し続けることでお客様にCI/CDが必要だということを体感していただきたいとの思いに、エンジニアたちが賛同しました。フランジアには、自分たちで作る、と決めたら、エンジニアたちが自ら開発に名乗りを上げ、立候補をどんどん登用する文化があります。Framgia CI/CDは、このような想いから生まれたツールでもあります。

ほかのツールにはない強み

Framgia CI/CDには次のような特徴があります。

  • 並行ビルドが可能
  • 水平スケーラビリティ
  • 独立したビルド
  • 簡単な設定(YAMLで)
  • ビルド環境のカスタマイズ
  • コマンド設定可能
  • プラグインによる機能拡張
  • Capistrano、Rocketeer、Ansible、Envoy、Ansistranoなど多数の自動デプロイツールをサポート
  • ビ ルド・デプロイのイベントを簡単にSlack/Chatworkへ通知

Framgia CI/CDの初期バージョンはJenkinsベースで1つのプロジェクトが同じデータベースで共有されていたため、並行ビルドや水平スケーラビリティはできませんでしたが、現行のVer.2は商用のCI/CDツールとほぼ同じ機能が使えます表2⁠。

表2 Framgia CI/CDとほかの商用CI/CD機能の機能比較
表2 Framgia CI/CDとほかの商用CI/CD機能の機能比較

また、Framgia CI/CDは表3に示す言語・フレームワーク、オープンソースのライブラリをサポートします。

表3  Framgia CI/CDがサポートする言語/フレームワーク/ライブラリ
言語/フレームワークライブラリ
Ruby/Ruby on Railsbundler-audit
RSpec
Brakeman
Reek
RuBocop
rails_best_practices
PHP PHP CPD( PHP Copy/Paste Detector)
PHPMD(PHP Mess Detector)
PHP Depend(PHP Depend)
PhpMetrics
phpcs(PHP CodeSniffer)
PHPUnit
JavaScript & CSS ESLint
scss-lint
Java android-lint
Checkstyle
FindBugs
PMD
JaCoCo
Cobertura
Swift SwiftLint
Unit-Test
Integration-Test
E2E Test

オペレーションコストとコミュニケーションコストを大幅削減

プロジェクトの9割でFramgia CI/CDが導入されるようになり、レビューの工数を大幅に削減できました。削減できた時間を、ロジックの実装・設計などエンジニアが本来行うべき作業に割くことができ、開発のスピードアップと品質向上を実現できました。お客様からの評価も高く、特に自社に開発チームがいないお客様にとっては、サーバのデプロイなどに困らないため、好評をいただいています。

また、開発チーム内のコミュニケーションも大幅に削減できました。これまで検証には、事前にデプロイ時間を決め、機能の認識を合わせ、手動でデプロイしていました。複数の検証環境があるプロジェクトでは、オペレーションとコミュニケーションのコストがかなりかかっていました。

Framgia CI/CDでは、指定のブランチで新しいソースコードの差分が入るとそれぞれの環境へ自動的にデプロイされます。検証環境が複数あっても、同時に複数の機能のテストが可能になり、エンジニアのソースコードに対する品質・解読性の意識が高くなりました。また、非エンジニアのメンバー、特にQA(テスター)もCI/CDを使って適宜デプロイできるようになり、作業のスピードは格段に速くなりました。

今後に向けて─⁠─エンジニアが主体になり自己成長できる組織へ

次期Ver.3のリリースでは、より安定した稼働を課題に取り込んでおり、次の機能が実装される予定です。

  • GitLabおよびプライベートGitサーバのサポート
  • コーディング規約違反のソースコードに対して自動的にPull Requestを生成
  • DockerコンテナへのSSH接続(エンジニアのデバッグサポート)

フランジアでは、常に新しい技術や手法を取り入れ、早期の課題の発見と改善を続けています。今後もお客様からの声を取り入れながらより使い勝手の良いツールにしていく予定です。私が参画したときはたった数十名の組織でしたが、1,000人の組織になった今もその姿勢は変わりません。これからも新しい技術トレンドに目を向けながら、エンジニア一人一人が課題を見つけ、改善案を提案し、実際にアクションを起こしていくようなエンジニア主体の自己成長できる組織を目指していきます。

参考情報

フランジアのエンジニアが開発したDockerプラグイン https://hub.docker.com/u/fdplugins/

フランジアでは開発やビジネスのご相談はもちろん、採用も積極的に行っているので、ぜひお気軽にお問い合わせください。

https://framgia.com/

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.130

2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8

  • 特集1
    イミュータブルデータモデルで始める
    実践データモデリング

    業務の複雑さをシンプルに表現!
  • 特集2
    いまはじめるFlutter
    iOS/Android両対応アプリを開発してみよう
  • 特集3
    作って学ぶWeb3
    ブロックチェーン、スマートコントラクト、NFT

おすすめ記事

記事・ニュース一覧