• 検索結果がありません。

富士フイルムソフトウエアはいかにして旧開 発手法を捨ててGitHub Enterpriseを愛する ようになったのか 2018/07/27 富士フイルムソフトウエア 大島一輝

N/A
N/A
Protected

Academic year: 2021

シェア "富士フイルムソフトウエアはいかにして旧開 発手法を捨ててGitHub Enterpriseを愛する ようになったのか 2018/07/27 富士フイルムソフトウエア 大島一輝"

Copied!
69
0
0

読み込み中.... (全文を見る)

全文

(1)

富士フイルムソフトウエアはいかにして旧開

発手法を捨てて

GitHub Enterpriseを愛する

ようになったのか

2018/07/27

富士フイルムソフトウエア

大島一輝

(2)

大島一輝

»

富士フイルムソフトウエア

イメージングソリューションGr

»

経歴

2012年入社

画像処理コア技術開発

店頭写真注文受付機GUI開発

写真注文用スマホアプリ開発

(3)

1.

導入経緯

なぜGitHubを導入する必要があったのか?

(4)

富士フイルムソフトウエア

イメージングソリューショングループ

のミッション

(5)

5

(6)
(7)

7

富士フイルムフォトイメージング

事業のミッション

(8)
(9)

9

(10)

工場(生産拠点) データセンター お店 家 サーバ 生産 ユーザー/画像 クライアント PCソフ ト スマホ ソフト 店頭機 ソフト 画像補正 画像合成 注文 決済 ユーザー 管理 注文管理 画面表 示 画像保 管 バック アップ プリント 管理 プリント 出力 色補正 プリント 受付 配送情 報 管理 その場で受取 家でじっくり こだわる PCが使えない!

(11)

店頭受付ソフト

全国の写真店、家電量販店、小売店(東急ハンズ、ロフトなど)の店頭 で約8,500台稼働中。海外展開も。

(12)

ネット

(13)

課題

店頭とネット/スマホで技術が全く異なり、 開発環境が多種多様、動作も異なる

(14)

クロスプラットフォーム開発

ネイティブからWeb/ハイブリッドアプリケーションへ 極力部品を共通化し、並行開発 OS OS Web Browser Native Wrapper App App

Hardware Chromium Embedded Framework

(15)

計画

15

複数商品、複数プラットフォームの並行開発となるため、 ソースコードのマージが適宜必要となる

(16)

始まってみると

» マージ作業が大幅なコストとなってしまった ⋄ マージする段階で品質が見えにくい ⋄ スケジュールの変更によりマージ範囲も変動 » 異なるプラットフォーム間の進捗が見えづらくなり、 開発効率の低下につながってしまった

(17)

SVNのブランチ状態は混沌

を極めることとなる

(18)

同時多発する

trunk

内容の異なる

trunk

無駄に深いディレクトリ

Sources/trunk?

trunk/Source??

(19)

19

(20)

立ち上がるリファクタリング

» 並行開発の末に悪魔合体を繰り返したソースコードに秩序を取

り戻すため、大規模リファクタリングを敢行

» 開発環境もリファクタリングできるチャンス ⋄ GitHubを導入したい、と現場の声

(21)

GitHubに漠然と期待した効果

» ブランチのマージコスト低下 » コードレビュー文化の繁栄 » CIツール、課題管理ツールなどとの連携

なにより、GitHub、おもしろそうじゃん?

21

(22)

2.

導入に対する壁

(23)

23

(24)

GitHub.com

» 開発中のソースコードをインターネットに丸腰で置くのには抵抗が ある(社内ルール的にもNG) » GitHub.comのメンテナンスの影響を受けてしまう ⋄ 開発非効率 » 無料のGitHubクローンでは機能が物足りない

(25)

GitHubEnterpriseの採用

» セキュリティはバッチリ ⋄ リポジトリごとの公開/非公開が設定できる ⋄ 万一の情報漏えいも影響範囲は社内のみ ⋄ ユーザのログイン・各種操作ログ取得可能 ⋄ 予期せぬダウンタイムの回避 » サポートツールが充実しており、 運用の負担はそこまで高くない ⋄ マクニカさんのサポートのおかげです 25

