Slide 1

Slide 1 text

© 2024 ANDPAD All Rights Reserved. 1 FlutterはDCMが9割(諸説あり) 2025/02/26 食べログ x ANDPAD x Sansan モバイル勉強会 #2 株式会社アンドパッド 開発部 SWE 工藤 厚太郎

Slide 2

Slide 2 text

© 2024 ANDPAD All Rights Reserved. Confidential ● 2020年1月にアンドパッド入社 ○ ~2020年6月まで施工管理アプリのAndroidアプリ開 発 ○ ~2022年6月まで検査アプリのFlutterアプリ開発 ○ ~2024年12月まで受発注アプリのFlutterアプリ開発 ○ 2025年1月からRailsとかVueとかを頑張り始めた ● スト6はモダンA.K.I. 工藤 厚太郎 https://x.com/derakudo https://github.com/ham-burger 2 自己紹介

Slide 3

Slide 3 text

© 2024 ANDPAD All Rights Reserved. Confidential 3

Slide 4

Slide 4 text

© 2024 ANDPAD All Rights Reserved. Confidential 4 モバイルアプリ(Kotlin/Swift)

Slide 5

Slide 5 text

© 2024 ANDPAD All Rights Reserved. Confidential 5 Flutterアプリは4+α(開発中)

Slide 6

Slide 6 text

© 2024 ANDPAD All Rights Reserved. Confidential 6 Flutterの良いところ 1. クロスプラットフォーム対応 2. ホットリロード 3. 宣言的UI 4. Googleが提供していて将来性がある

Slide 7

Slide 7 text

© 2024 ANDPAD All Rights Reserved. Confidential 7 Flutterの良いところ 1. クロスプラットフォーム対応 2. ホットリロードが便利 3. 宣言的UI → ComposeやSwiftUIの登場で優位性が減った 4. Googleが提供していて将来性がある → ???

Slide 8

Slide 8 text

© 2024 ANDPAD All Rights Reserved. Confidential 8 Flutterの良いところ → 開発生産性と開発体験 1. クロスプラットフォーム対応 2. ホットリロード 3. 宣言的UI 4. Googleが提供していて将来性がある

Slide 9

Slide 9 text

© 2024 ANDPAD All Rights Reserved. Confidential 9 https://dcm.dev/

Slide 10

Slide 10 text

© 2024 ANDPAD All Rights Reserved. Confidential 10 DCMって何? ● > Advanced linter for Flutter development teams. ○ めっちゃいいLinter ● Analyzeがいろんな観点でコードの標準化をサポートしてくれる ● 有償ツール ○ Teamsプランだと$14 per user / month

Slide 11

Slide 11 text

© 2024 ANDPAD All Rights Reserved. Confidential 11 DCMって何? ● > Advanced linter for Flutter development teams. ○ めっちゃいいLinter ● Analyzeがいろんな観点でコードの標準化をサポートしてくれる ● 有償ツール ○ Teamsプランだと$14 per user / month →日本語の記事がヒットしない???

Slide 12

Slide 12 text

© 2024 ANDPAD All Rights Reserved. Confidential 12 Analyze ● Lint rules ● Metrics ● Widget analysis ● Assets analysis ● Project structure analysis https://dcm.dev/docs/rules/riverpod/use-ref-read-synchronously/

Slide 13

Slide 13 text

© 2024 ANDPAD All Rights Reserved. Confidential 13 Analyze ● Lint rules ● Metrics ● Widget analysis ● Assets analysis ● Project structure analysis https://dcm.dev/features/analyze/

Slide 14

Slide 14 text

© 2024 ANDPAD All Rights Reserved. Confidential 14 Analyze ● Lint rules ● Metrics ● Widget analysis ● Assets analysis ● Project structure analysis https://dcm.dev/features/analyze/

Slide 15

Slide 15 text

© 2024 ANDPAD All Rights Reserved. Confidential 15 Analyze ● Lint rules ● Metrics ● Widget analysis ● Assets analysis ● Project structure analysis https://dcm.dev/features/analyze/

Slide 16

Slide 16 text

© 2024 ANDPAD All Rights Reserved. Confidential 16 Analyze ● Lint rules ● Metrics ● Widget analysis ● Assets analysis ● Project structure analysis https://dcm.dev/features/analyze/

Slide 17

Slide 17 text

