R Academy · レッスン

コメント、スタイル、可読性

tidyverseのスタイルガイドに沿って、整理され文書化されたRコードを書きます。

レッスン 2/413 ステップ

「コメント、スタイル、可読性」はCoddyKit上の無料R Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。

# による単一行コメント

R では、# 文字でコメントを開始します。# から行末までのすべてがインタープリターによって無視されます。コメントは人間のためのものです。単に何をするかだけでなく、なぜそうするのかを説明してください。

# This is a comment — R ignores it completely
x <- 42   # inline comment after code

# Bad comment (states the obvious):
y <- y + 1   # add 1 to y

# Good comment (explains intent):
y <- y + 1   # shift index to 1-based for output display

cat('x =', x)

------ によるセクション見出し

R では、コメントテキストの後に4つ以上のハイフン、等号、またはハッシュ記号を追加してセクション見出しを作る慣習が広く採用されています。RStudio はこれらを認識し、簡単に移動できるようドキュメントのアウトラインに追加します。

# Data Loading -------------------------------------------------------

# This section loads raw CSV files from the data/ folder

# Data Cleaning =======================================================

# Remove duplicates and fix missing values

# Modeling ############################################################

# Fit linear model and evaluate

cat('Section headers improve navigation')

snake_case の命名規則

tidyverse スタイルガイドでは、すべてのオブジェクト名に snake_case を推奨しています。小文字の単語をアンダースコアで区切る形式です。一貫性を保つため、他の言語ではメソッド呼び出しに見えるドットや camelCase は避けてください。

# Good: snake_case
user_age <- 25
monthly_revenue <- 15000
calculate_mean <- function(x) mean(x)

# Avoid: dots in names (looks like OOP method calls)
user.age <- 25       # confusing

# Avoid: camelCase (inconsistent with tidyverse)
userAge <- 25

# Avoid: ALL_CAPS (reserved for true constants by convention)
MAX_RETRIES <- 3     # acceptable for config constants only

cat('snake_case wins')

演算子の前後のスペース

代入演算子と比較演算子の前後には、必ずスペースを入れてください。これにより、可読性が大幅に向上します。例外は関数の引数リスト内です。ここでは = が引数名に結び付きます。

# Good: spaces around <- and operators
x <- 10
y <- x + 5
result <- x * y - 2
is_valid <- x > 0 & y < 100

# Bad: cramped
x<-10
y<-x+5

# Function arguments: = without extra spaces is fine
mean(x = c(1, 2, 3), na.rm = TRUE)

# Comparison operators also need spaces
if (x > 0) cat('positive')
if (x >= 0 & y <= 100) cat('in range')

代入には = ではなく <- を使う

R ではトップレベルでの代入に = も使えますが、コミュニティでは、オブジェクトの代入には <- を使い、= は関数の引数の値に限定するのが強い慣習です。この区別により、コードを一目で読みやすくなります。

# Correct: <- for assignment
name <- 'Alice'
score <- 95.5
results <- c(1, 2, 3)

# Correct: = inside function calls
round(3.14159, digits = 2)
read.csv('data.csv', header = TRUE, sep = ',')

# Avoid: = for top-level assignment
# name = 'Alice'   <- works but not idiomatic

cat('Assignment convention:', name, score)

1行80文字の制限

80文字未満に行を収めると、分割ペインのエディター、印刷したページ、コードレビュー用ツールでコードを読みやすくできます。RStudio では、Tools → Global Options → Code → Display から80列目にマージンガイドを表示できます。

# Bad: one very long line (hard to read)
result <- some_function(argument_one = 'value', argument_two = 100, argument_three = TRUE, argument_four = 'long_string')

# Good: break at commas, indent continuation
result <- some_function(
  argument_one   = 'value',
  argument_two   = 100,
  argument_three = TRUE,
  argument_four  = 'long_string'
)

cat('Readable at 80 chars')

セミコロンを使わない

JavaScript や C とは異なり、R では文の末尾にセミコロンを付ける必要はありません。セミコロンを使えば1行に複数の文を記述できますが、スタイルガイドでは1行1文、セミコロンなしを推奨しています。

# Bad: semicolons and multiple statements per line
x <- 1; y <- 2; z <- x + y

# Good: one statement per line
x <- 1
y <- 2
z <- x + y

# The semicolon form is only acceptable in very short
# interactive throwaway code, never in scripts
cat('z =', z)

読みやすい変数名

長すぎず、内容を説明する名前を選んでください。目安として、6か月後に変数名を理解するのに1秒以上かかるなら、その名前は短すぎるか、分かりにくすぎます。

