AppMapでRailsアプリケーションをビジュアライズしよう!
AppMapとは?
AppMapオープンソースのランタイムコード解析&ビジュアライズツールです。
同名のオープンソース企業がプロダクトを展開しており、一部の機能は無料で使うことが可能です。
AppMapは、コードの実行トレースを記録し、コードがどのように動作し、何を行うかについての情報を収集します。そして、この情報をインタラクティブなダイアグラムとして表示し、検索やナビゲーションを行うことができます。ダイアグラムでは、アプリケーションコードの実行時に、関数、Webサービス、データストア、セキュリティ、I/O、依存サービスなどがどのように連携しているかを正確に把握することができます。
早速試してみる
AppMapが導入済みのRailsアプリケーションが公開されていたので、こちらを使って動作確認してみましょう。
devcontainerが設定されているので、VSCodeでサクッと環境を準備できます。
VSCode拡張のインストール
VSCodeのエクステンションをインストールします。
インストール後チュートリアルを開始できるので、手順に従いましょう。
Githubとの連携などが求められます。

Railsアプリケーションにgemを導入
アプリケーションにAppMapを導入します。CLIかgemを使う方法があるようです。

プロジェクトを確認すると、すでに gem 'appmap'が追加済みになっていますね。
# This must be the first gem listed
gem 'appmap', :groups => [:development, :test]
コンテナのビルド
devcontainerのrebuild and openでRailsアプリケーションを立ち上げます。
gemのインストールやDBマイグレーションが終わるまで待ちましょう。
テストの実行
Railsサーバにリクエストを送るか、テストを実行することでAppMapに解析してもらえます。

今回は rails test を実行します。
作成されたダイアグラムの確認
テストが完了すると、VSCodeに解析結果が追加されます。
作成されたダイアグラムを見てみましょう。

Dependency Map
Dependency Map には、テストケースに関わったすべてのコードとその依存関係が表示されます。

各要素は展開して更に細かい詳細を確認することができます。

Sequence Diagram
Sequence Diagram はアプリケーションの動作を時系列で表示します。
また、SVGファイルとしてエクスポートしたり、コード更新後のダイアグラムと比較して差分をとったりできます。

Trace diagram
Trace diagram はテストケースで動作したコードと処理の詳細がすべて表示されます。
また該当するコードにもジャンプ可能です。

関数呼び出しだけでなく、実行されたSQLも確認できます。

公式の紹介動画
SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスをtoC,toBと多角的に展開しています。アプリ / Web / SaaS / データサイエンス を最新の環境と技術で広く運用します。 技術スタック詳細はこちら→ stackshare.io/companies/sarah-inc
Discussion