SlideShare a Scribd company logo
Rubyのコーディング規約
¡ ミヒャエル
¡ @mihyaeru21
¡ 長岡技術科学大学
¡ Python, Objective-C
¡ 来年度からPerlな会社で何か
¡ 本業は提督 (レベル71)
自己紹介
Rubyの勉強会ですが
Rubyはほとんど
やったことない
/(^o^)\
コーディング規約だけなら
ちょっと調べればなんとか…!
¡ コードの書き方を統一
§ 他人のコードも読みやすい
§ 自分のコードも読まれやすい
§ 構造の異常を発見しやい
¡ 言語や会社、団体によって様々な規約
¡ 今回は、一般的な Ruby の規約をかるく
コーディング規約
命名規約
¡ パスカルケース
¡  _ は使わない
Class
ModuleName
Class_Name
moduleName
クラス名・モジュール名
¡ 全て小文字
¡ 単語は動詞の原形
¡  _ で単語区切り
do_something
method_name
methodName
DoSomething
Method_Name
メソッド名
¡ 全て小文字
¡ 単語は動詞/形容詞
¡ 末尾に ? を付与
¡  is_ を付けない
movable?
visible?
is_movable
is_visible?
メソッド名 真偽値を返す場合
¡ 全て大文字
¡  _ で単語区切り
CONSTANT
CONSTANT_VALUE
ConstantValue
BADCONSTANT
定数名
¡ 全て小文字
¡  _ で単語区切り
variable
long_long_variable
@instance_variable
$global_variable
Variable
badVariable
変数名
¡ 全て小文字
¡  - で単語区切り
¡ ファイル中の主な
クラス名を使う
file.rb
class-name.rb
File.rb
class_name.rb
ファイル名
構文の規約
¡ スペース2つ
¡ タブは使わない
if hoge == 1
x = fuga
end
if hoge == 1
x = fuga
end
インデント
¡ パラメータなし
§ カッコなし
¡ パラメータあり
§ カッコあり
def hoge
return 1
end
def fuga(x, y)
return x * y
end
def hoge()
end
def fuga x, y
end
メソッド定義
¡ パラメータなし
§ カッコなし
¡ パラメータあり
§ カッコあり
¡ print, puts, p
§ カッコなし
x = hoge
fuga(x, y)
print x, y
x = hoge()
fuga x, y
print(x, y)
メソッド呼び出し
¡ { ... } ではなく
do ... endを使う
¡ 1行で書くときは
{ ... } を使う
(メソッドチェインだけ?)
arr.each do |x|
...
end
arr.each { |x| ... }
arr.each { |x|
...
}
arr.each do |x| ... end
ブロック
¡ if の then は省略
¡ if !hoge は
unless hoge にする
¡ 条件が単純かつ
1行で書けるときは
後置の if を使う
if n == 12
end
unless hoge
end
print n if hoge
if n == 12 then
end
if !hoge
end
print n if hoge && fuga
&& piyo
条件分岐
¡ while の do は省
略
¡ while !hoge は
until hoge にする
¡ 無限ループには
loop do を使用
while hoge
end
until hoge
end
loop do
end
while hoge do
while !hoge
while true
ループ
¡ 省略しても意味解釈に影響ない部分は省略する
印象
if の then や、while の do など
¡ 複雑にならないように配慮されている印象
if !x を unless に、while !x を until x にするな
ど
¡ 郷に入れば郷に従え(郷 = 言語, 会社, 団体, ...)
まとめ
参考: http://shugo.net/ruby-codeconv/codeconv.html

More Related Content

Similar to Rubyのコーディング規約 @ Niigata.rb #3

Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
mitim
 
Reudy on Ruby1.9
Reudy on Ruby1.9Reudy on Ruby1.9
Reudy on Ruby1.9
Glass_saga
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
Yamamura Takashi
 
一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディングTaiyo Akashi
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法xibbar
 
「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!
tq_ed
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
Ryo Ohki
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
ymmt
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
Shigeru UCHIYAMA
 
How to learn Rails
How to learn RailsHow to learn Rails
How to learn Rails
deeeki
 

Similar to Rubyのコーディング規約 @ Niigata.rb #3 (10)

Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Reudy on Ruby1.9
Reudy on Ruby1.9Reudy on Ruby1.9
Reudy on Ruby1.9
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディング
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
 
「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
 
How to learn Rails
How to learn RailsHow to learn Rails
How to learn Rails
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 

Recently uploaded (9)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 

Rubyのコーディング規約 @ Niigata.rb #3