• WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

Web Camp【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
9月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
8月受入枠は満員となっております。9月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

Rubyの学習を始めると最初に手をつけるのはprintやputsかと思います。

今回はそんなprintやputs、pについて丁寧に解説していきます。

サンプルプログラムを動かしてみよう

「print」「puts」「p」は、Rubyで文字や数字などを画面出力する命令(メソッドと呼びます)です。

単純に文字を出力したいだけであれば、どれを使っても大して違いはありません。

しかし、違うメソッドだということは、当然ながら、違う部分があり、それぞれに適した用途というものがあるものです。

そんな用途を理解することで、この3つのメソッドをうまく使い分けることができますので、大まかにでも理解しておくことをおすすめします。

解説を進めるために、まずは次のプログラムをtest002.rbというファイル名で保存してください。

msg1 = "100"
msg2 = [msg1, "Ruby!", "\n"]

puts("\n--- print ---")
print(msg1)
print(100)
print("\n")
print("msg1 = ", msg1)
print(msg2)

puts("\n--- puts ---")
puts(msg1)
puts(100)
puts("\n")
puts("msg1 = ", msg1)
puts(msg2)

puts("\n--- p ---")
p(msg1)
p(100)
p("\n")
p("msg1 = ", msg1)
p(msg2)
(test002.rb)

何が表示されている?

では、test002.rbを動かして見ましょう。

コマンドプロンプト(ターミナル)で、「ruby test002.rb」と入力してください。

間違いがなければ、以下のように表示されます。

--- print ---
100100
msg1 = 100["100", "Ruby!", "\n"]
--- puts ---
100
100

msg1 = 
100
["100", "Ruby!", "\n"]

--- p ---
"100"
100
"\n"
"msg1 = "
"100"
["100", "Ruby!", "\n"]

どこか間違っていれば、間違っている行番号を含んだエラーメッセージが表示されますので、その行番号のあたりに記載ミスがないか確認して、修正してください。

プログラムとしては、同じ内容を「print」「puts」「p」で出力しているだけですので、この3つにメソッド名以外の違いはありません。しかし、出力されたものが大分違いますね。

この結果から、これらのメソッドの特徴を説明していきましょう。

表示するメソッドが違えば、表示が変わる

それぞれどのような動きで、結果のような表示がされたのかを見ていきましょう。

表示メソッドとは直接関連していませんが、説明が必要な部分を先に説明しておきます。・msg1 = "100”
msg1という名前の箱(変数)に”100"という文字列を格納しています。・msg2 = [msg1, "Ruby!", "\n"]
上記と同じですが、msg2に格納されているのは、msg1の中身(”100")と "Ruby!"、"\n"という3つの文字列が連なったものです。(つながったひとつの文字列ではありませんので注意してください)細かく説明すると、[0][1][2]とくっついた3つの箱のそれぞれにmsg1の中身(”100")と "Ruby!"、"\n"が順番に格納されており、その[0][1][2]の箱全体をmsg2という大きな箱に入れたイメージです。・puts("\n--- print ---")やputs("\n--- p ---")など
結果を分かりやすくするためのタイトルです。・”\n”
文字列の中の「\n」というものは、「改行」を意味する文字です。

・print

printを使っている4行のプログラムコードと表示結果は、次の部分です。

print(msg1)
print(100)
print("\n")
print("msg1 = ", msg1)
print(msg2)
100100
msg1 = 100["100", "Ruby!", "\n"]

5行のプログラムで2行しか表示されていない点が、もっとも大きな特徴と言えます。

これは、printメソッドが、渡されたものが文字列であればそのまま表示、そうでなければ文字列に変換して表示するからです。

「100」という文字列が入っているmsg1を渡されている1行目では、そのまま「100」を表示し、2行目の「100」は文字列に変換して表示、3行目の改行はそのまま表示しています。

その結果、1行目から3行目のコードがくっついたようになって、結果の1行目になるわけです。

プログラムコードの4行目では、渡された「msg = 」と「100」という文字列を続けて表示しています。その後に5行目の出力か続いているのは、先ほど同様、4行目の末尾に改行文字列がないため、そのまま表示されているわけです。

