give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

プログラミング初心者は変数名やメソッド名を略さない方がいいよ、という話

今回のエントリでは先日、僕が勤めているソニックガーデンで話題になったプログラミング関連の小ネタを書きます。
それは何かというと、「プログラミング初心者は変数名やメソッド名を略さない方がいい」という話です。

長い変数名やメソッド名はつい略したくなります。
実際、僕も長い名前を略すときはよくあります。
ですが、略称を使うのは長年の経験から「この略称は一般的だから誤解を招くことはきっと少ないだろう」とか「前後の文脈から、変数の中身は誰が見ても明らかだろう」という想像が付いた場合だけです。

一方、プログラミング初心者の人は経験が浅いため、「一般的かどうか」とか、「誤解が発生しないかどうか」といった判断ができません。
そのため、他の人が見たときに「え、何この変数名?」と思ってしまうような略称を付けてしまう恐れがあります。

たとえば、先日のコードレビューで、初心者の人がrev_noという名前の変数を定義していました。
この変数名を見て、みなさんは何が格納される変数かわかりますか?
僕は「revison_numberの略かな?」と思いました。
でも、初心者の人に聞いたら、「それはreverse_number(逆順の数字)の略だ」という答えが返ってきました。
はい、しっかり誤解が発生してますね!!

ですから、プログラミング初心者の人は変数名やメソッド名を略さないようにしましょう。
略すのは先輩プログラマからOKをもらったときだけにしてください。

さきほどの例ならrev_noではなく、reverse_numberと略さずに書くべきです。
(正確にはreversedのように過去分詞形にしたいところですが)

ちょっと厳しいルールかもしれませんが、初心者のうちは変な悪い癖が付いてしまうことを避ける方が重要なので、こういったルールには意味があると思います。

追記:「でも長い名前は入力するのが大変なんです!」という方へ

長い名前を略したい一番の動機は、「タイピング量を減らしたいから」だと思います。
この点についてはエディタやIDEの機能を活用しましょう。

たとえば、VimであればCtrl-NやCtrl-Pでバッファ内に表示されている文字列を自動補完することができます。

f:id:JunichiIto:20201020141852g:plain:w500

Visual Studio Code(VS Code)やRubyMineなどのIDEでも、途中まで変数名をタイプすると変数やメソッドの候補を表示してくれます。

f:id:JunichiIto:20201020142315g:plain:w500

ですので、「タイプ量を減らしたいから、名前を略す」のではなく、「タイプ量を減らすためにエディタやIDEの操作を勉強する」と考えるようにしましょう。
その方がずっと生産的です!

追記2:reverse_noならOKですか?

reverse_numberではなく、reverse_noならOKか?」という点についても議論してみましょう。
たしかに"number"を"no"と略すのはプログラミングに限らず、日常生活でもよく見かけるので、一般的な略称と言えるかもしれません。
ですが、以下の点で"no"は"number"よりも問題が起きやすい名前だと僕は考えます。

  • "yes/no"の"no"と混同しやすい
  • 配列に格納する場合などに複数形を使おうとすると"nos"や"noes"になるが(参考)、複数形になると急に馴染みが薄くなる("no"の複数形であることがぱっと理解しづらい)

よって、何か特別な理由がない限り、"no"ではなく"number"を使う方が望ましいと考えます。

追記3:略していいケースってどんなケース?

上の本文で「実際、僕も長い名前を略すときはよくあります」と書きましたが、具体例がないとイメージが沸きにくいと思うので例をいくつか挙げておきます。

たとえば、以下のような単語は他のコードでも省略形をよく見かけるので、省略して書く場合があります。

  • execute = exec
  • initialize = init
  • calculate = calc

寿命が短いローカル変数や仮引数に対しては以下のような名前を付ける場合があります。

  • average = avg
  • message = msg
  • exception = e または ex
  • event = e

単純なループの変数に対しては以下のような略称を付けることがあります。

  • 文字列の場合 = s または str(stringの略)
  • 文字の場合 = c(characterの略)
  • 数値の場合 = i(integerの略)または n(numberの略)
# ループの変数名をiとする場合のコード例
[1, 2, 3].map do |i|
  i * 10
end

寿命が極めて短い変数に対してはクラス名の頭文字を使う場合があります。

# Userクラスのインスタンスを配列に格納
users = User.all

# ブロック内の変数の寿命が極めて短いので、名前をuとする
users.map { |u| u.name.upcase }

ですが、寿命がそれなり長い場合は略さずに書きます。