(26)
(27)

Gitトレーニング

» Git未経験のメンバーに向けトレーニングを実施

» 基本的な使い方、ブランチ運用などドキュメントを整備 » 自分がGitHubおじさんとなって布教、サポート

(28)

» テキストファイルだけのリポジトリを作成し、GitHubを利用した開発

フローを経験してもらう

» キーワードはGitHubはSEにとってのSNSなんだよ! » 実際に使って、慣れてもらうのが一番

(29)

29

(30)

クローン master 開発項目単位でブランチを作成 コーディング プッシュ ので、別ブランチで次の開 発 XXX YYY ブランチ

GitHub開発フロー

(31)

31

(32)

ブラウザ上でコードレビュー

ソースコード自体へ コメント(レビュー)

(33)

33

レビュー、修正、マージ

ボタンを押せば

本流へのマージが完了する レビュー内容を確認し、修正する

(34)

3.

導入効果

(35)

35

コードレビュー

効率化

(36)

コードレビュー・ビフォー

» FaceToFaceが基本。開発者のローカルにしかないソースコードを WinMergeなどのDiffViewerを用いて説明する

⋄ 時間、場所の制約が発生する

(37)

コードレビュー・アフター

» PRによるレビュー ⋄ レビュアーが自分のスケジュールに合わせて ブラウザ上でレビューできる 効率化! ⋄ ブランチはPush済みなので、 開発者は次の開発を進められる 効率化!! ⋄ PRがそのまま議事録となる 効率化!!! 37

ちょっとまって!

(38)

会社の風土に合わせる必要があった

» 弊社ではコードレビュー議事録の中に重要度の項目がある

(致命欠陥、重欠陥、軽欠陥、その他(改善要望等))

PJの品質見える化、の観点では重要 » PRでは単にコメントとなり、それがわからない

(39)

どうやって解決した?

» 求められたゴールはPR毎に 以下のようなデータを得られること ⋄ 重欠陥XX件、軽欠陥XX件、、、 » せっかく効率化のために導入したGitHub、 レビュアーの負担は極力減らしたい » GitHubAPIを活用する ⋄ GitHubは機能の殆どをWebAPIとして提供している 39

(40)

解決策

» リポジトリを指定し、期間、ラベルに関連するPRのコメントを 集計、CSV出力するWebアプリ(Angular + TypeScript) » GitHubPagesの機能を使って公開 ⋄ GitHubPages...GitHub上のファイルを静的なWebPageとし て公開できる機能 定型文を必ずレビュー後に入力 GitHubAPIを使って取得し、集計する

(41)

41 各項目を適宜入力

(42)

ん?コメントいれるの忘れそう?

» 社内標準ツールGoogleChromeの拡張機能を自作

PRのレビュー欄にデフォルトで入力される

(43)

PRベースでの品質の見える化を達成!

» デイリーでPJの品質確認可能 (ソースコードレビューによる不具合の前倒し摘出) » 社内ルールにGitHubを溶け込ませることに成功した ⋄ 次はGraphQL APIへ対応したい 43 CSV

(44)

各種ツールとの

(45)

各種ツールとの連携・ビフォアー

» 課題管理、静的解析ツール、CIツール、の連携が特になされて いなかった » 課題管理と結ばれていないから、なぜその修正が入ったか、 背景がわからない » マージするまでテストやビルドの結果がわからない 45

マージコスト増

(46)

各種ツールとの連携・アフター

デプロイ自動化

が次の課題

● 課題管理

● 静的解析

● CI

● チャット

● リポジトリ管理

(47)

47

課題管理との連携

マージ時にコミットメッセージ に対応するチケットNo入力 Redmineに自動でリンク チケットに関連するコミットがすぐに分かる

(48)

PRと連動し、自動テスト、静的解析を実施。マージ前の品質を 確保でき、レビュアーの負担が軽減 ⋄ 大量のマージに耐えられる開発体制 静的解析結果はPR上に表示 開発者はすぐに気づいて修正できる NGステータスの場合、 マージできない

(49)

49

(50)

チーム風土の変化

(51)

コードレビューの殺伐さが消えた

