Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutter は DCM が 9 割

Flutter は DCM が 9 割

ANDPAD inc

February 26, 2025
Tweet

More Decks by ANDPAD inc

Other Decks in Programming

Transcript

  1. © 2024 ANDPAD All Rights Reserved. 1 FlutterはDCMが9割(諸説あり) 2025/02/26 食べログ

    x ANDPAD x Sansan モバイル勉強会 #2 株式会社アンドパッド 開発部 SWE 工藤 厚太郎
  2. © 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 自己紹介
  3. © 2024 ANDPAD All Rights Reserved. Confidential 6 Flutterの良いところ 1.

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

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

    開発生産性と開発体験 1. クロスプラットフォーム対応 2. ホットリロード 3. 宣言的UI 4. Googleが提供していて将来性がある
  6. © 2024 ANDPAD All Rights Reserved. Confidential 10 DCMって何? •

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

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

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

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

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

    Lint rules • Metrics • Widget analysis • Assets analysis • Project structure analysis https://dcm.dev/features/analyze/
  13. © 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
  14. © 2024 ANDPAD All Rights Reserved. Confidential 18 How to

    Run DCM in CI https://dcm.dev/docs/ci-integrations/github-actions/
  15. © 2024 ANDPAD All Rights Reserved. Confidential 19 アンドパッドでは •

    analysis_option.yamlの設定を共有した ◦ 少しずつルールを増やして厳格にしてきている • CIでPRチェックしてfix対象があるとNGにした
  16. © 2024 ANDPAD All Rights Reserved. Confidential 20 • スタイルに関するレビュー指摘が減った

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

    標準のLinterとコンフリクトしないの? Q A dart_code_metrics ってなかったっけ? Lintのために有償ツールを使うのはちょっと・・・ Q A Q A 21 よくある質問
  18. © 2024 ANDPAD All Rights Reserved. Confidential 23 • 今まではPull

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

    Request単位の評価だったので、受動的な改善になりがちだった • ダッシュボードで経時変化を追うことで、将来に向けた能動的な改善活動にとり くみやすくなる(はず) ダッシュボード機能が出た
  20. © 2024 ANDPAD All Rights Reserved. Confidential 25 • プロジェクトごとに静的解析して結果を確認できる

    ◦ →品質改善用のツールでは? • Code Climate(Quality) のFlutter版と捉えると有償でもアリじゃないでしょう か? ◦ Team $16.67 per mo per seat billed annually • ベータから安定版への変更は3月中旬を予定しているとのこと ◦ 今から稟議etcすればちょうど良いタイミング! Linterではなく・・・
  21. © 2024 ANDPAD All Rights Reserved. Confidential 26 • $

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

    dcm run --analyze --upload --project={キー} --email={メールアド レス} lib 使ってみた
  23. © 2024 ANDPAD All Rights Reserved. Confidential 28 • ダッシュボードを見るコンソールが管理者以外アクセスできない

    ◦ 今回は一時的に管理者アカウントを借りて試した ◦ Stable版は開発者アカウントでアクセス可能になると願いたい • --with-details オプションでより詳細結果を見れるそうだが、使ったら500 エラー ◦ Discordで問い合わせ中・・・ ▪ https://discord.com/channels/1115186114865672232/1115190 627903209552/1344138938486358117 注意点
  24. © 2024 ANDPAD All Rights Reserved. Confidential 29 • DCMを使うことでコードの一貫性を強固にできる

    • yamlファイルの共有だけで他プロジェクトも改善できる • ダッシュボードを使えばチームの施策としても取り組みやすくなるはず まとめ