よくある質問 (FAQ)

基本的な質問

Q: なぜはじむを作ったのですか?

A: プログラミング教育の障壁を下げ、日本語話者がより直感的にプログラミングを学べるようにするためです。英語の予約語やシンタックスに慣れる前に、プログラミングの本質的な概念(変数、関数、ループなど)を理解できます。

Q: この言語の特徴は何ですか?

A:

  • 完全日本語の予約語とキーワード
  • シンプルで直感的な構文
  • 143個の豊富な組み込み関数
  • オブジェクト指向プログラミング対応
  • リスト内包表記、ラムダ式などのモダンな機能
  • 非同期処理(async/await)対応
  • HTTP通信ライブラリ内蔵
  • C言語で実装された高速なインタープリタ

Q: 実用的なプログラムを書けますか?

A: はい。Webスクレイピング、ファイル処理、データ分析、API開発など、実用的なプログラムが書けます。標準ライブラリには文字列処理、配列操作、辞書操作、ファイルI/O、HTTP通信などの機能が含まれています。

インストールと環境

Q: どのOSで動作しますか?

A: macOS、Linux、Windows(WSL/MSYS2経由)で動作します。C言語で実装されているため、GCCやClangがあればほとんどのUnix系環境で動作します。

Q: インストール方法は?

A:

# GitHubからクローン
git clone https://github.com/ReoShiozawa/hajimu.git
cd jp

# ビルド
make

# インストール(オプション)
sudo make install

# 実行
./nihongo examples/hello.jp

Q: 必要なシステム要件は?

A:

  • コンパイラ: GCC 9.0以上またはClang 10.0以上
  • メモリ: 最低256MB(推奨512MB以上)
  • ディスク: インストール時約50MB
  • OS: macOS 10.13+, Ubuntu 18.04+, または互換システム

言語仕様

Q: 変数の型は静的ですか、動的ですか?

A: 動的型付けです。変数の型は実行時に決定され、同じ変数に異なる型の値を代入できます。型推論により、明示的な型宣言は不要です。

変数 x = 10      // 整数
x = "文字列"     // 文字列に変更可能
x = [1, 2, 3]   // 配列に変更可能

Q: 関数は第一級オブジェクトですか?

A: はい。関数を変数に代入したり、引数として渡したり、戻り値として返したりできます。

関数 適用(関数, 値):
    戻す 関数(値)
終わり

変数 二倍 = ラムダ(x): 戻す x * 2 終わり
表示(適用(二倍, 5))  // → 10

Q: オブジェクト指向プログラミングはできますか?

A: はい。クラス、継承、メソッド、コンストラクタなどが使えます。

クラス 動物:
    初期化(名前):
        自分.名前 = 名前
    終わり
    
    挨拶():
        表示("こんにちは、" + 自分.名前 + "です")
    終わり
終わり

変数 犬 = 新しい 動物("ポチ")
犬.挨拶()  // → こんにちは、ポチです

Q: 非同期処理はできますか?

A: はい。非同期キーワードと待つキーワードで非同期処理が書けます。

非同期 関数 データ取得(URL):
    変数 応答 = 待つ HTTP取得(URL)
    戻す 応答.本文
終わり

Q: エラーハンドリングはどうなっていますか?

A: try-catch-finally構文(試す-捕捉-最後に)を使います。

試す
    変数 結果 = 10 / 0
捕捉 エラー:
    表示("エラー: " + エラー)
最後に
    表示("処理完了")
終わり

開発とデバッグ

Q: IDEやエディタのサポートはありますか?

A: 現在、専用のIDEプラグインは開発中ですが、シンタックスハイライトは任意のテキストエディタで設定できます。VS Code、Vim、Emacsなどで.jpファイルの認識設定が可能です。

Q: デバッグ方法は?

A: 以下の方法があります:

  • 表示()関数でデバッグ出力
  • 型()関数で変数の型を確認
  • エラーメッセージの行番号で問題箇所を特定
  • 試す-捕捉ブロックで例外をキャッチ
変数 値 = "テスト"
表示("値 =", 値)
表示("型 =", 型(値))  // → 型 = 文字列

Q: パフォーマンスはどのくらいですか?

A: C言語で実装されたインタープリタで、Pythonと同等かそれ以上の速度です。大規模データ処理やパフォーマンスクリティカルな処理にも対応できます。

Q: テストフレームワークはありますか?

A: 現在は組み込みのテストフレームワークはありませんが、アサーション関数を自作してテストを書けます。将来的にはテストフレームワークの追加を予定しています。

関数 アサート(条件, メッセージ):
    もし 条件 でなければ
        表示("テスト失敗:", メッセージ)
        戻す 偽
    終わり
    戻す 真
終わり

