始めるガイド

1. インストール

macOS / Linux

GitHubからソースコードをクローンして、ビルドしてください。

$ git clone https://github.com/ReoShiozawa/hajimu.git
$ cd jp
$ make
$ make install

要件

  • GCC 9.0+ または Clang 10.0+
  • Make
  • 標準ライブラリ(libcurl, libpthread)

検証

インストール後、以下のコマンドで動作確認してください。

$ nihongo --version
nihongo version 0.1.0

2. はじめてのプログラム

テキストエディタで hello.jp というファイルを作成し、以下のコードを入力してください。

表示("こんにちは、世界!")

次に、コマンドラインで以下を実行します。

$ nihongo hello.jp
こんにちは、世界!

おめでとうございます!最初のプログラムが完成しました。

3. 基本概念

変数

変数は値を保存する箱のようなものです。変数キーワードで宣言します。

変数 名前 = "太郎"
変数 年齢 = 25
表示(名前)
表示(年齢)

データ型

主なデータ型は以下の通りです。

// 数値
変数 整数 = 42
変数 小数 = 3.14

// 文字列
変数 文字 = "こんにちは"

// 真偽値
変数 フラグ = 真

// 配列
変数 配列 = [1, 2, 3]

// 辞書
変数 辞書 = {"キー": "値"}

演算

算術演算、比較、論理演算が使用できます。

// 算術演算
変数 a = 10
変数 b = 3
表示(a + b)  // → 13
表示(a - b)  // → 7
表示(a * b)  // → 30
表示(a / b)  // → 3
表示(a % b)  // → 1

// 比較
表示(a > b)   // → 真
表示(a == 10) // → 真

// 論理演算
変数 x = 5
表示(x > 3 かつ x < 10)  // → 真
表示(x < 3 または x > 10) // → 偽

4. 制御構造

条件分岐

コードを条件に応じて分岐させることができます。

変数 点数 = 85

もし 点数 >= 90 なら
    表示("優秀です")
それ以外 もし 点数 >= 70 なら
    表示("合格です")
それ以外
    表示("不合格です")
終わり

ループ

繰り返し処理ができます。

// while ループ
変数 i = 0
繰り返す i < 5:
    表示(i)
    i = i + 1
終わり

// for ループ
繰り返す j から 0 まで 5:
    表示(j)
終わり

// 配列のループ
変数 配列 = ["りんご", "みかん", "ぶどう"]
各 果物 を 配列 の中:
    表示(果物)
終わり

5. 関数

コードを再利用可能な関数として定義できます。

// 関数定義
関数 挨拶(名前):
    表示("こんにちは、" + 名前)
終わり

// 関数呼び出し
挨拶("太郎")
挨拶("花子")

// 戻り値
関数 足す(a, b):
    戻す a + b
終わり

変数 結果 = 足す(3, 5)
表示(結果)  // → 8

6. 配列とリスト内包表記

配列操作

変数 配列 = [1, 2, 3]

// 要素アクセス
表示(配列[0])   // → 1
表示(配列[-1])  // → 3

// 要素追加
追加(配列, 4)

// 要素削除
削除(配列, 0)

// 配列長
表示(長さ(配列))

リスト内包表記

配列から新しい配列を簡潔に生成できます。

// 基本形式
変数 数字 = [1, 2, 3, 4, 5]
変数 倍 = [n * 2 を n から 数字]
表示(倍)  // → [2, 4, 6, 8, 10]

// 条件付き(フィルタリング)
変数 偶数 = [n を n から 数字 もし n % 2 == 0]
表示(偶数)  // → [2, 4]

// 複合
変数 処理 = [n * n + 1 を n から 数字 もし n > 2]
表示(処理)  // → [10, 17, 26]

7. クラスとオブジェクト

オブジェクト指向プログラミングでコードを整理できます。

クラス 猫:
    関数 初期化(名前, 年齢):
        自分.名前 = 名前
        自分.年齢 = 年齢
    終わり
    
    関数 鳴く():
        表示(自分.名前 + ": ニャー")
    終わり
    
    関数  自己紹介():
        戻す 自分.名前 + "は" + 文字列化(自分.年齢) + "歳です"
    終わり
終わり

// オブジェクト作成
変数 タマ = 新規 猫("タマ", 3)

// メソッド呼び出し
タマ.鳴く()
表示(タマ.自己紹介())

次のステップ