はじめに
最近ペアプロでナビゲーター役(指示役)をすることが多いのですが、普段自分がコーディングで利用している記号でも「読み方がわからずに伝えられないもの」や「相手に伝わらない言い方」があることに気付きました。
そこで、ペアプロをやる中で私が「書けるけど読めない」「相手が理解しにくい」と感じた記号についてRubyでの使用例と共に抜粋して紹介します。
読みにくい記号と読み方一覧
記号 | 主な読み方 |
---|---|
() | 丸括弧(まるかっこ)、パーレン |
[] | 角括弧(すみかっこ)、ブラケット |
{} | 波括弧(なみかっこ)、中括弧(ちゅうかっこ)、ブレース |
> | 大なり |
< | 小なり |
: | コロン |
; | セミコロン |
~ | チルダ |
^ | キャレット、ハット |
\ | バックスラッシュ |
| | 縦棒、パイプ |
* | アスタリスク |
使用例
():丸括弧(まるかっこ)、パーレン
メソッドの宣言や呼び出し、複数の式をまとめる際に使用します。
括弧というとこちらの記号をイメージする人が多いと思うので、丸括弧と言わずに括弧と言うだけで通じることが多いです。
(私だったらパーレンなんて言われてもポカーンとしてしまう)
# メソッドの定義
def method(argument)
# dosomething
end
# メソッドの呼び出し
method(argument)
# 式をまとめる
a > 0 || (b > 0 && c > 0)
[]:角括弧(すみかっこ)、ブラケット
配列やHash(連想配列)の操作に使用します。
Rubyで配列系を扱う際は角括弧を使うと覚えておくと良いでしょう。
# 配列を宣言する
array = [1, 2, 3]
# 配列から値を取得する
array[0]
# Hashから値を取得する
hash[key]
# Hashに値を設定する
hash[key] = value
{}:波括弧(なみかっこ)、中括弧(ちゅうかっこ)、ブレース
Hashの宣言やブロックの記述、式展開に使用します。
ペアプロの際は相手がRubyの経験者であれば「Hashを宣言して〜」、「eachでループして〜」と言えば自然と使ってくれると思います。
もし伝わらない時は波みたいな括弧や吹き出しみたいな括弧と言えば伝わるかもしれません。
# Hashの宣言
{key: value}
# ブロックの利用
array.each{|a| p a}
# 文字列の式展開
"数字は#{number}です"
>:大なり
比較演算子に使用します。小なり(<)と間違えやすいので注意してください。
ペアプロでは大なり小なりを間違えることはよくありますが、間違えても逆だと伝えてあげれば済む話なので無理して覚えなくてもカバーできると思います。
# aが0より大きい時にtrueとなる
a > 0
<:小なり
比較演算子に使用します。大なり(>)と間違えやすいので注意してください。
その他にも配列の要素追加でもよく使用します。
# aが0より小さい時にtrueとなる
a < 0
# 配列の要素追加
array << 1
::コロン
Hashの宣言や三項演算子で使用します。
# Hashの宣言
h = {key: value}
# 三項演算子(下の例ではaが0より大きいならば1を返し、そうでないなら0を返します)
if a > 0 ? 1 : 0
;:セミコロン
改行を入れたい際に使用します。
# ブロックの中で改行をしている
array.each{|a| a += 1; p a}
ただし、実際にプログラムを書く際は普通に改行をしてあげたほうが可読性が高いことが多いので、個人的には上の例のような書き方をすることはあまりないかな〜と思いました。
~:チルダ
正規表現のマッチングで使用します。
ペアプロで通じない時はニョロニョロとか波とか言えば気合いで通じそうな気もします!笑
# 文字列内のabcのマッチ位置を取得する
/abc/ =~ string
^:キャレット、ハット
正規表現で先頭にマッチしたい際に使用します。
ニコニコした顔文字「^-^」の目の部分ですね。
# 文字列の先頭がabcにマッチするか判定する
/^abc/.match?(string)
ちなみに上の例ではstart_with?
というメソッドを利用することでキャレットを使わない実装を行うことも可能です。うまく伝わらない場合はそういった代替案を使うのも手ですね。
\:バックスラッシュ
文字列のエスケープで使用します。
バックスラッシュですが、記号は通じても初心者の場合はタイピングできないことがあるかもしれません。macの場合はoptionキーを押しながら、¥キーを押すと入力できます。
# 文字列の中にダブルクォーテーションを含める
puts "I say \"Hello!\""
|:縦棒、パイプ
or演算子や自己代入、ブロック変数(ブロックパラメータ)の区切りで使用します。
# or 演算子
a > 0 || b > 0
# ブロック変数(i)の区切り
5.times{|i| p i}
*:アスタリスク
掛け算や正規表現の繰り返しで使用します。
私はアスタと省略して呼んでいますが結構通じます。
# 掛け算
2 * 3
# 正規表現
/ab*c/.match?(string)
おわりに
普段プログラムで書いている記号でも意外と読めない記号ってあるものですね。
日本人であれば一度は感じたことがある「漢字読めるけど書けない」現象と似ていて面白いと感じました。
特にリモートワークでのペアプロとなると対面のようにジェスチャーを使って記号を伝えることができないので、言葉だけで意思疎通ができるように気を遣う必要があります。
そこで、ペアプロ前に一度記号や用語について擦り合わせを行っておくとスムーズに意思疎通ができると思いました。
また、プログラミング初心者の方は記号と実装のイメージができていないと思うので、「この記号はこういう時に使う」ということを事前にインプットしておくとペアプロがやりやすくなると思います。
反対に経験者の方であれば記号は読めなくてもプログラムの目的を伝えることでうまくいくかもしれませんね。
お互いの経験に合わせてやり易い方法を模索するのもペアプロの楽しみだと実感しました。