Slide 1

Slide 1 text

Findy Inc. 【LT】ソフトウェア産業は進化しているのか? -Javaの想い出とともに- JJUG CCC 2024 Fall -LT- 2024/10/27 ファインディ株式会社 CTO室 高橋裕之 1

Slide 2

Slide 2 text

Findy Inc. 高橋 裕之 / Hiroyuki Takahashi ファインディ株式会社 CTO室 Software Engineer, SPI Coach, Agile Coach @Taka_bow takabow hiroyukitakah ● 1989年より組込みエンジニアとして、OS開発、通信プロトコル開発、RTOSや 組込みLinuxを基盤としたガジェット開発に16年携わる。 ● 2005年、それまでの経験を活かし、エンジニア人材と組織の課題解決に特化 したSPI(ソフトウェアプロセス改善)の専門家へ転身。 ● 現在は、SPIコーチおよびアジャイルコーチとして活動し、DORAメトリクスを活 用したプロセス改善活動を得意とする。 ● ソフトウェアエンジニアリングの潜在能力向上支援(イネーブルメント)に注力 し、組織のパフォーマンス最適化に貢献している。

Slide 3

Slide 3 text

Findy Inc. CONFIDENTIAL ファインディ株式会社について 3 Findyは、エンジニア組織向けのサービスを提供する、2014年創業・260人規 模のスタートアップです (シリーズCの資金調達を22年に実施) 経営陣 三菱重工業、BCGを経て2010年、創業期 のレアジョブに入社し、執行役員を経験。 その後、ファインディ株式会社を創業 CEO 山田 裕一朗 元GREEフルスタックエンジニア。 東京大学 情報理工学系研究科 創造情報学 専攻卒業後、GREE入社。 大学院では、稲葉真理研究室に所属。自然 言語処理やデータマイニング関連の論文を 執筆。 CTO 佐藤 将高 投資家 グローバル・ブレイン、ユナイテッド、SMBCベンチャーキャピタ ル、KDDI、JA三井リース、博報堂DYベンチャーズ、みずほキャ ピタル、Carbide Ventures *2019年5月 シリーズAで2億円調達 *2020年7月 シリーズBで7.7億円調達 *2022年4月 シリーズCで15億円調達 会社名 ファインディ株式会社 / Findy Inc. 代表者 山田 裕一朗 設立 2014年2月(本格的な事業開始は2016年7月) 社員数 263名(2024年6月時点) 資本金 22億5764万円(資本準備金含む) 住所 〒141-0032 東京都品川区大崎1-2-2 アートヴィレッジ大崎セントラ ルタワー 5階 事業許可番号 13-ユ-308478 事業内容 スカウト型リクルーティングサービス「Findy」 ハイスキルな業務委託エンジニア紹介サービス「Findy Freelance」 エンジニア組織支援SaaS「Findy Team+」 開発ツールのレビューサイト「Findy Tools」

Slide 4

Slide 4 text

Findy Inc. ビジョン 挑戦するエンジニアのプラットフォームをつくる Driving business growth through technology

Slide 5

Slide 5 text

© Findy Inc. ファインディが展開するエンジニアプラットフォーム サービス紹介 ※ 各種数値は、2024年6月時点のFindy転職、Findy Freelance、Findy Team+、Findy Globalの4サービスの累計での社数及び登録者数です。 
   なお、1社又は1名の方が複数のサービスに登録している場合は、そのサービスの数に応じて複数のカウントをしています。 ToC / ToB SaaS / ToB マッチングサービス 組織分析SaaS ToC / ToB 開発ツールメディア β版 GitHubやJiraを解析し、エンジニア組織の ⾒える化と⽣産性向上をサポート。 エンジニア組織の⾒える化 5万⼈以上のフリーランスエンジニアの 成功報酬型の⼈材紹介サービス。 フリーランスエンジニアの採⽤ 約12万⼈のエンジニアと880社以上の テック企業をマッチング。 正社員エンジニアの採⽤ 実際に利⽤している企業の声を元に、 開発ツールの導⼊や検討に必要な情報を 集約。企業の技術選定をサポート。 開発ツールのレビューサイト 5

Slide 6

Slide 6 text

Findy Inc. 6 ソフトウェア産業は進化しているの か?

Slide 7

Slide 7 text