© 2024 ANDPAD All Rights Reserved. Confidential 1. Install a. $ brew tap CQLabs/dcm b. $ brew install dcm 2. IDE用Extensionの導入 3. Activation a. $ dcm activate --license-key=YOUR_KEY 4. analysis_options.yaml へルール追記 5. コマンド実行してみる a. $ dcm run --analyze --unused-code lib 17 How to Run DCM Locally

Slide 18

Slide 18 text

© 2024 ANDPAD All Rights Reserved. Confidential 18 How to Run DCM in CI https://dcm.dev/docs/ci-integrations/github-actions/

Slide 19

Slide 19 text

© 2024 ANDPAD All Rights Reserved. Confidential 19 アンドパッドでは ● analysis_option.yamlの設定を共有した ○ 少しずつルールを増やして厳格にしてきている ● CIでPRチェックしてfix対象があるとNGにした

Slide 20

Slide 20 text

© 2024 ANDPAD All Rights Reserved. Confidential 20 ● スタイルに関するレビュー指摘が減った ○ アプリ単位で少人数のアプリ開発チームを組む体制だったため、担当者に よって実装スタイルが変わりがちだった ○ 新入社員やベトナム法人メンバーが増える中で古株の好みやチームの雰囲気 で一貫性を維持するのが大変だった ○ 他プロジェクトとのスタイル差分が減ってコードを見るハードルが下がった ● ルールと対応するドキュメントがあるので、ルール設定時のコミュニケーション も楽だった 所感

Slide 21

Slide 21 text

© 2024 ANDPAD All Rights Reserved. Confidential そいつがDCMに生まれ変わりました 一緒に使えるようになってます 気持ちはわかります 標準のLinterとコンフリクトしないの? Q A dart_code_metrics ってなかったっけ? Lintのために有償ツールを使うのはちょっと・・・ Q A Q A 21 よくある質問

Slide 22

Slide 22 text

© 2024 ANDPAD All Rights Reserved. Confidential 22 ダッシュボード機能が出た https://dcm.dev/blog/2025/02/11/announcing-dcm-dashboards

Slide 23

Slide 23 text

© 2024 ANDPAD All Rights Reserved. Confidential 23 ● 今まではPull Request単位の評価だったので、受動的な改善になりがちだった ● ダッシュボードで経時変化を追うことで、将来に向けた能動的な改善活動にとり くみやすくなる(はず) ダッシュボード機能が出た

Slide 24

Slide 24 text

© 2024 ANDPAD All Rights Reserved. Confidential 24 ● 今まではPull Request単位の評価だったので、受動的な改善になりがちだった ● ダッシュボードで経時変化を追うことで、将来に向けた能動的な改善活動にとり くみやすくなる(はず) ダッシュボード機能が出た

Slide 25

Slide 25 text

© 2024 ANDPAD All Rights Reserved. Confidential 25 ● プロジェクトごとに静的解析して結果を確認できる ○ →品質改善用のツールでは? ● Code Climate(Quality) のFlutter版と捉えると有償でもアリじゃないでしょう か? ○ Team $16.67 per mo per seat billed annually ● ベータから安定版への変更は3月中旬を予定しているとのこと ○ 今から稟議etcすればちょうど良いタイミング! Linterではなく・・・

Slide 26

Slide 26 text

© 2024 ANDPAD All Rights Reserved. Confidential 26 ● $ dcm run --analyze --upload --project={キー} --email={メールアド レス} lib 使ってみた

Slide 27

Slide 27 text

© 2024 ANDPAD All Rights Reserved. Confidential 27 ● $ dcm run --analyze --upload --project={キー} --email={メールアド レス} lib 使ってみた

Slide 28

Slide 28 text

© 2024 ANDPAD All Rights Reserved. Confidential 28 ● ダッシュボードを見るコンソールが管理者以外アクセスできない ○ 今回は一時的に管理者アカウントを借りて試した ○ Stable版は開発者アカウントでアクセス可能になると願いたい ● --with-details オプションでより詳細結果を見れるそうだが、使ったら500 エラー ○ Discordで問い合わせ中・・・ ■ https://discord.com/channels/1115186114865672232/1115190 627903209552/1344138938486358117 注意点

Slide 29

Slide 29 text

© 2024 ANDPAD All Rights Reserved. Confidential 29 ● DCMを使うことでコードの一貫性を強固にできる ● yamlファイルの共有だけで他プロジェクトも改善できる ● ダッシュボードを使えばチームの施策としても取り組みやすくなるはず まとめ