SlideShare a Scribd company logo
1 of 31
Download to read offline
1
とあるGaroon開発者のお仕事
2023年11月16日
Garoon開発
Webアプリケーションエンジニア
金丸 眞也
2
目次
1. 自己紹介
2. Garoonの紹介
3. Garoon開発チームの紹介
4. Yukimiチームの紹介
5. PHPのアップデートについて
6. 最近行った業務
3
3
Copyright © Cybozu
自己紹介
4
自己紹介
名前
所属
出身大学
入社
趣味
一言
:金丸 眞也
:開発本部 Garoon Yukimiチーム
:東京工業大学
:2020年4月サイボウズ新卒入社
:歌うこと、ゲーム
:丁寧な暮らしがしたい
かねまる なおや
5
5
Copyright © Cybozu
Garoonの紹介
6
7
Copyright © Cybozu
PHP4時代から続く、(PHPだけでも) 120万行以上のコード!
そりゃ、課題もみつかってきます!
• 古いコードによる脆弱性への対応
• リリース方法の見直し
• パフォーマンスの改善
• インフラ基盤の刷新に合わせた対応
Garoonは21歳!(2002年初代リリース)
8
Copyright © Cybozu
直近の新機能例:
• PDFプレビュー機能
• ユーザープロフィールのポップアップウィンドウ表示
新機能開発もまだまだ続きます!
9
Copyright © Cybozu
ベトナムチームと共同開発!
日本は課題解決、ベトナムは新規開発で役割分担!
Garoonチームの開発体制
……しかし、「課題解決」だけでも対応領域が広い……広すぎる……!
10
Copyright © Cybozu
分担により、スイッチングコストや認知負荷が軽減!
課題解決を4つのチームに分担
11
Copyright © Cybozu
分担により、スイッチングコストや認知負荷が軽減!
課題解決を4つのチームに分担
12
12
Copyright © Cybozu
Yukimiチームの紹介
13
Copyright © Cybozu
セキュリティの担保のための活動
• 脆弱性の対応
• XSS、SQLインジェクション等
• ライブラリの更新
• 新機能利用のためもあるが、脆弱性対応のためであることが多い
• こまめに更新しないと、最新のセキュリティパッチが取り込めない!
• 毎年行っている、特に大きいものはPHPの更新
より安全なGaroonをユーザーに届ける!
16
16
Copyright © Cybozu
PHPのアップデートについて
17
Copyright © Cybozu
PHPアップデートの流れ
影響調査 実装 テスト リリース
更新により機能が使えなくなったり、エラーの種類の変更があったりするので、
単純に実行ファイルを置き換えたり、
`$ brew upgrade php` みたいなことをすればいいというものではない!
18
Copyright © Cybozu
PHPアップデートの流れ
影響調査 実装 テスト リリース
19
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
2.PHPの内部API(C言語で書かれた部分)に対する調査
3.PHPのバージョンだけ上げたブランチを試しに使う調査
4.ライブラリに対する調査
PHPアップデート調査の大まかな流れ
20
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
• 後ほど詳しく話します
2.PHPの内部API(C言語で書かれた部分)に対する調査
3.PHPのバージョンだけ上げたブランチを試しに使う調査
4.ライブラリに対する調査
PHPアップデート調査の大まかな流れ
21
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
• 後ほど詳しく話します
2.PHPの内部API(C言語で書かれた部分)に対する調査
• GaroonはPHPに手を入れて自前でビルドして利用している
• コンフリクトが発生しているかも
3.PHPのバージョンだけ上げたブランチを試しに使う調査
4.ライブラリに対する調査
PHPアップデート調査の大まかな流れ
22
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
• 後ほど詳しく話します
2.PHPの内部API(C言語で書かれた部分)に対する調査
• GaroonはPHPに手を入れて自前でビルドして利用している
• コンフリクトが発生しているかも
3.PHPのバージョンだけ上げたブランチを試しに使う調査
• 動かしてみて分かる問題に早めに気づくため
4.ライブラリに対する調査
PHPアップデート調査の大まかな流れ
23
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
• 後ほど詳しく話します
2.PHPの内部API(C言語で書かれた部分)に対する調査
• GaroonはPHPに手を入れて自前でビルドして利用している
• コンフリクトが発生しているかも
3.PHPのバージョンだけ上げたブランチを試しに使う調査
• 動かしてみて分かる問題に早めに気づくため
4.ライブラリに対する調査
• Garoonが利用するライブラリが新しいPHPに対応しているか知るため
PHPアップデート調査の大まかな流れ
24
24
Copyright © Cybozu
最近の業務紹介
25
Copyright © Cybozu
1.PHPの公式移行マニュアルをもとにした調査
2.PHPの内部API(C言語で書かれた部分)に対する調査
3.PHPのバージョンだけ上げたブランチを試しに使う調査
4.ライブラリに対する調査
PHPアップデート調査の大まかな流れ
26
Copyright © Cybozu
1.調査対象の把握
2.調査方法の調査
3.実調査
PHPの公式移行マニュアルをもとにした調査
27
Copyright © Cybozu
https://www.php.net/manual/en/migration82.php
1. 調査対象の把握
PHPの公式移行マニュアル
28
Copyright © Cybozu
アップデートによりなんらかの変更があった件数
PHP7.4→PHP8.0:240件 (メジャーアップデートは多め)
PHP8.0→PHP8.1:98件
PHP8.1→PHP8.2:66件
1. 調査対象の把握
29
Copyright © Cybozu
PHPの更新作業(調査、実装、テスト、リリース)が完了するまでに
Garoon本体に新機能やバグ修正等がどんどんマージされる!
何度も調査しなければいけない!
→ 調査を繰り返し行えるよう、調査方法をまとめる!
→ 自動で調査できるものはスクリプトを作成し簡略化!
2. 調査方法の調査
30
Copyright © Cybozu
■ Garoonに影響があるか(ありそうか)どうかを調べる
• PHPの更新によって追加された関数、定数と同じ名前のものが
Garoonで既に使われているかも
• 比較演算の結果が変わるけど大丈夫?(大丈夫じゃない)
■ Garoonに影響がある(ありそうな)場合
それをどうやって発見するのか、方法をまとめていく
• 同じ関数名を使っていないかgrepする
• 適切な型の引数が渡されているかを確認する
2. 調査方法の調査
31
Copyright © Cybozu
「2. 調査方法の調査」で決めた方法で実際にGaroonのソースコー
ドを調査し、問題を発見する。
• PHP8.2から非推奨になる関数をGaroonでも使っていた!
→ 代替関数に置き換えるタスクを作成!
• PHP8.2で挙動が変化する関数はGaroonで使われていない!
→ 問題なし!ヨシ!
→ 調査記録をまとめて、調査完了!
3. 実調査
32
32
32
Copyright © Cybozu
まとめ
• Garoonの日本チームは課題解決に日々奮闘してます!
• ライブラリ更新はこまめに行うのが大事!
• 大きなプロダクトのライブラリ更新には、
入念な調査が必須!
レガシーなプロダクトに興味がある!
PHPに興味がある!そんな方はぜひGaroonへ!
33
33
33
Copyright © Cybozu
■ Garoon開発チームを紹介します! 2023
https://blog.cybozu.io/entry/2023/10/03/162616
■ Garoonのセキュリティを維持するYukimiチームの紹介
https://blog.cybozu.io/entry/2023/10/04/101916
■ 20年ものの巨大レガシープロダクトをPHP 8.0にアップデートした際の対
策と得られた知見
https://fortee.jp/phpcon-2022/proposal/8f29f20e-1275-49eb-89c0-
fe684e28d110
もっと詳しく知りたい場合は、以下をご覧ください!