# 寿命がそれなりに長いので略さずにuserとする
users.map do |user|
  books = find_books(user)
  cars = find_cars(user)
  "#{user.name} has #{books.size} books and #{cars.size} cars"
end

なお、母音を引っこ抜いたようなオレオレルールな略称はわかりづらくなるだけなので、絶対に使いません。

# こんな略称は絶対書かない
gbsn_gtrs = Guitar.brand('gibson')
fndr_gtrs = Guitar.brand('fender')

# 変数名は略さずに書きます
gibson_guitars = Guitar.brand('gibson')
fender_guitars = Guitar.brand('fender')

他にも略称を使うパターン、使わないパターンがあるかもしれませんが、ぱっと思いつくのはこんな感じです。

ケルヒャーの延長パイプを使って、家の壁をきれいにしてみた

築12年の我が家、南側の壁は何もしなくてもきれいなままなんですが・・・

f:id:JunichiIto:20200921043725j:plain

日が当たらない北側の壁(2階の窓の周りとか)はだんだんと黒ずんできました😢

f:id:JunichiIto:20200921043913j:plain

1階の汚れは脚立等を使って掃除ができそうなものの、2階の汚れはどうやってきれいにすればいいのかわかりません。

親戚のおばちゃんに話したら「ハウスメーカーに頼んだら壁の掃除してくれるらしいで〜」と言われたので担当の人に電話したんですが、「足場を組んだら最低でも20万はかかりますね😑」と言われ、「えー、20万はちょっと・・・」となってしまいました。

でもどうしてもきれいにしたい!!と妻が熱望するので、いろいろ作戦を考えました。
そこでふと思ったのが、「ケルヒャーに何か高所作業用のオプションがあったりしないかな?」ということです。(注:我が家は以前からケルヒャーは持っています)

調べてみました。

ありました!!「ケルヒャー 延長パイプ 4m」!!

ケルヒャー 延長パイプ 4m 2642-347

ケルヒャー 延長パイプ 4m 2642-347

  • メディア: 道具 & 工具

これを使えば、ほら!!(写真はイメージです)

f:id:JunichiIto:20200921045320j:plain:w300
Image: https://www.amazon.co.jp/gp/product/B004U7EHCQ/

これはすごく使えそう!

ですが、1つだけ邪魔なものがあります。
我が家と妻のパン屋の間にある雨よけの屋根です。

f:id:JunichiIto:20200921045726j:plain:w350

これがあると下から上に向かってパイプを伸ばすことができません。うーん、困った。

考えました。

ひらめきました!!
「パン屋の屋根にのぼって作業すればええやん!!」

つまり、こうです。(写真はイメージです)

f:id:JunichiIto:20200921050255j:plain

屋根の上はこんなふうに平らになってるので、落ちないように気を付けさえすれば作業はできそうです。

f:id:JunichiIto:20200921050433j:plain

というわけで、近所のホームセンターでハシゴ(脚立兼用のもの)を買ってきました。

Amazonからケルヒャー 延長パイプも届きました。

f:id:JunichiIto:20200921051831j:plain:w300

よし、これで準備万端!!壁をきれいにするぞー!!

うりゃー!!

f:id:JunichiIto:20200921052354j:plain:w350

よーし、屋根にも上っちゃうぞー!(安全のためにヘルメット装着)

f:id:JunichiIto:20200921062222j:plain:w350

無事に上れました。(まぶしいのでグラサンも付けてます)

f:id:JunichiIto:20200921062612j:plain

作業開始!

f:id:JunichiIto:20200921062826j:plain

Before→Afterです。
まだうっすら汚れは残っていますが、ぱっと見は気にならないレベルになりました✨

f:id:JunichiIto:20200921065015j:plainf:id:JunichiIto:20200921065010j:plain

ついでに予定になかった妻のパン屋の壁も掃除することにしました。

f:id:JunichiIto:20200921064335j:plain:w350

こうやってみると全然色が違いますね!!(てか、掃除する前が汚れすぎ・・・)

f:id:JunichiIto:20200921064551j:plain

パン屋の壁もきれいになりました✨

f:id:JunichiIto:20200921064811j:plain

これで我が家の壁のお掃除は完了です。
汚れが落ちて気持ちいい〜!!

ケルヒャー前👇

f:id:JunichiIto:20200921043913j:plain

ケルヒャー後👇

f:id:JunichiIto:20200922090544j:plain

おさらい:今回のお掃除で使ったもの

ケルヒャー本体です。これは前から家にありました。

延長パイプ 4mです。Amazonで1万8000円ぐらいで購入しました。

ケルヒャー 延長パイプ 4m 2642-347

