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

新しいメンバーに Make debut してもらいやすくするための開発体制 with Python

新しいメンバーに Make debut してもらいやすくするための開発体制 with Python

JX Tech Talk #python
『Pythonista 達が語る速報サービス開発の舞台裏』
https://jxpress.connpass.com/event/215106/
2021-06-23(水) 19:30-

JX通信社主催のTech Talkイベントの登壇資料になります。

kimihiro_n

June 23, 2021
Tweet

More Decks by kimihiro_n

Other Decks in Technology

Transcript

  1. コーディング規約
 コードスタイルの統一
 ・人によってスタイルがまちまちだと混乱が生まれてしまう
 ・→ 統一ルールが不可欠
 
 
 PEP 8
 ・PEP

    8 を守っていれば大きなスタイルのすれ違いはない
 ・とはいえ拾えないルールも結構ある
   ・Import の順
   ・シングル、ダブルクオート
   ・変数の大文字小文字
 
 5
  2. CI による Lint チェック
 どうやって PEP 8 を守るか
 ・コードレビューで目視チェック?
   ・コードレビューの本質ではない


      ・スタイルの違いで都度議論するのは不毛
     ・スタイルの違いに「優劣」はない
 → CI に組み込んで Bot と壁打ちしてもらう
 
 
 
 Flake8
 ・PEP 8 の Linter
 ・ルール設定やプラグイン拡張ができる
 6
  3. 型ヒントによるアノテーション
 型ヒントを書く
 ・基本的に型ヒントを書くように
   ・関数の挙動が把握しやすい
   ・IDE による補完強化
   ・潜在的なバグの検知
 ・型の整合性も CI でチェックしたい


    
 
 
 Pyright
 ・コードフローに基づいた型チェック
 ・VSCode と親和性が高い
 ・プロジェクト設定が柔軟
 ・インストールに npm がいる(つらい)
 7
  4. 安心のためのテストコード
 テストコード
 ・既存のコードを壊していないことを保証する安全帯
 ・改修による予期せぬ影響に気付ける
  → 新メンバーにとっても心理的安全性が高い
 ・テストも当然 CI へ組み込んでおく
 ・Django

    の場合、RDB に実際に接続するテストも書きやすい
 ・CI 上で Docker Compose してテスト
   ・動作環境に近いテストができる
   ・実行遅いのが欠点
 Django のテスト
 8
  5. CI による Product Ready な開発
 「コーディングルール」
 「型チェック」
 「テスト」を CI に組み込んで自動チェック


     → 「Product Ready」なコードが完成 
    本質的な部分だけをレビューできる
 
 「型アノテーション」「テストコード」
 の追加は慣れが必要
  ・最初はコーディングルールにのみ準拠
  ・コードレビューしつつ順次追加してもらう
 
 実際の運用
 9
  6. docker compose による開発環境
 
 
・docker compose up の1コマンドで完結するように
   ・複雑な依存も Dockerfile

    内でインストール
   ・データベースも一緒に立ち上げられる
     ・壊してもすぐ作り直せる
   ・プラットフォーム固有機能(Amazon DynamoDB など)
 → エミュレータを活用 (DynamoDB Local)
   ・Windows でも動く(やや罠あり)
 docker compose
 12
  7. 検証環境の渋滞解消
 検証環境の渋滞
 ・当初検証環境が1つしかなかった
   ・利用したい人で順番待ちの発生
   ・開発スピードのボトルネックに
 kubernetes による複数環境
 ・Kubernetes でブランチごとに環境をつくれるように
 ・任意のフロントコードと

    API を組み合わせて検証可能
   → 複数のメンバーが同時に検証をすすめられるように
 Link: APIとフロントのテスト環境を気軽に作れるようにして、動作検証の渋滞を解消したはなし 14
  8. 例: Django
 ・Web 開発をする上でおそらく最も大きな分岐点
 ・RDB を使った開発であれば爆速で動くものが作れる
 ・ただし、他のフレームワークへの差し替えは容易でない
 
 ・Django を導入する覚悟


      ・プロダクトが大きくなっても付き合っていけるか
   ・Django が書けるメンバーを集められるか
     ・Pythonista でも Django 未経験は大勢
     ・SQL を隠すので初学者には触りやすい面も
 ・ただしパフォーマンスには注意
   ・型アノテーションと相性が悪い問題
 
 17