mcpField
M
moai-lang-r

moai-lang-r

github.com/modu-aiデータ・データベース1.2k59 回インストール今日更新
リポジトリ

moai-lang-r について

moai-lang-rは、R開発向けのスキルです。R 4.4と関連ツールを対象に、データ操作、可視化、Shinyアプリ、テスト、依存関係管理の実践パターンを提供します。

主な機能

  1. 01R 4.4の機能とモダンな構文
  2. 02tidyverseによるデータ整形
  3. 03ggplot2とplotlyによる可視化
  4. 04Shinyアプリとリアクティブパターン
  5. 05testthatのテストとrenvの依存関係管理

活用シーン

  1. 01データセットの整理と集計
  2. 02統計グラフや複数プロットの作成
  3. 03Shinyデータアプリの構築
  4. 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.md
references/
examples.md
reference.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)

コメント