🧑‍🎨

AppMapでRailsアプリケーションをビジュアライズしよう!

2023/06/02に公開

AppMapとは?

AppMapオープンソースのランタイムコード解析&ビジュアライズツールです。
同名のオープンソース企業がプロダクトを展開しており、一部の機能は無料で使うことが可能です。

https://appmap.io/

AppMapは、コードの実行トレースを記録し、コードがどのように動作し、何を行うかについての情報を収集します。そして、この情報をインタラクティブなダイアグラムとして表示し、検索やナビゲーションを行うことができます。ダイアグラムでは、アプリケーションコードの実行時に、関数、Webサービス、データストア、セキュリティ、I/O、依存サービスなどがどのように連携しているかを正確に把握することができます。

早速試してみる

AppMapが導入済みのRailsアプリケーションが公開されていたので、こちらを使って動作確認してみましょう。
devcontainerが設定されているので、VSCodeでサクッと環境を準備できます。

https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer

VSCode拡張のインストール

VSCodeのエクステンションをインストールします。
インストール後チュートリアルを開始できるので、手順に従いましょう。
Githubとの連携などが求められます。

Railsアプリケーションにgemを導入

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

プロジェクトを確認すると、すでに gem 'appmap'が追加済みになっていますね。

Gemfile
# 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も確認できます。

公式の紹介動画

https://www.loom.com/share/de75ba638d57418da2d42417936cdf95

SARAH Tech Blog

Discussion