1日目 | Nim100日ドリル
Nimとは/実行のしかた/Hello, world(nim r)

今日の目標

Day1では、まずNimがどのような言語なのかを大づかみに理解し、次にNimのソースファイルをどのように保存して実行するかを学び、最後に自分の手で Hello, world を表示できる状態になることを目標とする。
ただ文字を出すだけに見えるが、実際には「ソースコードを書く」「正しい名前で保存する」「コマンドで実行する」「エラーが出たら原因を切り分ける」という、今後100日間ずっと使う基本動作が詰まっている。
ここで土台をきちんと作っておくことが重要である。

今日の内容

1ー1 Nimとは何か

Nimは、読みやすさと実行速度の両方を重視したプログラミング言語である。
見た目は比較的すっきりしており、初心者でも文のまとまりを追いやすい。
一方で、内部的にはCやC++のような高速なコードへ変換して動くため、学習用だけではなく実用的なソフトウェア開発にも使える。

なぜこの理解が必要かというと、最初の段階で「Nimは書いたそのまま直接機械に伝わる言語ではなく、一度変換してから動くことがある」という感覚を持っておくと、後でコンパイルや実行の流れを理解しやすくなるからである。
今は細部まで覚える必要はないが、「Nimのコードを書き、Nimの道具がそれを実行可能な形にして動かす」という流れだけは押さえておくべきである。

どう使うかという観点では、まずは .nim という拡張子のファイルにコードを書き、nim r ファイル名.nim というコマンドで実行する。
この形が最初の基本形になる。

よくあるミスとして、Nimそのものの書き方以前に、ファイルの作り方や保存名でつまずくことが多い。
特に初心者は、1-1.nim のように先頭を数字にしたり、ハイフンを入れたりしやすい。
しかしNimではファイル名がモジュール名として扱われるため、これは後で invalid module name の原因になりやすい。
ファイル名は半角英小文字、数字、アンダースコアのみを使い、先頭数字やハイフンは避けるべきである。
Day1なら day1.nim または day_1.nim が安全である。day1.nim のような全角数字も避けたほうがよい。

1ー2 nim r で実行するとは何か

nim r day1.nim の r は run の意味であり、「必要ならコンパイルして、そのまま実行する」という命令である。
初心者にとってはこの形が最も扱いやすい。
別々にコンパイルと実行を意識しなくても、とりあえず動作確認まで一気に進めるからである。

なぜこれが必要かというと、プログラム学習では「少し書いてすぐ動かす」ことが極めて重要だからである。
書きっぱなしでは理解は深まらない。実際に動かし、表示結果やエラーメッセージを見て、修正して再実行する。この往復が学習の中心になる。
nim r はその往復を最短距離で行うための基本コマンドである。

使い方は単純で、ターミナルやコマンドプロンプトを開き、day1.nim を置いた場所に移動して、nim r day1.nim と入力するだけでよい。
ファイル名を間違えると当然動かないため、保存した名前とコマンド中の名前を一致させる必要がある。

よくあるミスは、ファイル名の打ち間違いと、保存場所を勘違いすることである。
たとえば nim r day1.nim と打っているのに、実際のファイル名が day_1.nim なら見つからない。
また、エディタでは保存したつもりでも、別のフォルダに保存していることもある。
さらに、Nimのコード中に日本語の全角記号が混ざると、見た目ではわかりにくいエラーになることがある。
括弧や引用符は半角で入力する癖をつけるべきである。

1ー3 echo と文字列表示の基本

Nimで文字を画面に表示するときの最初の基本命令は echo である。
echo "Hello, world" と書けば、その文字列がそのまま表示される。
これは最初の一歩として非常に重要である。
なぜなら、画面に結果を出せるようになると、後の変数、計算、条件分岐、繰り返しの学習でも、自分が何を書いた結果どうなったかをすぐ確認できるからである。

