📚 Swift入門シリーズ: #1 なぜSwift? → #2 環境構築
プログラミング学習の最初の一歩は、伝統的に「Hello, World!」を表示するプログラムを書くことから始まります。この記事では、Swiftで最初のプログラムを書き、print() 関数について学びましょう。
来春からデータサイエンティストとして働く予定の技術オタク。
『知りたい』気持ちで質問を止められない、好奇心旺盛な学生。
前回はXcodeをインストールして、Playgroundの使い方を学んだね!
そうだね。今回は、いよいよ最初のSwiftプログラムを書いてみよう。
Xcodeもインストールできたし、Playgroundも使えるようになったよ!
いいね!それじゃあ、いよいよ最初のSwiftコードを書いてみよう。
環境も整ったし、いよいよコードを書くぞ!何から始めればいい?
プログラミングを始める人が最初に書く伝統的なプログラムがあるんだ。それが「Hello, World!」っていうプログラムなんだよ。
Hello, World!?なんでそんなプログラムを書くの?
いい質問だね。「Hello, World!」は、1970年代から続くプログラミングの伝統なんだ。新しい言語を学ぶとき、まず画面に「Hello, World!」と表示するプログラムを書くのが慣習になっているんだよ。
この単純なプログラムには、実はいくつかの目的があるんだ。まず、環境が正しく動作するか確認できる こと。コードを書いて実行できれば、開発環境が正しくセットアップされている証拠になるんだ。次に、言語の基本的な構文を学べる こと。出力の仕方を知ることで、後の学習でデバッグやテストがしやすくなるんだよ。そして、達成感を味わえる こと。最初の一歩を踏み出すことで、「プログラミングができた!」という実感が得られるんだ。
なるほど!じゃあ早速書いてみよう!
Hello, World!を書いてみよう
それじゃあ、前回作ったPlaygroundを開いて、次のコードを書いてみて。既に書かれているコードは全部消して、新しく書いてもいいし、下に追加してもいいよ。
print("Hello, World!")
たったこれだけなんだ。
え!?これだけでいいの!?
そう、たった1行だけ。Swiftはシンプルで書きやすい言語だから、複雑な準備は必要ないんだ。このコードを書くと、コンソールエリアに「Hello, World!」と表示されるはずだよ。
スクリーンショット:Hello, World!の実行結果
(ここにPlaygroundでHello, World!を実行した画面のスクリーンショットを挿入)
本当だ!コンソールに「Hello, World!」って表示された!すごい!
おめでとう!これが君の最初のSwiftプログラムだよ。プログラマーとしての第一歩を踏み出したね。
print()関数とは?
ところで、print()って何?どういう意味なの?
print() は 関数 と呼ばれるものなんだ。関数っていうのは、特定の処理をまとめたもので、名前をつけて何度も使えるようにしたものなんだよ。
print() という関数は、括弧の中に書いた内容を コンソールに出力する 機能を持っているんだ。「print」は英語で「印刷する」とか「表示する」という意味だよね。プログラミングの世界では、画面やコンソールに文字を表示することを「print」って呼ぶのが一般的なんだ。
関数を使うことを「関数を呼び出す」とか「関数をコールする」って言うんだけど、使い方はとても簡単。関数名を書いて、その後に括弧 () をつけるだけなんだ。そして、括弧の中に、関数に渡したい値(これを「引数」って呼ぶ)を書くんだよ。
引数?難しい言葉が出てきた...
ごめんごめん。引数(ひきすう)っていうのは、関数に渡す情報のことなんだ。例えば、print("Hello, World!") の場合、"Hello, World!" が引数なんだよ。つまり、「この文字列を表示してね」って関数にお願いしているわけ。
関数っていうのは、料理のレシピみたいなものだと思ってもらえるといいかな。レシピ(関数)があって、材料(引数)を渡すと、料理(結果)ができるイメージ。print() 関数の場合、文字列を材料として渡すと、それをコンソールに表示してくれるんだ。
あー!レシピと材料の例えはわかりやすい!
文字列とダブルクォーテーション
"Hello, World!" の周りについてる記号は何?
いい観察力だね。この " (ダブルクォーテーション)は、文字列を表す記号 なんだ。Swiftでは、文字列(テキスト)を表すときは、必ずダブルクォーテーションで囲む必要があるんだよ。
これによって、Swiftは「あ、これは文字列なんだな」って理解できるわけ。もしダブルクォーテーションがないと、Swiftは「Hello」を変数名や命令だと勘違いしてしまうんだ。
試しに、ダブルクォーテーションを外して書いてみると、エラーが出るよ。
print(Hello, World!) // エラーになる
これを実行すると、赤い×印とともにエラーメッセージが表示されるはずなんだ。
本当だ!エラーになった!なんで?
ダブルクォーテーションがないと、Swiftは Hello と World を変数名だと思ってしまうんだ。でも、そんな変数は定義されていないから、「Cannot find 'Hello' in scope」(Helloが見つかりません)というエラーが出るんだよ。
文字列を扱うときは、必ずダブルクォーテーションで囲む って覚えておいてね。これがSwiftのルールなんだ。
いろいろな文字列を表示してみよう
じゃあ、他の言葉も表示できる?
もちろん!print() の括弧の中に、好きな文字列を書けば、何でも表示できるよ。試しにいくつか書いてみよう。
print("こんにちは、世界!")
print("Swiftは楽しい")
print("123")
print("プログラミングを学ぼう")
これらを順番に書くと、それぞれの文字列がコンソールに表示されるんだ。print() を呼び出すたびに、改行されて表示されるから、4行の出力が得られるよ。
日本語も表示できるんだ!数字もダブルクォーテーションで囲むの?
いい質問だね。ここでは "123" とダブルクォーテーションで囲んでいるから、これは 文字列としての123 なんだ。数字として扱いたい場合は、ダブルクォーテーションは不要なんだよ。
print(123) // 数字の123
print("123") // 文字列の"123"
今は違いがわかりにくいかもしれないけど、後で変数や計算を学ぶときに、この違いが重要になってくるんだ。文字列の123は計算できないけど、数字の123は計算できる、といった違いがあるんだよ。
空の文字列と特殊文字
空っぽの文字列とか、特殊な文字って表示できるの?
できるよ!まず、空の文字列 は、ダブルクォーテーションの間に何も書かなければいいんだ。
print("") // 何も表示されない(改行だけ)
これを実行すると、何も表示されないけど、改行はされるんだ。
次に、特殊文字 について説明するね。Swiftには「エスケープシーケンス」という、特殊な文字を表現する方法があるんだ。バックスラッシュ \ の後に特定の文字を書くことで、特殊な意味を持たせられるんだよ。
よく使うエスケープシーケンスを紹介するね。
print("改行を\n入れる") // \nで改行
print("タブを\t入れる") // \tでタブ
print("ダブルクォーテーション\"を表示") // \"でダブルクォーテーション
print("バックスラッシュ\\を表示") // \\でバックスラッシュ
\n は改行を表すから、「改行を」と「入れる」が別の行に表示されるんだ。\t はタブ文字で、スペースより広い空白を作るんだよ。
ダブルクォーテーション自体を表示したいときは \" を使う必要があるんだ。なぜなら、普通に " を書くと、文字列の終わりだと思われてしまうからね。
へー!バックスラッシュで特殊な意味を持たせられるんだ!
複数行の文字列
Swiftには、もう一つ便利な文字列の書き方があるんだ。複数行文字列 っていうんだけど、3つのダブルクォーテーション """ で囲むと、複数行の文字列を簡単に書けるんだよ。
print("""
こんにちは
これは複数行の
文字列です
""")
これを実行すると、3行にわたって表示されるんだ。長い文章を書くときや、コードの見た目を整えたいときに便利なんだよ。
おお!これは便利そう!
print()の引数を複数渡す
print()って、1つの文字列しか表示できないの?
実は、print() 関数は複数の引数を受け取ることができるんだ。カンマ , で区切って複数の値を渡すと、それらが空白で区切られて表示されるんだよ。
print("Hello", "World", "!")
これを実行すると、「Hello World !」と表示されるんだ。カンマで区切った値が、自動的にスペースで連結されて出力されるんだよ。
さらに、文字列と数字を混ぜることもできるんだ。
print("私は", 20, "歳です")
これは「私は 20 歳です」と表示されるんだ。数字をダブルクォーテーションで囲まなくても、print() が自動的に文字列に変換して表示してくれるんだよ。
便利!いろんな書き方ができるんだね!
print()のオプションパラメータ
もう少し高度な話になるけど、print() 関数にはオプションのパラメータがあるんだ。興味があれば知っておくといいよ。
まず、separator パラメータ。これは、複数の値を区切る文字を指定できるんだ。デフォルトではスペースだけど、変更できるんだよ。
print("A", "B", "C", separator: "-")
これを実行すると、「A-B-C」と表示されるんだ。スペースの代わりにハイフンで区切られているね。
次に、terminator パラメータ。これは、print() の最後に追加する文字を指定できるんだ。デフォルトでは改行 \n が追加されるんだけど、これを変更すると改行しないようにできるんだよ。
print("Hello", terminator: "")
print("World")
これを実行すると、「HelloWorld」と表示されるんだ。1つ目の print() の後に改行が入らないから、2つ目の print() が同じ行に表示されるんだよ。
separator とか terminator って何?
これらは 名前付き引数 って呼ばれるもので、関数に渡す値に名前をつけることができるんだ。separator: や terminator: のように、コロン : の前が名前で、後ろが値なんだよ。
今は「へー、そういうこともできるんだな」くらいに思っておいてもらえれば大丈夫。このコースの後半で、関数について詳しく学ぶから、その時にもっと理解が深まるよ。
わかった!今は全部理解できなくても大丈夫なんだね!
デバッグツールとしてのprint()
最後に、print() の実用的な使い方について話しておくね。プログラミングをしていると、コードが思った通りに動かないことがあるんだ。そういう時、デバッグ って作業をするんだけど、print() はデバッグの強力なツールになるんだよ。
例えば、計算結果が正しいか確認したいとき、途中経過を print() で表示することで、どこで間違っているかを見つけられるんだ。
let x = 10
let y = 20
print("xの値:", x)
print("yの値:", y)
let result = x + y
print("計算結果:", result)
このように、変数の値を print() で確認しながらプログラムを書くことで、バグを見つけやすくなるんだ。プロのエンジニアも、複雑なデバッグツールと並んで、シンプルな print() をよく使うんだよ。
let とか変数って何?
DialogueExpert
あ、ごめん。変数については次の章で詳しく説明するから、今は「値を保存する箱みたいなもの」って思っておいてもらえれば大丈夫。ここでは「print() でいろんな値を確認できるんだな」ってことだけ覚えておいてね。
::
print()とデバッガの違い
前にデバッガっていう言葉が出てきたけど、print()とは違うの?
いい質問だね。デバッガは、コードの実行を一時停止して、その時点での変数の値を詳しく調べたり、1行ずつ実行したりできる高度なツールなんだ。Xcodeにも強力なデバッガが組み込まれているんだよ。
デバッガの方が機能は豊富だけど、使い方を覚えるのに時間がかかるんだ。一方、print() は今すぐ使えて、シンプルで、コードのどこにでも簡単に追加できるっていう利点があるんだよ。
プロのエンジニアは、状況に応じてデバッガと print() を使い分けるんだ。簡単なチェックなら print()、複雑な問題ならデバッガ、みたいな感じでね。初心者のうちは、まず print() をたくさん使って慣れることが大切だよ。
なるほど!まずはprint()を使いこなせるようになればいいんだね!
実践練習
じゃあ、ここまで学んだことを練習してみよう。以下のような出力をするプログラムを書いてみて。
私の名前は山田太郎です
年齢は25歳です
趣味はプログラミングです
ヒント:3つの print() を使えばいいよ。
やってみる!
print("私の名前は山田太郎です")
print("年齢は25歳です")
print("趣味はプログラミングです")
できた!
完璧だね!次は、自分の名前や年齢に変えて、オリジナルのメッセージを作ってみよう。自由に好きな文章を表示させてみて。プログラミングの面白さは、自分のアイデアを形にできることなんだ。
うん!いろいろ試してみる!
まとめ
この記事では、最初のSwiftプログラムとして「Hello, World!」を書き、print() 関数について学びました。
- Hello, World!: プログラミング学習の伝統的な最初のプログラム
- print()関数: コンソールに文字列や値を出力する関数
- 文字列: ダブルクォーテーション
"で囲む必要がある - エスケープシーケンス:
\n(改行)、\t(タブ)、\"(ダブルクォーテーション)など - 複数行文字列:
"""で囲むと複数行の文字列を書ける - 複数の引数: カンマ区切りで複数の値を渡せる
- オプションパラメータ:
separator、terminatorで出力形式をカスタマイズできる - デバッグツール:
print()は変数の値を確認するのに便利
次回は「コードの『メモ』と『ルール』」として、コメントの書き方とSwiftの基本的な文法ルールを学びます。コードをわかりやすく保つための大切なテクニックを身につけましょう!