アサート(足す(2, 3) == 5, "足し算のテスト")

ライブラリとエコシステム

Q: 標準ライブラリには何が含まれていますか?

A: 143個の組み込み関数があり、以下のカテゴリをカバーしています:

  • 基本I/O: 表示(), 入力(), 読む(), 書く()
  • 文字列: 長さ(), 分割(), 結合(), 置換(), 検索()
  • 配列: 追加(), 削除(), 並べ替え(), 逆順(), マップ(), フィルタ()
  • 辞書: キー一覧(), 値一覧(), 存在確認()
  • 数学: 合計(), 平均(), 最大(), 最小(), 絶対値(), 累乗()
  • ファイル: ファイル読込(), ファイル書込(), ファイル存在()
  • HTTP: HTTP取得(), HTTP投稿(), JSON解析()
  • 型変換: 整数化(), 小数化(), 文字列化()
  • その他: 範囲(), 列挙(), 圧縮(), スリープ()

完全なリストはリファレンスページをご覧ください。

Q: 外部ライブラリやパッケージマネージャはありますか?

A: 現在はモジュールシステムがあり、取り込むキーワードで他のファイルを読み込めます。パッケージマネージャは将来的な拡張として検討中です。

// lib/math_utils.jp を読み込む
取り込む "lib/math_utils.jp"

// math_utils.jp 内の関数を使用
変数 結果 = 計算(10, 20)

Q: C言語やPythonのライブラリと連携できますか?

A: 現在はネイティブな連携機能はありませんが、HTTPエンドポイント経由での連携や、ファイルI/Oを通じた連携が可能です。将来的にはFFI(Foreign Function Interface)の追加を検討しています。

コミュニティと開発

Q: どうやって貢献できますか?

A: 以下の方法で貢献できます:

  • コード: GitHubでプルリクエストを送る
  • バグ報告: GitHubのIssuesで報告
  • ドキュメント: ドキュメントの改善提案
  • 例: サンプルコードや実用例の追加
  • 普及: SNSやブログで紹介

GitHubリポジトリ: https://github.com/ReoShiozawa/hajimu

Q: ライセンスは何ですか?

A: MITライセンスです。商用・非商用問わず自由に使用、改変、配布できます。

Q: ロードマップはどこで見られますか?

A: GitHubリポジトリのROADMAP.mdで開発計画を公開しています。現在、44個の計画項目が完了し、さらなる機能追加を検討中です。

Q: サポートやヘルプはどこで受けられますか?

A:

  • ドキュメント: このサイトのガイドリファレンス
  • GitHub Issues: 技術的な質問やバグ報告
  • サンプルコード: ページとGitHubのexamplesディレクトリ

今後の展望

Q: 今後追加予定の機能は?

A: 以下を検討しています:

  • パッケージマネージャ(標準ライブラリの拡張)
  • IDEプラグイン(VS Code、IntelliJ)
  • デバッガとプロファイラ
  • テストフレームワーク
  • 並列処理のサポート強化
  • ネイティブバイナリコンパイラ(JIT/AOT)
  • Webフレームワーク
  • データベースライブラリ
  • GUIライブラリ

Q: この言語は実験的なものですか、それとも長期的にサポートされますか?

A: 真剣な長期プロジェクトです。現在156個のテストケースがあり、すべてパスしています。実用的なプログラムを書くための機能は既に揃っており、継続的に改善・拡張していきます。

Q: 他の日本語プログラミング言語との違いは?

A: はじむは以下の点で特徴的です:

  • C言語による高速実装
  • モダンな言語機能(ラムダ、リスト内包表記、async/await)
  • 143個の豊富な組み込み関数
  • 実用的なHTTP通信ライブラリ
  • オープンソースで活発に開発中
  • 教育だけでなく実用目的でも使える設計

トラブルシューティング

Q: ビルドエラーが出ます

A: 以下を確認してください:

  • GCC/Clangのバージョン(GCC 9.0+, Clang 10.0+が必要)
  • make clean && makeでクリーンビルド
  • 必要なヘッダファイルがインストールされているか

Q: 実行時にエラーが出ます

A: エラーメッセージの行番号を確認し、以下をチェック:

  • 変数が初期化されているか
  • 関数名や変数名のスペルミスがないか
  • 括弧やブロックの終わりが正しく閉じられているか
  • 型が正しいか(例:文字列を数値で割ろうとしていないか)

Q: 日本語入力がうまくいきません

A: ファイルがUTF-8エンコーディングで保存されているか確認してください。ほとんどのモダンなエディタではデフォルトでUTF-8ですが、古いエディタでは明示的に設定が必要な場合があります。

まだ質問がありますか?

GitHubのIssuesで質問したり、ドキュメントを詳しく読んだりできます。