使い方は、echo の後ろに表示したい内容を書く。
文字そのものを表示したいときは、ダブルクォーテーションで囲んだ文字列を書く。
たとえば echo "Nim" なら、Nimという文字が表示される。
数字なら echo 123 のようにも書けるが、今はまず文字列としての表示に慣れる段階である。

Hello, world を表示する最小コード

ファイル名は day1.nim とする。実際の保存名は半角英小文字、数字、アンダースコアのみを使うこと。先頭数字やハイフンは使わないこと。
したがって 1-1.nim は不可であり、day1.nim のような全角数字も避けるべきである。

                    
echo "Hello, world"
                    
                

実行コマンドは次のとおりである。

                    
nim r day1.nim
                    
                

このコードの読み方は単純である。まず echo は「画面に表示せよ」という命令である。
次に "Hello, world" は、表示したい文字列そのものを表している。
最後にこの1行を day1.nim として保存し、nim r day1.nim を実行すると、その内容がコンパイルされて実行され、画面に Hello, world が表示される。

ここでつまずきやすい点がある。ひとつは、文字列を囲む " を忘れることだ。echo Hello と書くと、Nimは Hello をただの文字列ではなく「何かの名前」だと解釈しようとする。
その結果、undeclared identifier、つまり「その名前は宣言されていない」というエラーが出る。
これは今後も頻出するため、文字列として見せたいものには " が必要だと覚えるべきである。

もうひとつは文字列結合である。
今日は深く扱わないが、後で "Hello, " & name のように & を使って文字列をつなぐ場面が出てくる。
初心者は + でつなごうとして失敗しやすい。Nimでは文字列結合の基本は & である。
また、数字と文字列を直接つなぐと型の違いで困ることがある。そのときは $ を使って文字列に変換する方法が出てくる。
たとえば echo "年齢は " & $age & " 歳" のような書き方である。今日は実践しなくてよいが、「文字列は " で囲む」「つなぐときは &」「型が違うときは後で変換が必要になる」という先回りの注意として覚えておくとよい。

課題1 Hello, world を表示してみよう

ドリルAでは、echo と文字列の基本を確認する。画面に Hello, Nim と表示することが目的である。まだ複雑なことはしない。
必要なのは、「表示命令を使うこと」と「文字列をダブルクォーテーションで囲むこと」の2点だけである。

                    
____ "Hello, Nim"
                    
                

上のコードの空欄を埋めて、ファイル名は day1.nim として保存し、nim r day1.nim で実行してみよう。
うまくいけば、画面に Hello, Nim と表示されるはずである。

ヒントとして、表示に使う命令は echo である。今回の穴埋めは1か所だけであり、文字列部分はすでに完成している。
したがって、空欄には命令の名前が入る。print ではなく echo を使うのがNimの基本である。

課題2 改行

すでに動くコードを少し改造し、複数行の表示に慣れることを目的とする。
出発コードは1行しかないが、これを3行表示のプログラムに改造してほしい。表示内容は指定どおりである必要がある。

目標とする表示は以下の通り

                    
Hello, world
私はNimを学び始めた
今日はDay1である
                    
                

ヒントとして、1回の echo で1行表示できると考えるとわかりやすい。
したがって3行出したいなら、echo を3回書けばよい。行の順番も採点対象なので、上から順に目標出力と同じ並びにすること。
文字列は必ず " で囲むこと。日本語を表示すること自体は問題ないが、記号は半角を使うほうが安全である。

今日のまとめ

今日は、Nimが読みやすさと実用性を兼ね備えた言語であること、Nimのプログラムは .nim ファイルに書いて nim r day1.nim で実行すること、そして画面表示には echo を使うことを学んだ。
特に、1-1.nim のような危険なファイル名、echo Hello のような未宣言識別子を生みやすい書き方、そして文字列結合や型変換で後に詰まりやすい点について先回りして確認したのは重要である。
これらの基本をしっかり押さえておくと、今後の学習がスムーズになる。





2日目へ

トップへ戻る


お問い合わせ