More Related Content

Similar to とあるGaroon開発者のお仕事.pptx

ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-Yossy Taka
 
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるHironobu Saitoh
 
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewRakuten Group, Inc.
 
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違いPHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違いMasataka Kono
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計Kouji YAMADA
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Masayuki KaToH
 
20150411コードリーディング
20150411コードリーディング20150411コードリーディング
20150411コードリーディングAkihiko Kigure
 
AWS Jr.ChampioinsLT
AWS Jr.ChampioinsLTAWS Jr.ChampioinsLT
AWS Jr.ChampioinsLTrisa iwama
 
Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満Masakazu Muraoka
 
今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPythonKeisuke Imura
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringIssei Hiraoka
 
アジャイル開発10年間の軌跡
アジャイル開発10年間の軌跡アジャイル開発10年間の軌跡
アジャイル開発10年間の軌跡Hiroyuki Tanaka
 
if-up 2019 | A2. クラウドにつながり始めたハードウェア
if-up 2019 | A2. クラウドにつながり始めたハードウェアif-up 2019 | A2. クラウドにつながり始めたハードウェア
if-up 2019 | A2. クラウドにつながり始めたハードウェアSORACOM,INC
 
PhoneGapなんか要らない? FirefoxOS
PhoneGapなんか要らない? FirefoxOSPhoneGapなんか要らない? FirefoxOS
PhoneGapなんか要らない? FirefoxOSMizuho Sakamaki
 

Similar to とあるGaroon開発者のお仕事.pptx (20)

レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話レガシーコードに向き合ってみた話
レガシーコードに向き合ってみた話
 
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
 
オブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみるオブジェクトストレージを使ってイメージビューアを作ってみる
オブジェクトストレージを使ってイメージビューアを作ってみる
 
Mobile + HTML5
Mobile + HTML5Mobile + HTML5
Mobile + HTML5
 
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
 
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違いPHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
 
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
 
20150411コードリーディング
20150411コードリーディング20150411コードリーディング
20150411コードリーディング
 
AWS Jr.ChampioinsLT
AWS Jr.ChampioinsLTAWS Jr.ChampioinsLT
AWS Jr.ChampioinsLT
 
Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満
 
今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPython
 
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjpGo + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
 
Pokelabo android web
Pokelabo android webPokelabo android web
Pokelabo android web
 
アジャイル開発10年間の軌跡
アジャイル開発10年間の軌跡アジャイル開発10年間の軌跡
アジャイル開発10年間の軌跡
 
Rails api way in aiming
Rails api way in aimingRails api way in aiming
Rails api way in aiming
 
if-up 2019 | A2. クラウドにつながり始めたハードウェア
if-up 2019 | A2. クラウドにつながり始めたハードウェアif-up 2019 | A2. クラウドにつながり始めたハードウェア
if-up 2019 | A2. クラウドにつながり始めたハードウェア
 
PhoneGapなんか要らない? FirefoxOS
PhoneGapなんか要らない? FirefoxOSPhoneGapなんか要らない? FirefoxOS
PhoneGapなんか要らない? FirefoxOS
 

More from Cybozu, Inc.

サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfサイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfCybozu, Inc.
 
20240321 エンジニアマーケティングの業務紹介(DevRel).pptx
20240321 エンジニアマーケティングの業務紹介(DevRel).pptx20240321 エンジニアマーケティングの業務紹介(DevRel).pptx
20240321 エンジニアマーケティングの業務紹介(DevRel).pptxCybozu, Inc.
 
ソリューションエンジニアリング部_岡本.pptx
ソリューションエンジニアリング部_岡本.pptxソリューションエンジニアリング部_岡本.pptx
ソリューションエンジニアリング部_岡本.pptxCybozu, Inc.
 
テクニカルエンジニアリング部_富樫.pptx
テクニカルエンジニアリング部_富樫.pptxテクニカルエンジニアリング部_富樫.pptx
テクニカルエンジニアリング部_富樫.pptxCybozu, Inc.
 
会社説明資料2024ver.
会社説明資料2024ver.会社説明資料2024ver.
会社説明資料2024ver.Cybozu, Inc.
 
ソリューションエンジニアリング部_岩崎.pptx
ソリューションエンジニアリング部_岩崎.pptxソリューションエンジニアリング部_岩崎.pptx
ソリューションエンジニアリング部_岩崎.pptxCybozu, Inc.
 
システムデベロップメント部_山田.pdf
システムデベロップメント部_山田.pdfシステムデベロップメント部_山田.pdf
システムデベロップメント部_山田.pdfCybozu, Inc.
 
kintoneエンジニアのお仕事
kintoneエンジニアのお仕事kintoneエンジニアのお仕事
kintoneエンジニアのお仕事Cybozu, Inc.
 
Garoonエンジニアのお仕事
Garoonエンジニアのお仕事Garoonエンジニアのお仕事
Garoonエンジニアのお仕事Cybozu, Inc.
 
とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事Cybozu, Inc.
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事Cybozu, Inc.
 
体験入部制度での経験を活かして開発改善を進めた話
体験入部制度での経験を活かして開発改善を進めた話体験入部制度での経験を活かして開発改善を進めた話
体験入部制度での経験を活かして開発改善を進めた話Cybozu, Inc.
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事Cybozu, Inc.
 
3年目フロントエンドエンジニアのお仕事
3年目フロントエンドエンジニアのお仕事3年目フロントエンドエンジニアのお仕事
3年目フロントエンドエンジニアのお仕事Cybozu, Inc.
 
kintone新機能開発のお仕事_和渕.pptx
kintone新機能開発のお仕事_和渕.pptxkintone新機能開発のお仕事_和渕.pptx
kintone新機能開発のお仕事_和渕.pptxCybozu, Inc.
 
フロントエンドエンジニアのお仕事.pptx
フロントエンドエンジニアのお仕事.pptxフロントエンドエンジニアのお仕事.pptx
フロントエンドエンジニアのお仕事.pptxCybozu, Inc.
 
