CODE Polyglot / 入門 / 第1回

Hello World — 名前を受け取ってあいさつする

プログラムに名前を渡すと「こんにちは、◯◯さん!」と表示します。名前を渡さなければ「ゲストさん」にします。どの言語でも最初に書く、いちばん小さなプログラムです。

画面にこう出れば正解

どの言語で書いても、同じ入力なら画面に出る文字は1文字も違わない、というのが正解の決め方です(例は Python で動かしたときのコマンドです)。

名前を渡す

$ python3 hello.py 太郎
こんにちは、太郎さん!

名前を渡さない

$ python3 hello.py
こんにちは、ゲストさん!

英字の名前

$ python3 hello.py Alice
こんにちは、Aliceさん!

めずらしい漢字(𠮷)

$ python3 hello.py 𠮷田
こんにちは、𠮷田さん!

10言語のプログラム

どれもそのまま保存して動かせます。毎朝、上の正解の例をすべて実際に動かして確かめています。

hello.php8.4.26 で 4 / 4 件の出力が正解と一致

<?php
// 名前を受け取ってあいさつする
$name = $argv[1] ?? 'ゲスト';
echo "こんにちは、{$name}さん!\n";

動かし方(ファイルを保存したフォルダで) ・ PHP を入れる

$ php hello.php 太郎

この回でやること

  • 画面に文字を出す(print・echo・console.log など)
  • プログラムを動かすときに、外から値を渡す(コマンドライン引数)
  • 値が渡されなかったときに、代わりの値を使う

解説

画面に文字を出す

どの言語にも、文字を画面に出す命令があります。Python は print、JavaScript は console.log、PHP は echo、Java は System.out.println です。名前は違っても、やっていることは同じです。

外から名前を受け取る

プログラムを動かすとき、ファイル名の後ろに書いた言葉は「コマンドライン引数」として、プログラムに渡されます。python3 hello.py 太郎 なら、「太郎」が渡されます。

受け取り方は言語ごとに違います。Python は sys.argv、JavaScript(Node.js)は process.argv、Go は os.Args という並び(配列)に入っています。並びの最初(0番目)にはプログラム自身の名前などが入っているので、渡した名前は1番目(JavaScript は2番目)です。Java・C# は args、Ruby は ARGV で、こちらは0番目から渡した値が入っています。

名前が無いときは「ゲスト」にする

名前を渡さずに動かすと、並びの1番目はありません。そのまま読むと、言語によってはエラーで止まります。そこで「並びの長さが1より大きいか」を確かめたり、「無ければこの値」と書ける書き方(??・||・unwrap_or_else など)を使ったりして、「ゲスト」を入れています。

つまずきやすいところ

  • 日本語が文字化けする: Windows のコマンドプロンプトで日本語が化けるときは、Windows Terminal を使うか、chcp 65001 と入力してから動かしてみてください
  • PHP で変数のすぐ後ろに日本語を書く: "こんにちは、$nameさん!" と書くと、PHP は $nameさん までを変数の名前だと思います。{$name} のように {} で囲みます

練習

  1. 「こんにちは」を「おはようございます」に変えてみましょう
  2. 名前を2つ受け取って「こんにちは、太郎さんと花子さん!」と出してみましょう