5行目の出力については、少し複雑です。

msg2を渡されたprintは、msg2の中に入っているものを表示しようとしますが、中に入っているのは、[0][1][2]という連なった箱です(中に文字列が入っていますが)。そのため、printは、この連なった箱を無理矢理文字列に変換します。

その結果、中の文字列だけではなく、箱の連なりを表す「[」や「]」、区切りを表す「,」、文字列を表す「"」も文字に変換されて表示されているわけです。

・puts

以下がコードと結果です。

puts(msg1)
puts(100)
puts("\n")
puts("msg1 = ", msg1)
puts(msg2)
100
100

msg1 = 
100
["100", "Ruby!", "\n"]

printとは逆に、7行も表示されています。

その理由は、putsが、渡された「文字列に改行を加えて表示する」ためです。

詳しく説明していきましょう。

まず、「100」という文字列が入っているmsg1から「100」を取り出し、それに改行を追加して表示することで、1行目の表示になります。同様に、数値の「100」を文字列に変換した上で改行を追加したものが、2行目の結果です。

3行目の「改行のみ」が渡されているコードでは、改行が追加されることなく表示されているため、空行が1行だけ表示されています。これは、「渡された文字列の末尾が改行の場合は改行を付加しない」という特例です。

4行目は、2つの文字列が続けて渡されたと考えれば分かりやすいでしょう。putsが、「msg = 」と「100」という文字列に改行を追加して表示しているわけです。

5行目は、一手間加えてくれています。msg2の中に[0][1][2]という箱を見つけたputsが、それらの中の文字列を取り出し、その文字列に改行を追加して、順番に表示してくれているのです。この場合は、末尾が改行の場合の特例が働かず、最後に改行が2つ表示されて空行が2行になっています。

・p

p(msg1)
p(100)
p("\n")
p("msg1 = ", msg1)
p(msg2)
"100"
100
"\n"
"msg1 = "
"100"
["100", "Ruby!", "\n"]

pの動きは、基本的にはputsと同じです。ただし、pでは、渡されたものが「何なのか」が分かるように表示してくれます。

「何なのか」というのは、それが数値なのか文字列なのか、それ以外の何かなのか、ということです。(今回のサンプルプログラムでは、文字列なのか、数値なのか、という違いになります)

具体的には、1行目と2行目が分かりやすいでしょう。

1行目は「100」という文字列が入っているmsg1から「100」を取り出し、それに改行を追加して表示しています。ただし、「100」は文字列ですので、それが分かるように、ダブルクォーテーションで囲んで”100”としているわけです。

2行目も同じ「100」ですが、数値ですので、ダブルクォーテーションでは囲まず、そのまま表示されています。

次の改行文字列を表示しているコードの結果は、他のメソッドと明らかに違っています。他のメソッドの場合は、改行文字列を素直に表示するため、見た目には何も表示されていません。そのため、メソッドに渡されたのが何なのか、すぐには気付けないでしょう。しかし、pの表示の場合は、「改行文字列」がpに渡されたことが明確に分かります。

また、複数の文字列が渡された場合の動きもputsとほぼ同じですが、両方とも文字列ですので、ダブルクォーテーションで囲まれたものが出力されています。

最後の、msg2が渡された5行目の結果は、printの結果と同じになっています。これは、printが文字列でないものを無理矢理表示しようと変換した結果が、たまたま箱の連なりに入った文字列であることを表した結果と等しかったためてです。

表示メソッドの使いどころ

実際のプログラムの動きを説明させていただきました。

しかし、大事なのは、実際に「print」「puts」「p」を「どう使い分けるか」です。

ここでは、それぞれのメソッドをどんなときに使うのか、代表的な例を紹介していきます。

プログラムの表示結果

表示用のメソッドですので、「プログラムで何かを表示するため」に使うのは当然です。

ここで言う表示結果というのは、「意図通りに表示する」という点が重要です。

例えば、test002.rbの3つのメソッドの表示結果の、printの結果の1行目を見てみましょう。

ここでは、print(msg1)、print(100)、print("\n")の結果がまとまって、1行で表示されています。