Webアプリケーションエンジニア(Garoon)のお仕事.pptx
Webアプリケーションエンジニア(Garoon)のお仕事.pptxWebアプリケーションエンジニア(Garoon)のお仕事.pptx
Webアプリケーションエンジニア(Garoon)のお仕事.pptxCybozu, Inc.
 
ソリューションエンジニアリング部_瀧井.pptx
ソリューションエンジニアリング部_瀧井.pptxソリューションエンジニアリング部_瀧井.pptx
ソリューションエンジニアリング部_瀧井.pptxCybozu, Inc.
 
ソリューションエンジニアリング部_白坂.pptx
ソリューションエンジニアリング部_白坂.pptxソリューションエンジニアリング部_白坂.pptx
ソリューションエンジニアリング部_白坂.pptxCybozu, Inc.
 
2025新卒向け_システムコンサルティング本部の紹介.pptx
2025新卒向け_システムコンサルティング本部の紹介.pptx2025新卒向け_システムコンサルティング本部の紹介.pptx
2025新卒向け_システムコンサルティング本部の紹介.pptxCybozu, Inc.
 

More from Cybozu, Inc. (20)

サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfサイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
 
20240321 エンジニアマーケティングの業務紹介(DevRel).pptx
20240321 エンジニアマーケティングの業務紹介(DevRel).pptx20240321 エンジニアマーケティングの業務紹介(DevRel).pptx
20240321 エンジニアマーケティングの業務紹介(DevRel).pptx
 
ソリューションエンジニアリング部_岡本.pptx
ソリューションエンジニアリング部_岡本.pptxソリューションエンジニアリング部_岡本.pptx
ソリューションエンジニアリング部_岡本.pptx
 
テクニカルエンジニアリング部_富樫.pptx
テクニカルエンジニアリング部_富樫.pptxテクニカルエンジニアリング部_富樫.pptx
テクニカルエンジニアリング部_富樫.pptx
 
会社説明資料2024ver.
会社説明資料2024ver.会社説明資料2024ver.
会社説明資料2024ver.
 
ソリューションエンジニアリング部_岩崎.pptx
ソリューションエンジニアリング部_岩崎.pptxソリューションエンジニアリング部_岩崎.pptx
ソリューションエンジニアリング部_岩崎.pptx
 
システムデベロップメント部_山田.pdf
システムデベロップメント部_山田.pdfシステムデベロップメント部_山田.pdf
システムデベロップメント部_山田.pdf
 
kintoneエンジニアのお仕事
kintoneエンジニアのお仕事kintoneエンジニアのお仕事
kintoneエンジニアのお仕事
 
Garoonエンジニアのお仕事
Garoonエンジニアのお仕事Garoonエンジニアのお仕事
Garoonエンジニアのお仕事
 
とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
 
体験入部制度での経験を活かして開発改善を進めた話
体験入部制度での経験を活かして開発改善を進めた話体験入部制度での経験を活かして開発改善を進めた話
体験入部制度での経験を活かして開発改善を進めた話
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
 
3年目フロントエンドエンジニアのお仕事
3年目フロントエンドエンジニアのお仕事3年目フロントエンドエンジニアのお仕事
3年目フロントエンドエンジニアのお仕事
 
kintone新機能開発のお仕事_和渕.pptx
kintone新機能開発のお仕事_和渕.pptxkintone新機能開発のお仕事_和渕.pptx
kintone新機能開発のお仕事_和渕.pptx
 
フロントエンドエンジニアのお仕事.pptx
フロントエンドエンジニアのお仕事.pptxフロントエンドエンジニアのお仕事.pptx
フロントエンドエンジニアのお仕事.pptx
 
Webアプリケーションエンジニア(Garoon)のお仕事.pptx
Webアプリケーションエンジニア(Garoon)のお仕事.pptxWebアプリケーションエンジニア(Garoon)のお仕事.pptx
Webアプリケーションエンジニア(Garoon)のお仕事.pptx
 
ソリューションエンジニアリング部_瀧井.pptx
ソリューションエンジニアリング部_瀧井.pptxソリューションエンジニアリング部_瀧井.pptx
ソリューションエンジニアリング部_瀧井.pptx
 
ソリューションエンジニアリング部_白坂.pptx
ソリューションエンジニアリング部_白坂.pptxソリューションエンジニアリング部_白坂.pptx
ソリューションエンジニアリング部_白坂.pptx
 
2025新卒向け_システムコンサルティング本部の紹介.pptx
2025新卒向け_システムコンサルティング本部の紹介.pptx2025新卒向け_システムコンサルティング本部の紹介.pptx
2025新卒向け_システムコンサルティング本部の紹介.pptx
 

とあるGaroon開発者のお仕事.pptx