LoginSignup
4
0

More than 5 years have passed since last update.

1文字名のgemが作りたかった話。

Last updated at Posted at 2018-09-05

背景

先日gemを作った際に迷ったのがgemの命名。
Rubyを絵文字で書けるようにするGemつくった

もともとは「🤔」にしようと思ってたのですが、gemの名前にマルチバイト文字は使えなかったので、
適当に"emozi"にしてしまいました。

これは"emoji"がすでに使われていたからではなく、
僕が作ったgemのせいで"emoji"というgemの名前が今後rubygems上では使えなくなるというのが憚られたからです。

思いつき

個人的な感覚だとこういう「他の人と競合しそうな名前」は避けたがるとおもうのですが、
そのへんを気にしない厚顔無恥の方が世界にはどのくらいいらっしゃるのか調べてみようと思いました。

調べてみた

Rubygems上の1文字のgem名をスクレイピングしてみました。

mechanizeを使ってざっくりスクレイピング

スクレイピングコード

require 'mechanize'

mechanize = Mechanize.new

search_url = %(https://rubygems.org/search?utf8=%E2%9C%93&query=name%3A+)
('a'..'z').each do |char|
  search_page = mechanize.get(search_url + char)
  gem_titles = search_page.search('h2.gems__gem__name')
  gem_names = gem_titles.map { |title| title.at(:span).remove; title.inner_text.strip }
  if !gem_names.include?(char) && !gem_names.include?(char.upcase)
    puts "'#{char}'空いてます!!!!!!"
  else
    puts "'#{char}'空いてません"
  end
end

実行結果

'a'空いてません
'b'空いてません
'c'空いてません
'd'空いてません
'e'空いてません
'f'空いてません
'g'空いてません
'h'空いてません
'i'空いてません
'j'空いてません
'k'空いてません
'l'空いてません
'm'空いてません
'n'空いてません
'o'空いてません
'p'空いてません
'q'空いてません
'r'空いてません
's'空いてません
't'空いてません
'u'空いてません
'v'空いてません
'w'空いてません
'x'空いてません
'y'空いてません
'z'空いてません

どの文字も空いてませんでした。

つらい。

ちなみに2文字(aa-zz)だと280パターンぐらいあいてた。
スクレイピングするときは適切な間隔を開けてDDoSしないようにしましょう。

追記

コメントで gem searchを教えていただきました。

$ gem search -r '^.$'

実行結果


*** REMOTE GEMS ***

- (1)
_ (1.4)
a (0.1.1)
b (1.0.3)
c (0.0.3)
d (1.2.0)
e (0.5.1)
f (0.1.0)
g (1.7.2)
h (4.0.0)
i (0.1.0)
j (0.6.11)
k (0.1.1)
l (0.1.0)
m (1.5.1)
n (0.1.0)
o (2.0.4)
p (0.2.1)
Q (0.0.1)
q (0.0.1)
r (0.0.3)
s (0.0.2)
t (3.1.0)
u (1.0.2)
v (0.1.1)
w (0.0.0)
x (0.0.3)
y (0.0.2)
z (0.1.0)

僕はシェル芸できないので抜けてる文字(無い)を探したりはできないですが、こっちのほうがスマートですね。

4
0
2

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
4
0