ケルヒャー 延長パイプ 4m 2642-347

  • メディア: 道具 & 工具

はしご兼用脚立です。近くのホームセンターで1万5000円ぐらいで購入しました。

延長パイプとはしごを合わせると3万3000円ぐらいかかっていますが、それでもハウスメーカーから提示された「最低でも20万円」に比べるとはるかに安い費用で壁を綺麗にすることができました!しかも今回購入したツール類は今後も使えますし。

ちなみに、作業時にかぶっていたヘルメットは中学生の息子が使っている通学用ヘルメットなので、今回コストはかかっていませんw😆

f:id:JunichiIto:20200921070720j:plain:w250
はしごの角度を確認中...(75度が一番安全らしい)

Tips:筋肉痛を避けるコツ?

Amazonのレビューを見てると、「延長パイプが重いので筋肉痛になった」みたいなコメントがいくつかありました。
たしかに腕の力だけで上下させようとすると筋肉痛になりそうです。

作業用のベルトをしっかり肩にかけ、腕の力よりも膝を使ったりして身体全体で延長パイプを動かすようにすると、腕が筋肉痛になるのを避けられます。
あと、2階の屋根付近はそのままだと腕を伸ばしても届かないので、脚立などを使ってそこまで手を伸ばさずに作業できるようにした方がいいと思います。(ただし脚立から落ちると危ないので、そこも無理しないように!)

これで僕は筋肉痛にならずに済みました。

まとめ

というわけで、このエントリではケルヒャーと延長パイプを使った自宅の壁のお掃除について書いてみました。
ケルヒャー、購入したのはかなり前ですが、割とよく使いますし、気持ちよく汚れが落ちるのでかなりの優れものです。

水が勢いよく噴き出して汚れがみるみるうちに落ちるのは、水鉄砲で遊ぶ子どものような気持ちになれて、純粋に楽しいです。
UX的にもとても優秀なツールだと思います(笑)。

真夏や真冬は外で作業するのが辛いので、涼しくなってきた今がチャンスだと思います!
家の周りの汚れが気になる人はぜひ参考にしてみてください😄

おまけ:ケルヒャーのデッキブラシもあります

ケルヒャーといえば、先日こんなものも買いました。

これを使うとケルヒャーがデッキブラシになります。(写真はイメージです)

f:id:JunichiIto:20200921072833j:plain
Image: https://www.amazon.co.jp/dp/B00BKVF2I8

先日はこれを使って風呂場の床や、玄関タイルをきれいにしました。
水が四方八方に飛び散らないので、これはこれでとっても便利です。

こんな感じで使えま〜す↓

PR:妻のパン屋のホームページです

本文にもちらっと出てきましたが、妻は兵庫県西脇市でクープ バゲット(Coupé Baguette)という小さなパン屋さんをやってます。
マイナーな田舎町なのであまり立ち寄る機会もないと思いますが(しかも営業日は金土の週2日だけ)、もし何かの機会があればどうぞ〜🍞

coupe-baguette.com

「プロを目指す人のためのRuby入門」の効果的な読み方を動画で指南してみました #チェリー本

ありがたいことに、たくさんの人に読んでもらっている拙著「プロを目指す人のためのRuby入門(通称・チェリー本)」ですが、本書はそれなりのボリュームがあり、なおかつ後半(7章以降)がかなり難しくなってくるので、読み終わるのに苦労している方もたくさんおられるようです。

すでに他の言語でプログラミングの経験をたくさん積んでいる人であれば、その知識を活かしてスムーズに読み進めることができるかもしれませんが、これからプログラマになろうとしている初心者の方(独学で勉強したり、プログラミングスクールに通われたりしている方たち)は、なかなかハードルが高いと思います。

そこで今回、筆者である僕自身が動画を使って「プロを目指す人のためのRuby入門」の効果的な読み方を初心者のみなさんに指南してみることにしました。

その動画がこちらです↓


著者自身が語る「プロを目指す人のためのRuby入門」の効果的な読み方

こちらの動画では、

  • なぜチェリー本を読むのか、チェリー本の内容を理解するとどういう効果が期待できるのか
  • 初心者の人が必ず押さえておきたい項目はどこか
  • 逆に、初心者の人は最悪理解を後回しにしても良い項目はどこか

といったポイントを説明しています。

「チェリー本って難しい!」「全然読み終わらない!」とお悩みの初心者エンジニアさんは、ぜひこちらの動画を参考にして効率よくチェリー本を読破してください!😄

あわせて読みたい

今回の動画と同じような話は過去にブログでも書いています。こちらもあわせてどうぞ。
blog.jnito.com