Findy Inc. 「私の印象では、ソフトウェア産業は学ぶことも進化することもなかなかで きないで苦闘 しているように見えます。 この相対的な停滞は、コードを実行するハードウェアのとてつもない進化 によって見えなくされている のです。」 David Farley(2021) 引用:Farley, D.(2022), 長尾高弘 (訳). 継続的デリバリーのソフトウェア工学: もっと早く、もっと良いソフトウェアを作るための秘訣 (Nagao, T., Trans.). 日経BP社. (Original work published 2021) p.69 Modern Software Engineering 7

Slide 8

Slide 8 text

Findy Inc. 8 私が仕事で最初にやらされた 学んだ言語は Z80 アセンブリ言語でした Yaca2671 - 投稿者自身による著作物, CC 表示-継承 3.0, https://commons.wikimedia.org/w/index.php?curid=3940939による 1989年ごろ

Slide 9

Slide 9 text

Findy Inc. z80 9 org 100h msg: db 'Hello, World!$', 0 start: ld de, msg call print ret print: ld c, 9 int 21h ret 呪文みたい デバッグが大変

Slide 10

Slide 10 text

Findy Inc. 10 ほどなくして 「これからはC言語の時代だ」 「アセンブラをぜんぶCで置き換えろ!」 と言われました 1990年ごろ

Slide 11

Slide 11 text

Findy Inc. C言語(ANSI C) 11 #include int main() { printf("Hello, World!\n"); return 0; } アセンブリより 断然分かりやすい!!

Slide 12

Slide 12 text

Findy Inc. 12 ところが、しばらくすると 「これからはオブジェクト指向だ」 「オブジェクト指向で設計しろ」 と言われました

Slide 13

Slide 13 text

Findy Inc. C言語で 13

Slide 14

Slide 14 text

Findy Inc. C言語でオブジェクト指向設計… 14 #include #include // "クラス"構造体の定義 typedef struct { char message[50]; void (*print)(struct HelloWorld*); // メソッドを指す関数ポインタ } HelloWorld; // メソッド関数の定義 void printMessage(HelloWorld *self) { printf("%s\n", self->message); } // "コンストラクタ"関数 void HelloWorld_init(HelloWorld *self, const char *msg) { strncpy(self->message, msg, sizeof(self->message) - 1); self->message[sizeof(self->message) - 1] = '\0'; // 文字列終端の確保 self->print = printMessage; } int main() { // オブジェクトの生成と初期化 HelloWorld hw; HelloWorld_init(&hw, "Hello, World!"); // メソッドの呼び出し hw.print(&hw); return 0; } ハードル高し!

Slide 15

Slide 15 text

Findy Inc. 15 しばらくすると、 「これからはJava言語の時代だ 」 「CをぜんぶJavaで置き換えろ」 と言われました 1997年ごろ

Slide 16

Slide 16 text

Findy Inc. Java 16 class HelloWorld { private String message; public HelloWorld(String message) { this.message = message; } public void print() { System.out.println(message); } public static void main(String[] args) { HelloWorld hw = new HelloWorld("Hello, World!"); hw.print(); } } なるほどね! はじめから オブジェクト指向の 言語なのね!

Slide 17

Slide 17 text

Findy Inc. 17 でも…Javaの情報が少ないなぁ おぉ、良さそうな質問サイトがある ぞ! 1997年ごろ

Slide 18

Slide 18 text

Findy Inc. 18 https://web.archive.org/web/20110204173715/http://java-house.jp/ml/ 1997年ごろ

Slide 19

Slide 19 text

Findy Inc. 19 よーし、質問するぞぉ! 『Java初心者です! Stringに"を代入したいのですが、 これはどうやって 代入すればよいのでしょうか? お願いします! 』 1997年ごろ

Slide 20

Slide 20 text

Findy Inc. 20 初心者だからなん だ 自分で調べたの か?甘えるな (意訳) 「お願いします」だ と? 丸投げのつもりか? 1997年ごろ

Slide 21

Slide 21 text

Findy Inc. 21 心理的危険性 (※皆さん優しかった        文字コミュが限界なだけ) 1997年ごろ

Slide 22

Slide 22 text

Findy Inc. 22 黎明期はこんな感じでしたけど… 1997年ごろ

Slide 23

Slide 23 text

Findy Inc. 23 次第に良書やWebコンテンツが増え JJUGのようなコミュニティも発展し Javaは人気の言語となった 「これからはJava言語の時代だ 」 は、本当だった

Slide 24

Slide 24 text

