Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

本記事では、gemとライブラリについて解説します。

gemとは簡単にいえばライブラリで、誰かが作ったものを自分のプログラムで使うことができるのです。

gemを使えば毎回イチからプログラムを作る必要がなくなります

gemは膨大な数になりますが、ほんの一部を紹介します。

ぜひ雰囲気をつかんでください。

gemとは!という定義は後にして、実際に動かしてみましょう。

都道府県を取得するjp_prefecture

JIS X 0401 により、各都道府県におおむね北東から南西へ、01から47までの番号が割り振られています。

みなさんのお住いの都道府県にも、必ず番号が振られています。

都道府県コードから、都道府県を得るプログラムはどうすればよいでしょうか?

すぐに思いつく方法は、どこかに配列またはハッシュを定義してそれを呼び出すというものでしょう。

確かにそれでもよいのですが、もう少しスマートにgemを使ってみましょう。

都道府県コードから都道府県名を取得したい!と思ったらまず「gem 都道府県」で検索しましょう。

jp_prefectureがヒットします。

jp_prefecture とは都道府県コードと都道府県名を変換するライブラリです。

と説明があります。これを使いましょう。

gemはだいたいインストール方法や使い方が書かれています。

上記のリンクによると、以下でインストールできるそうです。

$ gem install jp_prefecture

やってみましょう。以下のようなメッセージが返ってくれば成功です。

Fetching: jp_prefecture-0.9.0.gem (100%)
Successfully installed jp_prefecture-0.9.0
1 gem installed

確認はこうします。

$ gem list | grep jp_prefecture

以下が表示されれば完了です。

jp_prefecture (0.9.0)

使い方も書いてあるので、まねてみましょう。

require 'jp_prefecture'

pref = JpPrefecture::Prefecture.find 13

puts pref.name

[実行結果]

東京都

もうできました!

都道府県コード13は東京都なので、”東京都”という文字列が表示されました。

もうちょっと解説を見ると、都道府県名から都道府県コードを得ることもできるようです。

require 'jp_prefecture'

pref = JpPrefecture::Prefecture.find name: "東京都"
puts pref.code

[実行結果]

13

今度は”東京都”から13を得ることができました。

さらによく見ると、地方も得られるようです。例えば東京であれば関東ですよね。

これを使って、関西地方の都道府県だけ出してみましょう。

require 'jp_prefecture'

JpPrefecture::Prefecture.all.each do |ar|
	if ar.area == "関西"
		puts ar.name
	end
end

[実行結果]

三重県
滋賀県
京都府
大阪府
兵庫県
奈良県
和歌山県

できました!!

近畿二府四県を取得できました。

ここで郵便番号を取得すること自体のコーディングは一切していないということに注目してください。

他にもさまざまな使い方があるようですが、そろそろ別のgemに行きましょう。

CSVファイルを読み込む CSV

CSVファイルをパース(構文解析、要はカンマごとの値を取り出す等々)したいことはよくあります。

どうせだったら、カンマごとに配列に入れてくれればいいのに・・・

そう思いますよね。

自分が欲しいと感じたら、Rubyの世界ではだいたいがgemとして公開されています。それを使わない手はありません。

というわけで「gem CSV」で検索すれば、以下がヒットします。

その名もcsvです。そのまんまですね。

ここを見てみると、やはりインストール手順と使い方が書いてあります。

インストールは以下のとおりです。

$ gem install csv

適当なCSVファイルを用意しましょう。

今回は郵便番号データを使います。

東京の分だけダウンロードしましょう。

ZIP形式なので、ダウンロードして解凍すると13TOKYO.csvというファイルができます。

そのファイルをソースファイルと同じフォルダに保存してください。

そしてCSVのページへ戻ると、使い方が書いてあります。

require "csv"

CSV.foreach("path/to/file.csv") do |row|
  # use row here...
end

だそうです。

とりあえず動くかどうか知りたいので、空振りすることを予想してそのまま動かしましょう。

require "csv"

CSV.foreach("13TOKYO.CSV") do |row|
  # use row here...
end

[実行結果]

invalid byte sequence in UTF-8 (ArgumentError)

いきなりエラー・・・

「ruby csv 読み込み」で改めて検索してみましょう。すると、エンコード指定で読み込む方法が見つかります。

ついでに、foreachも変ですね。eachに直しましょう。

読み込みも分けて簡潔にします。

まずは中身を確認するまでいきましょう。

require "csv"

csv_data = CSV.read("13TOKYO.CSV", encoding: "Shift_JIS:UTF-8")

csv_data.each do |row|
	p row  
end

[実行結果]

・・・中略・・・

["13421", "10022", "1002211", "トウキヨウト", "オガサワラムラ", "ハハジマ", "東京都", "小笠原村", "母島", "0", "0", "0", "0", "0", "0"]

何か出ました!

どうやらrowに1行分の内容が配列で入っているようです。

ということは、郵便番号っぽい3つめを指定すれば良いのでしょうか?

require "csv"

csv_data = CSV.read("13TOKYO.CSV", encoding: "Shift_JIS:UTF-8")

csv_data.each do |row|
	p row[2]  
end

[実行結果]

・・・中略・・・
"1001511"
"1001701"
"1002100"
"1002101"
"1002211"

出ました!

あとは、要素指定して千代田区のものだけを出力、などの工夫ができますね。

まとめ

本記事では、gemの使い方を解説しました。

今後「誰でも思いつきそうなことなら、何か良いgemはないかな?」と考えてみてください。

きっとどこかの誰かが先に作ってくれていますよ!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。