moai-lang-r について
moai-lang-rは、R開発向けのスキルです。R 4.4と関連ツールを対象に、データ操作、可視化、Shinyアプリ、テスト、依存関係管理の実践パターンを提供します。
主な機能
- 01R 4.4の機能とモダンな構文
- 02tidyverseによるデータ整形
- 03ggplot2とplotlyによる可視化
- 04Shinyアプリとリアクティブパターン
- 05testthatのテストとrenvの依存関係管理
活用シーン
- 01データセットの整理と集計
- 02統計グラフや複数プロットの作成
- 03Shinyデータアプリの構築
- 04再現可能なレポートと依存関係の管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ modu-ai/ moai-adk --skill moai-lang-rインストール後、Claude Code で/moai-lang-rを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
modules/advanced-patterns.mdreferences/examples.mdreference.md詳細
クイックリファレンス(30秒)
R 4.4 以降の開発スペシャリスト。tidyverse、ggplot2、Shiny、renv、最新の R パターンに対応します。
自動トリガー:.R 拡張子のファイル、.Rmd、.qmd、DESCRIPTION、renv.lock、Shiny または ggplot2 に関する議論
主な機能:
- R 4.4 の機能:ネイティブのパイプ演算子、バックスラッシュを使ったラムダ構文、改善されたエラーメッセージ
- データ操作:dplyr、tidyr、purrr、stringr、forcats
- 可視化:ggplot2、plotly、scales、patchwork
- ウェブアプリケーション:Shiny、リアクティビティ、モジュール、bslib
- テスト:testthat 3.0、スナップショットテスト、モック
- パッケージ管理:renv、pak、DESCRIPTION
- 再現可能なレポート:R Markdown、Quarto
- データベース:DBI、dbplyr、pool
クイックパターン
dplyr のデータパイプラインパターン:
tidyverse ライブラリを読み込みます。データをパイプでつなぎ、2020 年以降の年でフィルタリングし、revenue を 1000 で割った revenue_k と、現在の revenue から遅延した revenue を引いて遅延した revenue で割った growth を追加する mutate を適用し、category で group_by します。その後、total_revenue を合計、avg_growth を na.rm TRUE で平均として計算し、groups を drop に設定する summarise で結果を作成します。
ggplot2 の可視化パターン:
ggplot2 ライブラリを読み込みます。data と、x を date、y を value、color を category に対応付ける aes を使って ggplot を作成します。linewidth 1 の geom_line と size 2 の geom_point を追加します。色スケールに scale_color_viridis_d を適用します。タイトル、軸ラベル、色の凡例に対する labs を追加します。見やすい外観にするため、theme_minimal を適用します。
Shiny の基本アプリパターン:
shiny ライブラリを読み込みます。mtcars の列名から変数を選択する selectInput と、プロット用の plotOutput を含む fluidPage で ui を作成します。input、output、session パラメーターを持つ server 関数を作成します。server 内では、input 変数を使った .data プロンプトによる mtcars と aes のヒストグラムを使用して、output の plot に renderPlot を割り当てます。ui と server を渡して shinyApp でアプリを作成します。
実装ガイド(5分)
R 4.4 の最新機能
ネイティブのパイプ演算子:
データをパイプでつなぎ、NA 値を除外する filter、value の対数を log_value として追加する mutate、mean_log を計算する summarise を適用して結果を作成します。最初の引数以外の位置で使用する場合は、data パラメーターを指定した lm の式呼び出しでアンダースコアのプレースホルダーを使います。
バックスラッシュを使ったラムダ構文:
data に対して map を使い、バックスラッシュ x の構文で x の二乗を計算します。2 つのリストに対して map2 を使い、バックスラッシュ x y で x と y の和を計算します。dplyr のコンテキストでは、数値列に対する across を含む mutate を使い、最初の列を抽出する scale 関数にバックスラッシュ x を適用します。
tidyverse によるデータ操作
dplyr の主要動詞:
dplyr ライブラリを読み込みます。raw_data をパイプでつなぎ、active ステータスかつ amount が正の値でフィルタリングし、特定の列を選択し、floor_date を使った month と、amount を最大値で割った amount_scaled を追加する mutate を適用し、その後、date の降順で並べ替えて processed を作成します。グループ化した集計では、group_by の後に、件数を n、集計値を sum と mean で計算し、groups を drop に設定する summarise をパイプでつなぎます。
tidyr によるデータの再構成パターン:
tidyr ライブラリを読み込みます。ワイド形式からロング形式への変換には、year プレフィックスで始まる列を cols に指定し、列名に names_to、プレフィックスの除去に names_prefix、値に values_to を指定した pivot_longer を使います。ロング形式からワイド形式への変換には、names_from と values_from を指定し、欠損値の処理用に values_fill を追加した pivot_wider を使います。
purrr による関数型プログラミング:
purrr ライブラリを読み込みます。files に対して map を使い、各ファイルを read_csv で読み込むラムダを指定します。行を結合するには、ソース列の id パラメーターを指定した map_dfr を使います。数値結果の抽出には、mean と na.rm TRUE を使う map_dbl を使います。エラー処理では、read_csv を safely でラップした safe_read を作成します。files に map を適用して safe_read を実行し、結果を抽出して、compact で成功したものだけに絞り込みます。
ggplot2 の可視化パターン
プロットの基本構造:
ggplot2 と scales ライブラリを読み込みます。データと、x、y、グループ別の color の美的属性を使って ggplot で p を作成します。alpha と size を指定した geom_point と、lm メソッドおよび標準誤差を使った geom_smooth を追加します。カンマ形式のラベルを使う scale_x_continuous、ドル形式のラベルを使う scale_y_log10、Set2 パレットを使う scale_color_brewer を適用します。category で facet_wrap を使い、スケールには free_y を指定します。タイトル、サブタイトル、軸ラベルを labs で追加します。base_size を指定した theme_minimal と、凡例の位置を設定する theme を適用します。ファイル名、プロット、サイズ、dpi を指定して ggsave で保存します。
patchwork を使った複数のプロット:
patchwork ライブラリを読み込みます。ヒストグラムの p1、散布図の p2、箱ひげ図の p3 を作成します。パイプと括弧を使って、p1 の横に p2 を並べ、その下に p3 を配置します。タイトルと tag_levels を指定した plot_annotation を追加します。
Shiny アプリケーションのパターン
モジュール式の Shiny アプリ:
id パラメーターを受け取る dataFilterUI 関数を作成します。名前空間には NS 関数を使います。category 用の選択肢を初期状態では NULL にした selectInput と、範囲用の sliderInput を含む tagList を返します。id とリアクティブな data を受け取る dataFilterServer 関数を作成します。内部関数とともに moduleServer を使います。observe ブロック内で一意なカテゴリを取り出し、updateSelectInput で更新します。入力の検証には req を使い、category と range の各入力でデータをフィルタリングするリアクティブ値を返します。
リアクティブのパターン:
server 関数内で、input year でフィルタリングしたデータをキャッシュする processed_data を reactive として作成します。0 で初期化した counter を reactiveVal として作成します。input increment に対する observeEvent を使って counter を更新します。計算コストの高い処理には、input run_analysis に対する eventReactive で analysis を作成します。すばやく入力される検索を処理するため、検索入力のリアクティブ値に 300 ミリ秒の debounce を適用します。
testthat テストフレームワーク
テスト構造のパターン:
testthat ライブラリを読み込みます。年と値を含む tibble を使って、calculate_growth に対する test_that ブロックを作成します。関数を呼び出し、結果を保存します。行数には expect_equal、成長値には許容誤差を指定した expect_equal、NA の確認には expect_true を使います。
renv による依存関係管理
プロジェクトのセットアップ:
初期化には renv::init を呼び出します。tidyverse パッケージと shiny パッケージには renv::install を呼び出します。状態を記録するには renv::snapshot を呼び出します。ロックファイルから復元するには renv::restore を呼び出します。
高度な実装(10 分以上)
以下を含む包括的な内容については:
- 非同期処理、キャッシュ、デプロイのための高度な Shiny パターン
- 複雑な ggplot2 拡張機能とカスタムテーマ
- dbplyr と pool を使ったデータベース統合
- R パッケージ開発のパターン
- パフォーマンス最適化の手法
- Docker と Posit Connect による本番環境へのデプロイ
以下を参照してください:
- modules/advanced-patterns.md:高度なパターンの完全ガイド
Context7 ライブラリのマッピング
- tidyverse/dplyr:データ操作の動詞
- tidyverse/ggplot2:グラフィックの文法による可視化
- tidyverse/purrr:関数型プログラミングツールキット
- tidyverse/tidyr:データ整形関数
- rstudio/shiny:Web アプリケーションフレームワーク
- r-lib/testthat:ユニットテストフレームワーク
- rstudio/renv:依存関係管理
相性の良いツール
- moai-lang-python:reticulate による Python と R の相互運用
- moai-domain-database:SQL パターンとデータベース最適化
- moai-workflow-testing:DDD とテスト戦略
- moai-essentials-debug:AI を活用したデバッグ
- moai-foundation-quality:TRUST 5 品質原則
トラブルシューティング
よくある問題:
R バージョンの確認:
R コンソールで R.version.string を実行し、バージョンが 4.4 以降であることを確認します。packageVersion にパッケージ名を指定して実行すると、インストールされているパッケージのバージョンを確認できます。
ネイティブパイプが動作しない場合:
- ネイティブパイプ演算子を使用するには、R のバージョンが 4.1 以降であることを確認します
- RStudio の Tools、Global Options、Code で、Use native pipe オプションの設定を確認します
renv の問題:
renv::clean を実行して、使用されていないパッケージを削除します。renv::rebuild を実行して、パッケージライブラリを再構築します。renv::snapshot に force TRUE を指定して実行すると、スナップショットを強制的に更新できます。
Shiny のリアクティビティのデバッグ:
options shiny.reactlog を TRUE に設定します。reactlog::reactlog_enable を実行して、ログ記録を有効にします。shiny::reactlogShow を実行して、リアクティブログの可視化を表示します。
ggplot2 のフォントに関する問題:
showtext ライブラリを読み込みます。フォント名とファミリーを指定して font_add_google を実行します。showtext_auto を実行すると、すべてのグラフィックデバイスで有効になります。
最終更新日:2026-01-11 ステータス:アクティブ(v1.1.0)