一般的に、まとめて表示したいのであれば、printメソッド1行で済ませると思います。そうなると、この表示結果は正しくありません。つまり、バラバラで表示したいのであれば、putsメソッドの結果の方が適しているでしょう。(もちろん、printメソッドですべての文字列の末尾に改行文字列を追加しても構いません)

pについては、pに渡されたものが何なのかを知りたいのという意図がなければ、ふさわしくないと言えます。(プログラムを使うだけの人には、何が渡されているのかなんて、あまり興味がないかと思います)

デバッグ

デバッグというのは、プログラムの動きを確認して、うまく動かない部分を見つけ、修正することです。

プログラムの動きを確認するためには、プログラムの中で扱っている情報(数値や文字列など)が、プログラムの中のある時点でどうなっているのかを知る必要があります。

そのため、プログラム上、本来表示するタイミングではない部分に表示メソッドを挿入して、以下の2点を確認することが多くあります。

・プログラムがどこまで進んでいるか

多くのプログラムは、非常に長く複雑です。そのため、不具合が起こっても「どこに問題があるのか」がすぐには分かりません。

そのため、プログラムがどこまで進んでいるのかを知る必要があるのです。

そのときにもっとも容易に確認できる方法の1つが表示メソッドを挿入することです。

例えば、プログラムの上から順に、処理のブロックごとにputs(1)、puts(2)、puts(3)、と挿入しておきます。そしてプログラムを実行すれば、処理が進むごとに数字が表示されるでしょう。その表示される数字を見れば、どのブロックまで処理が進んでいるのか、確認できるというわけです。

この場合は、数字を直接表示するだけですので、どの表示メソッドを使っても問題ありません。

・計算処理などの途中経過を確認する

プログラムというのは、内部に持っている情報をやりとりして加工し、その結果を出力するのが基本的な動きです。

そのため、不具合というのは、加工の方法に問題があるということです。この点を確認するためには、プログラムがどこまで進んでいるかということだけではなく、内部の情報の状態ややりとりが正しいかどうかを確認する必要があるでしょう。

こういった場合は、表示メソッドを使ってその情報を出力することで、正しいかどうかを確認することになります。

この確認には、表示メソッドの特徴をつかんだ使用が必要です。

持っている情報を数値や文字列にかかわらず表示して確認したいのであれば、printかputsになります。

ただし、printの場合は、改行を表示するように追加しておかなければ、出力がつながってしまうので、確認しづらいでしょう。そのため、putsの方が適しています。

逆に、msg1の中身だと分かるように、「msg1 : ○○」といったタイトル付きで表示したい場合は、勝手に改行を入れてしまうputsは使いづらくなります。

pについては、イメージしにくいかもしれませんが、ある箱に入れているのが文字列なのか、数値なのか分からない場合など、どんなものが入っているのかを確認したい場合に使うことになります。この場合は、p以外では確認が難しいので、printやputsは使わない方が良いです。

まとめ

ここまでで、「print」「puts」「p」についての概要の説明は完了です。

これらの知識があれば、最低限の利用は可能ですので、じゃんじゃん使ってRubyの学習に役立ててください。
(公式リファレンス(https://www.ruby-lang.org/ja/)を見れば、もっと詳しい解説があります。しかし、専門的すぎて難しいかもしれません。そのため、専門的な部分を対面式のスクールなどで学べれば、気軽に質問できて便利かもしれません)

・「print」「puts」「p」は表示メソッド
・「print」は、渡されたものをできる限り文字列に変換して表示する
・「puts」も文字列に変換して表示するが、末尾に改行を追加してくれる
・「p」は渡されたものが何なのかが分かるように表示してくれる
・表示メソッドはデバッグに使える

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

8月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
7月受入枠は満員となっております。8月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby入門説明書】ruby sliceについて解説
  • 【Ruby入門説明書】chompについて解説
  • 【Ruby入門説明書】selectについて解説
  • 【Ruby入門説明書】matchについて解説
  • 【Ruby入門説明書】リファレンス、sortについて解説
  • 【Ruby入門説明書】リファレンス、moduleについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事