Findy Inc. 24 ソフトウェア産業は進化しているの か? 再掲

Slide 25

Slide 25 text

Findy Inc. 「私の印象では、ソフトウェア産業は学ぶことも進化することもなかなかで きないで苦闘 しているように見えます。 この相対的な停滞は、コードを実行するハードウェアのとてつもない進化 によって見えなくされている のです。」 David Farley(2021) 引用:Farley, D.(2022), 長尾高弘 (訳). 継続的デリバリーのソフトウェア工学: もっと早く、もっと良いソフトウェアを作るための秘訣 (Nagao, T., Trans.). 日経BP社. (Original work published 2021) p.69 Modern Software Engineering 25

Slide 26

Slide 26 text

Findy Inc. 進化してないとは言わないが、決してペースは早くない ソフトウェアと設計の考え方を根本的に変えた変化はふたつしかない 1.アセンブリ言語からCへの変化 2.手続き型プログラミングから オブジェクト指向プログラミングへの変化 テクノロジーよりも、プロセスで苦戦しているように見える 引用:Farley, D.(2022), 長尾高弘 (訳). 継続的デリバリーのソフトウェア工学: もっと早く、もっと良いソフトウェアを作るための秘訣 (Nagao, T., Trans.). 日経BP社. (Original work published 2021) p.69 Modern Software Engineering 26 David Farley(2021)

Slide 27

Slide 27 text

Findy Inc. 27 なぜ、ソフトウェア産業は 学びも進化も苦戦しているの?

Slide 28

Slide 28 text

Findy Inc. 「間違った古い考えを捨てられない」から 28 David Farley(2021) 引用:Farley, D.(2022), 長尾高弘 (訳). 継続的デリバリーのソフトウェア工学: もっと早く、もっと良いソフトウェアを作るための秘訣 (Nagao, T., Trans.). 日経BP社. (Original work published 2021) p.69

Slide 29

Slide 29 text

Findy Inc. 「間違った考え方をなかなか捨てられない理由のひとつ は、 ソフトウェア開発のパフォーマンス(能力、業績)を効果的に計 測できていない ことにあります」 David Farley(2021) 引用:Farley, D.(2022), 長尾高弘 (訳). 継続的デリバリーのソフトウェア工学: もっと早く、もっと良いソフトウェアを作るための秘訣 (Nagao, T., Trans.). 日経BP社. (Original work published 2021) p.70 Modern Software Engineering 29

Slide 30

Slide 30 text

Findy Inc. (出典) Infrastructure as Code, 2nd Edition , Figure 1-2. Speed and quality map to quadrants 30 スピードより 品質を重視 品質より スピードを重視 スピードと品質 の両⽴ 壊れやすい 厄介な状態 高品質 低品質 遅い 速い 右下の象限: 品質よりスピードを重視 ● いわゆる「早く作って壊す」という考え方で す。スピードを重視して品質を犠牲にする チームは、乱雑で脆弱なシステムを構築しま す。その粗悪なシステムによって作業が遅く なり、左下の象限に滑り落ちていきます。こ のやり方を続けてきたスタートアップの多く が「勢い」を失ったと嘆きます。以前なら素 早く対応できた簡単な変更が、システムが複 雑に絡み合っているために、今では何日も何 週間もかかるようになっています。 左上の象限: スピードより品質を重視 ● 「私たちは重要な仕事をしているのだから、きちんとやらなければならない」という考え方です。しか し、納期のプレッシャーにより「場当たり的な対応」を強いられます。重厚なプロセスが改善の障壁とな り、技術的負債は「既知の問題」リストとともに増大します。これらのチームは左下の象限に落ち込みま す。改善が困難なため、結果として低品質なシステムになってしまいます。失敗への対応として更にプロ セスを追加します。このプロセスが改善をより困難にし、脆弱性とリスクを増大させます。これがさらな る失敗とプロセスの追加を招きます。特にリスクに敏感な業界では、このように働く組織の多くの人々 が、これが普通だと思い込んでいます。 スピードと品質はトレードオフではない

Slide 31

Slide 31 text

