LoginSignup
30
3

More than 1 year has passed since last update.

Ruby初心者がGitHub上でよくやりがちな誤爆メンションとその解決策

Last updated at Posted at 2022-05-04

はじめに:誤爆メンションって何?

Rubyでは@で始まる変数がインスタンス変数になります。
これはRuby on Railsなどでも当然同じルールです。

# @で始まる変数はインスタンス変数 
@foo = 1

# 何も付かない変数はローカル変数
foo = 1

一方、TwitterやGitHub、そしてこのQiitaなど、昨今のSNSでは@がユーザーへのメンションとしても使われています。
たとえば、以下の画像に見える@jnchitoは、jnchitoというTwitterユーザーに対するメンションです。

Screen Shot 2022-05-04 at 15.27.25.png

この2点はわざわざ僕が説明しなくても「そんなこたぁ前からわかっとるわい!」と思われそうな話なのですが、TwitterやGitHubで何も考えずにRubyのコードをコピペすると、予期せずメンションが発生するので要注意です。

たとえばGitHubを例に挙げると、こんなイメージです。

Screen Shot 2022-05-04 at 15.34.55.png

こうすると「GitHub上に実在する bookさん」にメンションを送ることになってしまいます。

Screen Shot 2022-05-04 at 15.37.14.png

ですが、ここではもちろん @book さんにメンションを送る必要はありません。

SNS上で発生するこういった意図しないメンションのことを「誤爆メンション」と僕は呼んでいます。

解決策

Markdownでは単語をバッククオートで囲むとコードスパンになります。コードスパンにすればメンションは発生しません。

ここは `@book = Book.new(book_params)` 以外の方法で `@book` をnewできませんか?

以下のように薄いグレーの背景になっていれば、コードスパンになっているので大丈夫です。

Screen Shot 2022-05-04 at 15.41.29.png

バッククオートを3つ重ねてコードブロックにするのも同じく有効です。

ここは 

```ruby
@book = Book.new(book_params)
```

以外の方法で `@book` をnewできませんか?

Screen Shot 2022-05-04 at 15.43.34.png

GitHubやQiitaなど、Markdown記法を採用しているサイトはこれで大丈夫ですが、TwitterはMarkdown記法ではないので、意図的に@のうしろにスペースを入れるぐらいしか対策はないと思います。

Screen Shot 2022-05-04 at 16.06.02.png

そうそう、上の例だとBook.newがURLと見なされているので、ここもドットの前にスペースを入れたりしてリンクにしない方がいいですね。(面倒くさいけど・・・)

Screen Shot 2022-05-04 at 16.06.27.png

まとめ(と情報募集)

というわけで、この記事では昨今のSNSで発生しやすい誤爆メンションと、その解決策を紹介しました。

Rubyのコードを交えながらコメントする際は、必ずインスタンス変数をバッククオートで囲むようにしましょう!・・・と言っても、プログラミング初心者だとなかなかこの問題に気付きにくいですよね〜。
今のところ「気を付ける」ぐらいしか対策が思いつかないんですが、もうちょっといい方法はないのかな〜と思ったりします :thinking:

もし「気を付ける」以外の何かいい仕組みをご存じの方がいたら、コメント欄で教えてください!

参考

QiitaとGitHubのMarkdown記法については、以下の公式ページが参考になります。

基本的な書き方とフォーマットの構文 - GitHub Docs

30
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
3