# Too cryptic:
d <- read.csv('data.csv')
tmp <- d[d$v1 > 0, ]
r <- lm(v2 ~ v1, data = tmp)

# Good names:
sales_data    <- read.csv('data.csv')
positive_rows <- sales_data[sales_data$revenue > 0, ]
revenue_model <- lm(profit ~ revenue, data = positive_rows)

# Avoid abbreviations that are not universally understood:
# n_obs is fine (number of observations)
# nrv is not (nobody knows what this is)

cat('Names tell the story')

波かっことインデント

tidyverse スタイルガイドでは、開き波かっこ { は同じ行に置き、閉じ波かっこ } は単独の行に置きます。インデントには2スペースを使い、タブは使いません。ネストしたロジックを読むには、一貫したインデントが不可欠です。

# Good style: brace on same line, 2-space indent
if (x > 0) {
  cat('positive\n')
} else {
  cat('non-positive\n')
}

# Good function definition:
calculate_bmi <- function(weight_kg, height_m) {
  bmi <- weight_kg / height_m^2
  round(bmi, 1)
}

cat('BMI:', calculate_bmi(70, 1.75))

角かっことコンマの内側のスペース

すべてのコンマの後にはスペースを入れます(英語の文章と同じです)。ただし、コンマの前や角かっこの直後・直前にはスペースを入れません。これは数学の表記法に似ており、インデックスを読みやすくします。

# Good: space after comma, not before
x <- c(1, 2, 3, 4, 5)
m <- matrix(1:9, nrow = 3, ncol = 3)

# Subsetting: no space before [ or inside []
first_row <- m[1, ]      # good
value     <- m[2, 3]    # good

# Bad:
# c(1,2,3)     <- no space after comma
# m[ 1, ]      <- space after [
# m[1 , ]      <- space before comma

cat('Spacing is consistent')

styler と lintr の使用

R には、スタイルの適用を自動化する2つのツールがあります。styler は、tidyverse スタイルガイドに合わせてコードを整形します。lintr は、コードを実行せずにスタイルや潜在的なエラーを静的にチェックします。どちらも RStudio と統合できます。

# styler: reformat a file automatically
# install.packages('styler')
# styler::style_file('my_script.R')

# styler: reformat the whole project
# styler::style_dir('R/')

# lintr: check for style and potential bugs
# install.packages('lintr')
# lintr::lint('my_script.R')

# lintr reports issues like:
#   line 10: [object_name_linter] Variable 'myVar' should use snake_case
#   line 15: [spaces_around_ops_linter] No space before '<-'

cat('Style tools: styler + lintr')

クイックチェック

tidyverse スタイルガイドによると、R で代入文を記述する正しい方法は次のうちどれですか。

スタイルと可読性 — 重要なポイント

適切なスタイルの R コードは、プロフェッショナルで保守しやすく、共同作業にも適しています:

  • コメントには # を使います。単に何をするかだけでなく、なぜそうするのかを説明します
  • 移動しやすいよう、------ や ====== によるセクション見出しを使います
  • すべてのオブジェクト名と関数名に snake_case を使います
  • <-、+、== などの前後にスペースを入れます
  • 代入には <- を使い、= は関数の引数内でのみ使います
  • 1行は最大80文字にし、長い呼び出しは複数行に分けます
  • セミコロンは使わず、1行1文にします
  • インデントは2スペースとし、開き { は同じ行に置きます
  • 自動整形には styler を、問題の検出には lintr を使います
# Putting it all together:

# Calculate summary statistics ----------------------------------------
calculate_summary <- function(values, remove_na = TRUE) {
  cleaned <- values[!is.na(values)]
  list(
    mean   = mean(cleaned),
    median = median(cleaned),
    sd     = sd(cleaned)
  )
}

test_scores <- c(85, 90, NA, 78, 92, 88)
stats <- calculate_summary(test_scores)
cat('Mean:', stats$mean, '\n')
cat('SD:  ', stats$sd)
無料で開始

AI チューターと学ぶ R — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
43
レッスン
159

よくある質問

「コメント、スタイル、可読性」レッスンは無料ですか?

はい。「コメント、スタイル、可読性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。

「コメント、スタイル、可読性」で何を学びますか?

tidyverseのスタイルガイドに沿って、整理され文書化されたRコードを書きます。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

R Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「コメント、スタイル、可読性」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このR Academyレッスンでコードを書いて実行できますか?

はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. source()によるスクリプトの読み込み
  2. コメント、スタイル、可読性
  3. 作業ディレクトリとファイルパス
  4. Rプロジェクトとワークスペース管理
← R Academyに戻る