Findy Inc. (出典) Infrastructure as Code, 2nd Edition , Figure 1-2. Speed and quality map to quadrants 31 スピードより 品質を重視 品質より スピードを重視 スピードと品質 の両⽴ 壊れやすい 厄介な状態 高品質 低品質 遅い 速い 右下の象限: 品質よりスピードを重視 ● いわゆる「早く作って壊す」という考え方で す。スピードを重視して品質を犠牲にする チームは、乱雑で脆弱なシステムを構築しま す。その粗悪なシステムによって作業が遅く なり、左下の象限に滑り落ちていきます。こ のやり方を続けてきたスタートアップの多く が「勢い」を失ったと嘆きます。以前なら素 早く対応できた簡単な変更が、システムが複 雑に絡み合っているために、今では何日も何 週間もかかるようになっています。 左上の象限: スピードより品質を重視 ● 「私たちは重要な仕事をしているのだから、きちんとやらなければならない」という考え方です。しか し、納期のプレッシャーにより「場当たり的な対応」を強いられます。重厚なプロセスが改善の障壁とな り、技術的負債は「既知の問題」リストとともに増大します。これらのチームは左下の象限に落ち込みま す。改善が困難なため、結果として低品質なシステムになってしまいます。失敗への対応として更にプロ セスを追加します。このプロセスが改善をより困難にし、脆弱性とリスクを増大させます。これがさらな る失敗とプロセスの追加を招きます。特にリスクに敏感な業界では、このように働く組織の多くの人々 が、これが普通だと思い込んでいます。 スピードと品質はトレードオフではない それ、よく聞くんだけど ホントにー? 測ってみないと 信じられませんよね

Slide 32

Slide 32 text

Findy Inc. 32 安心してください、測れますよ。

Slide 33

Slide 33 text

© Findy Inc. ファインディが展開するエンジニアプラットフォーム サービス紹介 ※ 各種数値は、2024年6月時点のFindy転職、Findy Freelance、Findy Team+、Findy Globalの4サービスの累計での社数及び登録者数です。 
   なお、1社又は1名の方が複数のサービスに登録している場合は、そのサービスの数に応じて複数のカウントをしています。 ToC / ToB SaaS / ToB マッチングサービス 組織分析SaaS ToC / ToB 開発ツールメディア β版 GitHubやJiraを解析し、エンジニア組織の ⾒える化と⽣産性向上をサポート。 エンジニア組織の⾒える化 5万⼈以上のフリーランスエンジニアの 成功報酬型の⼈材紹介サービス。 フリーランスエンジニアの採⽤ 約12万⼈のエンジニアと880社以上の テック企業をマッチング。 正社員エンジニアの採⽤ 実際に利⽤している企業の声を元に、 開発ツールの導⼊や検討に必要な情報を 集約。企業の技術選定をサポート。 開発ツールのレビューサイト 33

Slide 34

Slide 34 text

© 2024 Findy Inc. 開発⽣産性(パフォーマンス)を測る指標 Four Keys
 SPACE
 2
 1
 3
 4
 ✔ DevOpsの最適化 ✔ 多様な観点での⽣産性評価 S
 P
 A
 C
 E
 デプロイ頻度 変更のリードタイム 変更障害率 平均修復時間 Satisfaction and well being Performance Activity Communication and collaboration Efficiency and flow

Slide 35

Slide 35 text

Findy Inc. 35 DevOps指標 変更リードタイム デプロイ頻度 デプロイ失敗からの 回復時間 変更失敗率 信頼性(可用性) Four Keys DORA Model 統計的相関 (参考)Google Cloud. ” Explore DORA's research program”. Google Cloud. https://www.devops-research.com/research.html. (参照 2023-1-10)

Slide 36

Slide 36 text

Findy Inc. Findy Team+画面イメージ:生産性可視化・向上 36 DevOps指標やコーディングプロセスにおける生産性を測定することで、効率・クオリ ティの全体観を把握しながら、生産性向上を検討できます 開発プロセス全体の生産性把握 (特に) コーディングプロセスの生産性把握 DevOps指標を観測し、開発効率やクオリティの全体観を把握 プルリク作成数やクローズ時間を観測すること で、コーディングプロセスの全体観を把握 現状の課題や開発組織としての目標、ビジネススピードを鑑みながら、生産性向上の打ち手を検討可能

Slide 37

Slide 37 text

Findy Inc. イベントのご案内:ぜひ、ブースをお尋ねください! 37 11.26(⽕) @オフライン|浜松町 お申込はこちら 11.15(⾦) @オンライン お申込はこちら

Slide 38

Slide 38 text

Findy Inc. 38 ガチャもやってね!

Slide 39

Slide 39 text

Findy Inc. 39 挑戦するエンジニアのプラットフォームをつくる Driving business growth through technology