プログラムの書き方とエラー
読了目安 約3分
コンパイルエラーの読み方を覚える。エラーは間違いの場所を教えてくれる味方。
この章の目次
プログラムには文法の決まりがあります。 決まりに合わない部分があると、Swift はエラーで知らせてくれます。 エラーを読めるようになることが、上達のいちばんの近道です。
コンパイルエラー
Swift のプログラムは、実行の前にコンパイルという変換を通ります。 コンパイルは、人間が書いたコードをコンピュータが実行できる形に変換する作業です。 文法に間違いがあると変換は失敗し、コンパイルエラーが報告されます。
次のコードは、文字列を閉じる " を忘れています。
実行して、エラーを見てみましょう。
print("こんにちは)main.swift:1:7: error: unterminated string literal「コンパイルエラー」は罰ではなく、間違いの場所と理由を実行前に教えてくれる味方です。 プログラマは毎日エラーを出し、直しながら書き進めます。
エラーメッセージの読み方
エラーメッセージは、場所、種類、理由の順に並んでいます。
main.swift:1:7:場所。main.swiftというファイルの 1 行目、7 文字目error:種類unterminated string literal:理由。「文字列が終わっていない」
種類が error の報告は、直すまでプログラムを作れません。
warning(警告)は、動くけれど直したほうがよい部分への注意です。
コンパイルが通った後、実行の途中で止まるエラーもあります。 これは実行時エラーと呼ばれます。
括弧の閉じ忘れ
" と並んでよくあるのが、( と ) の閉じ忘れです。
print("こんにちは"main.swift:2:1: error: expected ')' in expression listエラーの位置が、書いた 1 行目ではなく 2 行目になっています。
コンパイラは ) をファイルの終わりまで探し続けるためです。
表示された行に間違いが見当たらないときは、その前の行を疑ってください。
全角スペースの罠
日本語入力のままスペースを打つと、半角ではなく全角スペースが入ります。 Swift のコードで使える空白は半角だけです。
print("1 行目")
print("2 行目")main.swift:2:1: error: invalid character in source fileinvalid character は「コードに使えない文字がある」という意味です。 「全角スペース」は見た目で半角と区別しにくいので、このメッセージを見たらまず疑ってください。
試してみよう: 2 行目の先頭にある全角スペースを削除して、エラーが消えることを確かめてください。
学びどころ
| 概念 | 一言まとめ |
|---|---|
| コンパイル | コードを実行できる形に変換する作業 |
| コンパイルエラー | 間違いの場所と理由の報告。実行前に気づける |
ファイル名:行:列 | エラーメッセージの先頭は場所を表す |
| 全角スペース | コードに混ざるとエラー。空白は半角で |
演習
スターターコードには、この章で見たエラーが 3 か所あります。 すべて直して、次の 3 行を出力してください。
こんにちは
Swift
エラーはこわくないエラーメッセージの行番号を手がかりに、上から 1 つずつ直しましょう。
模範解答
print("こんにちは")
print("Swift")
print("エラーはこわくない")間違いは、" の閉じ忘れ、) の閉じ忘れ、行頭の全角スペースの 3 つでした。