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

Rubyで与えられた文字列を、コンソールに出力する時は、printfメソッドやputsメソッドを用います。この記事では、printfメソッドの使い方や、putsメソッドとの違いを解説していきます。

printfメソッドとは

冒頭でも述べたとおり、printfメソッドは引数で与えられた文字列をコンソールに出力するメソッドです。

さらに、フォーマットを指定して数値を左寄せ・右寄せしたり、指定した桁数まで数値に「0」を埋める、いわゆるゼロ埋めをしたりできます。

printfを使った文字列のコンソール出力は、コンソール上で動作するRubyアプリはもちろんのこと、その他のアプリの開発でも、デバッグ用途で変数の中身を出力して確認する時に使用するなど、多くのシーンで活躍するメソッドです。

printfメソッドの構文

printfの使い方(構文)は次の通りです。

printf( "フォーマット", パラメータ )

メソッドの使用例は次の通り。

printf( "私は%sです。年齢は%dです。",  )

1つ目の引数のフォーマットは基本的に C 言語のprintfメソッドで指定できるフォーマットと同じで、次の表に示すものが使用可能です。

指示子 意味
%c 引数の数値を文字コードとみなして対応する文字を出力
%s 文字列を出力
%p inspectメソッドを呼び出した結果を出力
%b, %B 数値を2進数で出力
%o 数値を8進数で出力
%d, %i 数値を10進数で出力
%x, %X 数値を16進数で出力
%f 999.999のような小数点の表現で数値を出力
%e 9.999e+10のような指数表現で数値を出力
%% %そのものを出力(%のエスケープ シーケンス)
幅の指定がある場合に出力を左寄せにする。
+ + または の符号を出力
空白 数値が負の数のときを出力。正の数の時は半角スペースを出力。
数値 幅を指定する。ここで指定された数だけスペースが埋められた文字が出力される。
0 幅の指定時に、あまった文字をスペースではなく0で埋める。

このように、printfメソッドの1つ目の引数には、固定で出力する文字と、動的に変わる値の型や書式を指定します。

printfメソッドを使ってみよう

printfメソッドの構文を確認したところで、実際にさまざまなフォーマットを指定して、コンソールに出力するサンプルコードを見ていきましょう。

数値のフォーマット

数値をprintfメソッドで出力する場合、値をそのままや、指定桁数で左寄せ・右寄せ、ゼロ埋めなど、さまざまな書式を指定できます。

作成例1:単純な数値の出力

最初は、なんの書式指定しないもっとも単純な数値を出力する例です。

a = 1000
printf("a=%d", a)
------------
a=1000

作成例2:指定桁数まで数値を右詰で出力

%幅dのように指定することで、指定した幅(桁数)になるまで、スペースを埋めて出力します。

a = 1000
printf("a=%6d", a)  #6桁になるまで右詰
------------
a=  1000

作成例3:指定桁数まで数値を左詰で出力

幅の桁数指定の前にを指定すると、左詰で結果を出力します。

a = 1000
printf("a=%-6d", a)  #6桁になるまで左詰
------------
a=[1000  ]

作成例4:指定桁数まで数値を右詰(余った部分はゼロ埋め)

幅の桁数指定の手前に0を指定すると、指定桁数までであまった文字を0で埋めます。

a = 1000
printf("a=%06d", a)  #6桁になるまで右詰(ゼロ埋め)
------------
a=001000

作成例5:小数点以下の桁数を指定して浮動小数点を出力

小数点以下の桁数は、浮動小数点の指示子(f)の前に固定で出力する桁数を指定します。値で指定した浮動小数点の値が、フォーマットで指定した桁数に満たない場合はゼロ(0)で余った部分が埋められます。

a = 10.2
printf("a=%10.3f", a)
------------
a=    10.200

作成例6:符号付きで数値を出力

+またはの符号付きで数値を出力する場合は、次のように書きます。

a = 1000
b = -1000

printf("a=%+5d\n", a)
printf("b=%+5d", b)
------------
a=+1000
b=-1000

作成例7:2つ以上の数値を出力

次のように、printfメソッドで2つ以上の数値を出力する場合、出力する数値の数だけ引数にパラメータを設定する必要があります。またパラメータはフォーマットの出現順に指定します。

a = 1000
b = 1

printf("a=%5d,  b=%03d", a, b)
------------
a= 1000,  b=001

カンマ区切りで出力できる?

数値を999,999のように、3桁ごとにカンマで区切って出力することがありますが、printfメソッドはカンマ区切の出力には対応していません。自前のコードで3桁ごとにカンマを挿入するコードを組み込む方法や次の Active_Supportを使う方法が考えられます。

もし「Ruby on Rails」で開発しているのであれば、Railsの Active_Supportを利用すると、:delimitedメソッドを使用して、次のように簡単なコードで数値をカンマ区切に編集できます。

require 'active_support/core_ext/numeric/conversions'

12345678.to_s(:delimited)   # => 12,345,678

「Ruby on Rails」を使用していない環境であっても、gemでRailsの機能の内、Active_Supportのみを個別でインストールすることが可能であるため、Railsの機能は不要だが、:delimitedメソッドだけは使いたい場合は、こちらの方法でも対応が可能です。

gem 'activesupport'

文字列のフォーマット

文字列も%s指示子を使って、指定した値をprintfメソッド出力したり、数値の時と同様に指定桁数で右詰や左詰して出力することが可能です。

いくつかの作成例を見ていきましょう。

作成例1:単純な文字の出力

文字列は%s指示子を使って出力します。

a = "Ruby"
printf("a=%s", a)
------------
a=Ruby
ポテパンダの一言メモ

パラメータとして指定する値と指示子の型があっていないとエラーになるため注意しましょう。指示子は、整数は%d、浮動小数点であれば%f、文字列の場合は%sを指定します。

作成例2:文字列を右詰で出力

数値の時と同様に、%s指示子の前に幅を指定することで、指定桁数になるまで文字列を右詰で出力できます。

a = "Ruby"
printf("a=%6s", a)
------------
a=  Ruby

作成例3:文字列を左詰で出力

指定桁数の左詰で文字列を出力する場合は、幅指定の前にを指定します。

a = "Ruby"
printf("a=[%-6s]", a)
------------
a=[Ruby  ]

文字列でゼロ埋め出来る?

結論から言うと、文字列では数値のようにスペースをゼロで埋めることはできません。

数値の時と同様にフォーマットにゼロ埋め指定を行ってみると、次の結果の通りスペースが埋められた結果で出力されます。

a = "1000"
printf("a=%06s", a) 
------------
a=  1000

まとめ

Rubyのprintfメソッドで、フォーマットを指定して数値や文字列をコンソールに出力する方法を解説していきました。

Rubyではprintfメソッドの他に、putsメソッドでも文字列を出力できますが、printfメソッドの場合はフォーマットを指定して複数の値を出力できることや、強制的に改行がされないといった違いがあります。

これらの違いを理解して、用途に合わせてメソッドを使い分けていきましょう。

【関連記事】
Rubyのif文で条件分岐!数値や文字列の比較方法を解説

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

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

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

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

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

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

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

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

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

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

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