LoginSignup
6
9

More than 3 years have passed since last update.

REST API開発での仕様書生成、コード生成(Python編)

Posted at

内容

  • REST API開発の効率化のため、ツールを使って仕様書生成、コード生成、スタイルチェック、自動フォーマットをすると思います。
  • Pythonを対象に、私が便利だと思っているツールをまとめます。
  • 開発エディターは、VSCodeです。

image.png

REST API関連

  • OpenAPI仕様をyaml形式で書いて、REST APIのインターフェース仕様書生成とコード生成をします。
    • インターフェース仕様書
    • サーバー側のスタブ(コントローラー、HTTPリクエスト・レスポンスのモデル)
    • フロント側のREST API用のクライアントSDK
  • サーバースタブの生成は非常に便利です。
    • PythonでFlaskのコードを生成すると、OpenAPI仕様をベースにHTTPリクエストの制御をするFlaskアプリ(connexionというライブラリでラップされている)のコントローラーまでできます。
    • OpenAPI仕様を基に、HTTPリクエストのバリデーションをしてくれるので、自分でバリデーションのコードを開発する必要がありません。
    • また、クライアント側に対しては、サーバー側が完成するまでのスタブサーバーとして利用することもできます。
  • クライアントSDKも便利です。自分でエンドポイントやリクエストを作っていくより簡単です。
  • 使用するツールは下記です。
用途 ツール名 説明 リンク
OpenAPI仕様の編集 VSCode + OpenAPI Editor(拡張機能) VSCode上で、OpenAPI仕様を書きます。左サイドに、パスやスキーマの目次ができるのが便利です。 https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi
OpenAPI仕様の参照 VSCode + Swagger Viewer(拡張機能) OpenAPI仕様をドキュメントとして参照することができます。 https://marketplace.visualstudio.com/items?itemName=Arjun.swagger-viewer
OpenAPI仕様のバリデーション openapi-generator CLIでOpenAPI仕様のバリデーションができます。
OpenAPI Editorでは検出しきれないエラーも検出できます。ただ、これでも検出しきれないバグはあります。例えば、スキーマでrequiredに設定した項目が、実はプロパティ定義されていないとか。こういったものは、サーバースタブをコード生成して、起動してみるとエラーするので気づきます。
https://github.com/OpenAPITools/openapi-generator
コード生成 openapi-generator OpenAPI仕様(yamlファイル)からコード生成(サーバースタブ、クライアントSDK)できます。 同上
ドキュメント生成 openapi-genrator REST APIインターフェース仕様書をHTML形式で生成します。 同上

Python関連

  • 開発したコードから、クラス図、クラス仕様書を生成します。
    • クラス仕様書を生成する前提として、docstringを書く必要があります。
  • コード開発では、Linter(スタイルチェック)とFormatter(自動フォーマット)も便利です。
  • 使用するツールは下記です。
用途 ツール名 説明 リンク
クラス図の生成 Pyreverse クラス図生成 https://pypi.org/project/pylint/
クラス仕様書の生成 Sphinx クラス仕様書生成 https://www.sphinx-doc.org/ja/master/
Sphinxインストール手順
docstringの記載補助 VSCode + Python Docstring Generator コードからdocstringの雛形を生成することができます。例えば、メソッドの場合は、サマリー行、引数の名前、型、戻り値の型がコードから生成されるので、自分では説明を書くだけでOKです。 https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring
Pythonのスタイルチェック VSCode + flake8 pep8に準拠しているかチェックして結果表示してくれます。 https://pypi.org/project/flake8/
Pythonの自動フォーマット VSCode + autopep8 ある程度、自動でpep8に準拠するようにコードを自動修正してくれます。例えば、クラス定義の上に2行空白行を開けるとか、引数に半角スペースを入れるとか。 https://pypi.org/project/autopep8/

DB関連

  • コード開発では多くのケースでDBを利用します。
  • GUIで、ER図、テーブル定義、DDL生成ができる便利なツールがあるので紹介します。
  • EclipseのプラグインのERMasterです。
  • ER図をGUIで書けば、そこからExcelのテーブル仕様書、DDL文を生成することができます。
  • 概念データモデルはパワポやdraw.ioで書いて、論理データモデルからERMasterで書くと良いと思います。
用途 ツール名 説明 リンク
ER図、テーブル定義、DDL生成 ERMaster Eclipseのプラグインで、GUIで、ER図、テーブル定義、DDL生成ができます。 http://ermaster.sourceforge.net/index_ja.html
6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9