» 静的解析、自動テスト、各種ツールの活用、により

ストレスからの解放(効率化)と精神的安定を手に入れた

» コードレビューにも変化が起きた

(52)

コードレビューの殺伐さが消えた

» 良いコードには称賛を。気軽にイイネしあえる関係 » サンプルコードの提示、アドバイスも

⋄ ソースコードへのアクセスが容易

(53)

コードレビューの意識改革

» レビュアー VSレビューイ、から、

解決しなければならない課題 VS チーム全員

という意識の変化が生まれた » 良い雰囲気は良いコードを生む 53

VS

チーム

課題

(54)

チーム風土の変化

 提案活動活発化

(55)

GitHubを運用して出てきた課題

» PRベースのコードレビューは便利だが、気づかぬうちに溜 まっていってしまう、ということも » レビュー漏れ(レビューしないとマージできないので、最終的 に漏れることはないが、スケジュールに影響を与える)が発 生 55

(56)

若手エンジニアが自発的に課題解決

» レビュアー抽出・一覧化ツールを開発

GitHubのおかげで参考ソースへのアクセスが容易PRでのやりとりでモチベーションアップ

(57)

57

チーム風土の変化

 改善活動活発化

(58)

早朝プチリファクタマラソン

» 自動テスト、静的解析でのチェック機構により、小規模な改 善がやりやすくなった » そこでチームで早朝プチリファクタリングマラソン、を実施した ⋄ 静的解析指摘、不足している自動テストの拡充、 など技術負債をコツコツ返済していくのが大目的

(59)

» コーディングにかける時間は毎朝の15分 » 出来たらその日のうちにPR、レビュアーはその日のうちにレビューする。 貯めない » 改修量は50step以内 » レビュアーは改修内容にのみ集中する » 1stepでも改修できれば良い、という気持ちで 59

ルール

(60)

効果

» 静的解析指摘の修正、不足テストの追加によりデイリーで内

部品質が改善

(61)

61

(62)

技術課題の解決が加速

» GitHubは自由に試せる、すぐに共有できる場

» プロジェクト中に発生する様々な技術課題に対して、

プロト実装、レビュー、本番導入、 という流れができあがった

(63)

63

提案・プロト作成 議論・設計レビュー コードレビュー・マージ

(64)

4.

まとめ

(65)

当初の想定通りの効果

» ブランチのマージコスト低下 クリア! » コードレビュー文化の繁栄 クリア!! » CIツール、課題管理ツールなどとの連携 クリア!!!

  つまり、まとめると?

65

(66)

GitHubEnterpriseを導入して得られた効果

» 組織全体での開発効率が向上した ⋄ 導入前後で生産性は約4倍に » ソフトウエアの内部品質が向上した ⋄ 導入前後で市場問い合わせ件数は約1/2にシステムテスト以降での不具合密度は約1/5に » 使えることがメリットではない、 使えないことがデメリットなんだと実感しています

(67)

これからも私達は

GitHubを愛しながら

開発していきます

(68)
(69)

参照

関連したドキュメント

日頃から製造室内で行っていることを一般衛生管理計画 ①~⑩と重点 管理計画

The goods and/or their replicas, the technology and/or software found in this catalog are subject to complementary export regulations by Foreign Exchange and Foreign Trade Law

Inspiron 15 5515 のセット アップ3. メモ: 本書の画像は、ご注文の構成によってお使いの

管理画面へのログイン ID について 管理画面のログイン ID について、 希望の ID がある場合は備考欄にご記載下さい。アルファベット小文字、 数字お よび記号 「_ (アンダーライン)

画面構成等は、電気工事店さまがスムーズに手続きを行えるように設計

Fig.5 The number of pulses of time series for 77 hours in each season in summer, spring and winter finally obtained by using the present image analysis... Fig.6 The number of pulses

宗像フェスは、著名アーティストによる音楽フェスを通じ、世界文化遺産「『神宿る島』宗像・沖ノ島と関連遺産群」とそれ

機排水口の放出管理目標値を示す。 画においては1号機排水口~4号機排水口の放出管理目標値を設定していない。.. 福島第二原子力発電所 )