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

ドキュメントからコードを生成したい on Rails 開発

ドキュメントからコードを生成したい on Rails 開発

めぐろ LT #5 で発表した「ドキュメントからコードを生成したい on Rails 開発 」の資料です。

Seiya Miyata

August 01, 2023
Tweet

More Decks by Seiya Miyata

Other Decks in Programming

Transcript

  1. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential 自己紹介

    サーバーサイドエンジニア 印刷のラクスルのエンタープライズ向け開発 • 16 時退勤が夢です 好き:DevOps、エレキギター、フィルムカメラ、 欧州サッカー、クラフトビール 2 @38tter_miya
  2. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential よくある

    Rails 新規開発の流れ Ruby on Rails : MVC (Model - View - Controller) フレームワーク 1. モデル設計 ドメイン知識をモデル定義に落とし込む ER 図等でドキュメント管理する 2. マイグレーション マイグレーションファイルを書く 3. ビジネスロジックの記述 3
  3. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential モデル設計:Notion

    に、 ER 図描きつつ、あーだこーだ(字余り) 4 オンラインでありがちな状況 最近よく使うのは mermaid 記法
  4. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential モデル設計:Notion

    に、 ER 図描きつつ、あーだこーだ(字余り) 5 https://mermaid.js.org/
  5. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential 悩み:熱いうちに鉄を打ちたい

    モデル定義が固まったあとはすぐ開発に取り掛かりたい モデル議論の後 = 開発効率が高い状態 ドキュメントからマイグレーションへの変換 地味にまどろっこしい `rails generate migration` でボイラープレートを生成する感覚で、変換したい ... そこで... 6
  6. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential mergration

    という gem を作りました (mer)maid の ER 図をパースして mi(gration) ファイルを生成 7
  7. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential mergration

    という gem を作りました (mer)maid の ER 図をパースして mi(gration) ファイルを生成 8
  8. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential やっていること

    1. mermaid 記法のパース kramdown という markdown パーサーを拡張して mermaid に対応 2. マイグレーションファイルの生成 マイグレーションのテンプレートを用意 パース結果を元にマイグレーションを動的に生成 10
  9. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential 所感&これからやりたいこと

    「ドキュメントからボイラープレート生成」の開発者体験は良い プロトタイピング、ハッカソン等、開発時間限られる場合にも good 「ドキュメントとコードを同期できる」体験にも近づけたい 編集後の ER 図から差分のマイグレーションファイルの生成 シーケンス図による記述から、コードの雛形を生成 11
  10. © 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential PR,

    issue, feature request コメント等々 お待ちしています!! 12 https://github.com/38tter/mergration