japy-lang


Namejapy-lang JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryJaPy is a Python dialect in Japanese.
upload_time2025-07-13 12:02:19
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords japanese katakana programming-language python transpiler
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # JaPy - 日本語カタカナPython方言

<div align="center">
<img src="https://raw.githubusercontent.com/satoi8080/JaPy/main/icon.svg" alt="JaPyロゴ - 青と赤を使用した「Ja」の文字デザイン。青い「J」の中にはPythonの蛇の目を表現した二つの白い円が配置され、愛と平和の融合を象徴している" width="64" height="64">

<sub><i>JaPyロゴ - 青と赤を使用した「Ja」の文字デザイン。<br>
青い「J」の中にはPythonの蛇の目を表現した二つの白い円が配置され、愛と平和の融合を象徴している</i></sub>
</div>


<div align="center">

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/japy-lang)
[![PyPI](https://img.shields.io/badge/PyPI-japy--lang-blue?logo=pypi)](https://pypi.org/project/japy-lang/)
![PyPI - Version](https://img.shields.io/pypi/v/japy-lang)
[![VS Code Extension](https://img.shields.io/badge/VS%20Code-Extension-blue?logo=visual-studio-code)](https://marketplace.visualstudio.com/items?itemName=Zhe.japy-language-support)

</div>


<div align="center">
<img src="https://raw.githubusercontent.com/satoi8080/JaPy/main/japy/japy.png" alt="JaPy - カタカナでプログラミング" width="400">
</div>

JaPyは日本語カタカナキーワードを使用するPythonの方言です。なぜか全部カタカナでプログラミングしたくなった時のためのツールです。Pythonの構文はそのままに、なんとなく日本語っぽくコーディングできます。

## 🌟 フィーチャー

- **フルカタカナキーワード**: `デフ`、`イフ`、`フォー`など、なんか日本語っぽいキーワード群
- **トランスパイラー**: JaPyコードを普通のPythonコードにコンバート
- **コマンドラインツール**: ファイル変換、実行、検証機能
- **VS Codeエクステンション**: シンタックスハイライトとオートコンプリートをサポート
- **ユニコード対応**: 日本語アイデンティファイアーの完全サポート

## 📦 インストレーション

### PyPIから(推奨)

```bash
# pipでインストール
pip install japy-lang

# または uvでインストール
uv add japy-lang
```

### ローカル開発版

```bash
# リポジトリをクローン
git clone https://github.com/satoi8080/JaPy.git
cd JaPy

# デペンデンシーをインストール
uv sync
```

### VS Codeエクステンション

#### VS Code Marketplaceから(推奨)

[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Zhe.japy-language-support)から直接インストールできます。

#### 手動ビルド・インストール

まずエクステンションをビルドしてからインストール:

```bash
cd vscode-extension

# デペンデンシーをインストール
npm install

# エクステンションをビルド
./build.sh
```

ビルド後、ジェネレートされた`.vsix`ファイルをインストール:

1. VS Codeで`Ctrl+Shift+P`(Mac: `Cmd+Shift+P`)
2. "Extensions: Install from VSIX..."をセレクト
3. `vscode-extension`フォルダ内の`japy-language-support-*.vsix`ファイルをセレクト

## 🚀 ユーセージ

### ベーシックなサンプル

```japy
# hello.japy
デフ 挨拶(名前):
    プリント(f"こんにちは、{名前}さん!")
    リターン トゥルー

クラス 人:
    デフ __init__(self, 名前, 年齢):
        self.名前 = 名前
        self.年齢 = 年齢

    デフ 自己紹介(self):
        プリント(f"私の名前は{self.名前}で、{self.年齢}歳です。")

# メイン実行
イフ __name__ == "__main__":
    人物 = 人("田中", 25)
    人物.自己紹介()
    挨拶(人物.名前)
```

### コマンドラインユーセージ

```bash
# JaPyファイルをトランスパイルしてエグゼキュート
uv run python -m japy --input=hello.japy --execute

# Pythonコードをアウトプットファイルにセーブ
uv run python -m japy --input=hello.japy --output=hello.py

# トランスパイルリザルトをディスプレイ(デフォルト)
uv run python -m japy --input=hello.japy --show

# トランスパイルリザルトを表示しない
uv run python -m japy --input=hello.japy --show=false

# ストリクトモードでトランスパイル(tokenizer使用)
uv run python -m japy --input=hello.japy --strict

# ストリクトモードでトランスパイルして実行
uv run python -m japy --input=hello.japy --strict --execute

# キーワードマッピングをバリデート
uv run python -m japy --validate

# デバッグモードで実行
uv run python -m japy --input=hello.japy --execute --debug
```

### コマンドラインオプション

利用可能なフラグ:

- `--input`: トランスパイルする.japyファイル(必須、--validateモード以外)
- `--output`: 出力Pythonファイル(指定しない場合は標準出力)
- `--execute`: トランスパイルされたPythonコードを実行
- `--show`: トランスパイルされたPythonコードを表示(デフォルト: true)
- `--strict`: ストリクトモード:tokenizerを使用してより正確なコード変換を行う
- `--validate`: キーワードと組み込み関数のマッピングを検証
- `--debug`: デバッグ出力を有効化

### 実用的なサンプル

```bash
# 1. JaPyファイルを作成して実行
echo 'プリント("ハロー、ワールド!")' > hello.japy
uv run python -m japy --input=hello.japy --execute

# 2. JaPyファイルをPythonファイルに変換
uv run python -m japy --input=hello.japy --output=hello.py

# 3. 変換結果を確認してから実行
uv run python -m japy --input=hello.japy --show --execute

# 4. システムの検証(開発者向け)
uv run python -m japy --validate
```

### プログラムからユーズ

```python
from japy import transpile_japy

japy_code = """
デフ テスト():
    プリント("こんにちは、JaPy!")
    リターン トゥルー
"""

python_code = transpile_japy(japy_code)
print(python_code)
exec(python_code)
```

### ストリクトモード(Strict Mode)

JaPyは2つの変換モードを提供しています:

#### 簡易モード(デフォルト)
- 文字列置換と正規表現(regex)を使用
- 高速でシンプルな変換
- 文字列やコメント内の日本語キーワードも置換される可能性があります

#### ストリクトモード(`--strict`)
- Pythonのtokenizerを使用
- より正確で安全な変換
- 文字列やコメント内の日本語キーワードを保護
- コードの構造を理解して適切に変換

**使用例:**

```japy
# test.japy
デフ テスト関数():
    メッセージ = "これはプリントという文字列です"  # このプリントは置換されません
    プリント(メッセージ)  # このプリントはprintに置換されます
```

**変換結果の違い:**

```bash
# 簡易モード(デフォルト)
uv run python -m japy --input=test.japy --show
# 結果: 文字列内の"プリント"も"print"に置換される

# 厳格モード
uv run python -m japy --input=test.japy --show --strict
# 結果: 文字列内の"プリント"は保護され、コード内の"プリント"のみ置換される
```

## 📚 ランゲージリファレンス

サポートされているキーワード、ビルトイン関数、ビルトイン型のコンプリートなリストは、[japy/ジャパイ.py](japy/ジャパイ.py)のソースコードをリファーしてください。

メジャーなキーワードサンプル:
- `デフ` → `def` (ファンクションデフィニション)
- `イフ` → `if` (コンディショナルブランチ)
- `フォー` → `for` (ループ)
- `プリント` → `print` (アウトプット)
- `レン` → `len` (レングス)

## 🛠️ デベロップメント

### テストエグゼキューション

```bash
# サンプルJaPyファイルをラン
uv run python -m japy --input=japy/ジャパイ.japy --execute

# ストリクトモードでテスト
uv run python -m japy --input=test_strict_mode.japy --show --strict

# キーワードマッピングをバリデート
uv run python -m japy --validate

# VS Code拡張機能のテストサンプルを実行
uv run python -m japy --input=vscode-extension/test-example.japy --execute

# デバッグモードでテスト
uv run python -m japy --input=japy/ジャパイ.japy --execute --debug
```

### VS Codeエクステンションのデベロップメント

ディテールは[vscode-extension/INSTALL.md](vscode-extension/INSTALL.md)をリファーしてください。

```bash
cd vscode-extension

# デペンデンシーをインストール
npm install

# エクステンションをビルド
./build.sh
```

## 📄 ライセンス

MIT License - ディテールは[LICENSE](LICENSE)ファイルをリファーしてください。

## 🔗 リンクス

- [GitHub リポジトリ](https://github.com/satoi8080/JaPy)
- [PyPI パッケージ](https://pypi.org/project/japy-lang/)
- [VS Codeエクステンションドキュメント](vscode-extension/README.md)
- [VS Codeエクステンションインストールガイド](vscode-extension/INSTALL.md)

---

**JaPy** - 日本語カタカナでプログラミングをエンジョイしよう!

~~なんでこんなものを作ったんだろう...~~

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "japy-lang",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "japanese, katakana, programming-language, python, transpiler",
    "author": null,
    "author_email": "Zhe <i@zzhe.dev>",
    "download_url": "https://files.pythonhosted.org/packages/22/ae/b9392db4f1433a47bc86d16a2344d5a4e57b8344d73ab2b82d678cf91fb8/japy_lang-0.2.0.tar.gz",
    "platform": null,
    "description": "# JaPy - \u65e5\u672c\u8a9e\u30ab\u30bf\u30ab\u30caPython\u65b9\u8a00\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/satoi8080/JaPy/main/icon.svg\" alt=\"JaPy\u30ed\u30b4 - \u9752\u3068\u8d64\u3092\u4f7f\u7528\u3057\u305f\u300cJa\u300d\u306e\u6587\u5b57\u30c7\u30b6\u30a4\u30f3\u3002\u9752\u3044\u300cJ\u300d\u306e\u4e2d\u306b\u306fPython\u306e\u86c7\u306e\u76ee\u3092\u8868\u73fe\u3057\u305f\u4e8c\u3064\u306e\u767d\u3044\u5186\u304c\u914d\u7f6e\u3055\u308c\u3001\u611b\u3068\u5e73\u548c\u306e\u878d\u5408\u3092\u8c61\u5fb4\u3057\u3066\u3044\u308b\" width=\"64\" height=\"64\">\n\n<sub><i>JaPy\u30ed\u30b4 - \u9752\u3068\u8d64\u3092\u4f7f\u7528\u3057\u305f\u300cJa\u300d\u306e\u6587\u5b57\u30c7\u30b6\u30a4\u30f3\u3002<br>\n\u9752\u3044\u300cJ\u300d\u306e\u4e2d\u306b\u306fPython\u306e\u86c7\u306e\u76ee\u3092\u8868\u73fe\u3057\u305f\u4e8c\u3064\u306e\u767d\u3044\u5186\u304c\u914d\u7f6e\u3055\u308c\u3001\u611b\u3068\u5e73\u548c\u306e\u878d\u5408\u3092\u8c61\u5fb4\u3057\u3066\u3044\u308b</i></sub>\n</div>\n\n\n<div align=\"center\">\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/japy-lang)\n[![PyPI](https://img.shields.io/badge/PyPI-japy--lang-blue?logo=pypi)](https://pypi.org/project/japy-lang/)\n![PyPI - Version](https://img.shields.io/pypi/v/japy-lang)\n[![VS Code Extension](https://img.shields.io/badge/VS%20Code-Extension-blue?logo=visual-studio-code)](https://marketplace.visualstudio.com/items?itemName=Zhe.japy-language-support)\n\n</div>\n\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/satoi8080/JaPy/main/japy/japy.png\" alt=\"JaPy - \u30ab\u30bf\u30ab\u30ca\u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\" width=\"400\">\n</div>\n\nJaPy\u306f\u65e5\u672c\u8a9e\u30ab\u30bf\u30ab\u30ca\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308bPython\u306e\u65b9\u8a00\u3067\u3059\u3002\u306a\u305c\u304b\u5168\u90e8\u30ab\u30bf\u30ab\u30ca\u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3057\u305f\u304f\u306a\u3063\u305f\u6642\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002Python\u306e\u69cb\u6587\u306f\u305d\u306e\u307e\u307e\u306b\u3001\u306a\u3093\u3068\u306a\u304f\u65e5\u672c\u8a9e\u3063\u307d\u304f\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\n\n## \ud83c\udf1f \u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\n\n- **\u30d5\u30eb\u30ab\u30bf\u30ab\u30ca\u30ad\u30fc\u30ef\u30fc\u30c9**: `\u30c7\u30d5`\u3001`\u30a4\u30d5`\u3001`\u30d5\u30a9\u30fc`\u306a\u3069\u3001\u306a\u3093\u304b\u65e5\u672c\u8a9e\u3063\u307d\u3044\u30ad\u30fc\u30ef\u30fc\u30c9\u7fa4\n- **\u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30e9\u30fc**: JaPy\u30b3\u30fc\u30c9\u3092\u666e\u901a\u306ePython\u30b3\u30fc\u30c9\u306b\u30b3\u30f3\u30d0\u30fc\u30c8\n- **\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb**: \u30d5\u30a1\u30a4\u30eb\u5909\u63db\u3001\u5b9f\u884c\u3001\u691c\u8a3c\u6a5f\u80fd\n- **VS Code\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3**: \u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8\u3068\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\n- **\u30e6\u30cb\u30b3\u30fc\u30c9\u5bfe\u5fdc**: \u65e5\u672c\u8a9e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30d5\u30a1\u30a4\u30a2\u30fc\u306e\u5b8c\u5168\u30b5\u30dd\u30fc\u30c8\n\n## \ud83d\udce6 \u30a4\u30f3\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3\n\n### PyPI\u304b\u3089\uff08\u63a8\u5968\uff09\n\n```bash\n# pip\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npip install japy-lang\n\n# \u307e\u305f\u306f uv\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nuv add japy-lang\n```\n\n### \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u7248\n\n```bash\n# \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\ngit clone https://github.com/satoi8080/JaPy.git\ncd JaPy\n\n# \u30c7\u30da\u30f3\u30c7\u30f3\u30b7\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nuv sync\n```\n\n### VS Code\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\n\n#### VS Code Marketplace\u304b\u3089\uff08\u63a8\u5968\uff09\n\n[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Zhe.japy-language-support)\u304b\u3089\u76f4\u63a5\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\n\n#### \u624b\u52d5\u30d3\u30eb\u30c9\u30fb\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n\u307e\u305a\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff1a\n\n```bash\ncd vscode-extension\n\n# \u30c7\u30da\u30f3\u30c7\u30f3\u30b7\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nnpm install\n\n# \u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\n./build.sh\n```\n\n\u30d3\u30eb\u30c9\u5f8c\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30c8\u3055\u308c\u305f`.vsix`\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff1a\n\n1. VS Code\u3067`Ctrl+Shift+P`\uff08Mac: `Cmd+Shift+P`\uff09\n2. \"Extensions: Install from VSIX...\"\u3092\u30bb\u30ec\u30af\u30c8\n3. `vscode-extension`\u30d5\u30a9\u30eb\u30c0\u5185\u306e`japy-language-support-*.vsix`\u30d5\u30a1\u30a4\u30eb\u3092\u30bb\u30ec\u30af\u30c8\n\n## \ud83d\ude80 \u30e6\u30fc\u30bb\u30fc\u30b8\n\n### \u30d9\u30fc\u30b7\u30c3\u30af\u306a\u30b5\u30f3\u30d7\u30eb\n\n```japy\n# hello.japy\n\u30c7\u30d5 \u6328\u62f6(\u540d\u524d):\n    \u30d7\u30ea\u30f3\u30c8(f\"\u3053\u3093\u306b\u3061\u306f\u3001{\u540d\u524d}\u3055\u3093\uff01\")\n    \u30ea\u30bf\u30fc\u30f3 \u30c8\u30a5\u30eb\u30fc\n\n\u30af\u30e9\u30b9 \u4eba:\n    \u30c7\u30d5 __init__(self, \u540d\u524d, \u5e74\u9f62):\n        self.\u540d\u524d = \u540d\u524d\n        self.\u5e74\u9f62 = \u5e74\u9f62\n\n    \u30c7\u30d5 \u81ea\u5df1\u7d39\u4ecb(self):\n        \u30d7\u30ea\u30f3\u30c8(f\"\u79c1\u306e\u540d\u524d\u306f{self.\u540d\u524d}\u3067\u3001{self.\u5e74\u9f62}\u6b73\u3067\u3059\u3002\")\n\n# \u30e1\u30a4\u30f3\u5b9f\u884c\n\u30a4\u30d5 __name__ == \"__main__\":\n    \u4eba\u7269 = \u4eba(\"\u7530\u4e2d\", 25)\n    \u4eba\u7269.\u81ea\u5df1\u7d39\u4ecb()\n    \u6328\u62f6(\u4eba\u7269.\u540d\u524d)\n```\n\n### \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e6\u30fc\u30bb\u30fc\u30b8\n\n```bash\n# JaPy\u30d5\u30a1\u30a4\u30eb\u3092\u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u3057\u3066\u30a8\u30b0\u30bc\u30ad\u30e5\u30fc\u30c8\nuv run python -m japy --input=hello.japy --execute\n\n# Python\u30b3\u30fc\u30c9\u3092\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306b\u30bb\u30fc\u30d6\nuv run python -m japy --input=hello.japy --output=hello.py\n\n# \u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u30ea\u30b6\u30eb\u30c8\u3092\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\nuv run python -m japy --input=hello.japy --show\n\n# \u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u30ea\u30b6\u30eb\u30c8\u3092\u8868\u793a\u3057\u306a\u3044\nuv run python -m japy --input=hello.japy --show=false\n\n# \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\u3067\u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\uff08tokenizer\u4f7f\u7528\uff09\nuv run python -m japy --input=hello.japy --strict\n\n# \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\u3067\u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\nuv run python -m japy --input=hello.japy --strict --execute\n\n# \u30ad\u30fc\u30ef\u30fc\u30c9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u30d0\u30ea\u30c7\u30fc\u30c8\nuv run python -m japy --validate\n\n# \u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u3067\u5b9f\u884c\nuv run python -m japy --input=hello.japy --execute --debug\n```\n\n### \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\n\n\u5229\u7528\u53ef\u80fd\u306a\u30d5\u30e9\u30b0\uff1a\n\n- `--input`: \u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u3059\u308b.japy\u30d5\u30a1\u30a4\u30eb\uff08\u5fc5\u9808\u3001--validate\u30e2\u30fc\u30c9\u4ee5\u5916\uff09\n- `--output`: \u51fa\u529bPython\u30d5\u30a1\u30a4\u30eb\uff08\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306f\u6a19\u6e96\u51fa\u529b\uff09\n- `--execute`: \u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u3055\u308c\u305fPython\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\n- `--show`: \u30c8\u30e9\u30f3\u30b9\u30d1\u30a4\u30eb\u3055\u308c\u305fPython\u30b3\u30fc\u30c9\u3092\u8868\u793a\uff08\u30c7\u30d5\u30a9\u30eb\u30c8: true\uff09\n- `--strict`: \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\uff1atokenizer\u3092\u4f7f\u7528\u3057\u3066\u3088\u308a\u6b63\u78ba\u306a\u30b3\u30fc\u30c9\u5909\u63db\u3092\u884c\u3046\n- `--validate`: \u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u691c\u8a3c\n- `--debug`: \u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u6709\u52b9\u5316\n\n### \u5b9f\u7528\u7684\u306a\u30b5\u30f3\u30d7\u30eb\n\n```bash\n# 1. JaPy\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u5b9f\u884c\necho '\u30d7\u30ea\u30f3\u30c8(\"\u30cf\u30ed\u30fc\u3001\u30ef\u30fc\u30eb\u30c9\uff01\")' > hello.japy\nuv run python -m japy --input=hello.japy --execute\n\n# 2. JaPy\u30d5\u30a1\u30a4\u30eb\u3092Python\u30d5\u30a1\u30a4\u30eb\u306b\u5909\u63db\nuv run python -m japy --input=hello.japy --output=hello.py\n\n# 3. \u5909\u63db\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u5b9f\u884c\nuv run python -m japy --input=hello.japy --show --execute\n\n# 4. \u30b7\u30b9\u30c6\u30e0\u306e\u691c\u8a3c\uff08\u958b\u767a\u8005\u5411\u3051\uff09\nuv run python -m japy --validate\n```\n\n### \u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u30e6\u30fc\u30ba\n\n```python\nfrom japy import transpile_japy\n\njapy_code = \"\"\"\n\u30c7\u30d5 \u30c6\u30b9\u30c8():\n    \u30d7\u30ea\u30f3\u30c8(\"\u3053\u3093\u306b\u3061\u306f\u3001JaPy\uff01\")\n    \u30ea\u30bf\u30fc\u30f3 \u30c8\u30a5\u30eb\u30fc\n\"\"\"\n\npython_code = transpile_japy(japy_code)\nprint(python_code)\nexec(python_code)\n```\n\n### \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\uff08Strict Mode\uff09\n\nJaPy\u306f2\u3064\u306e\u5909\u63db\u30e2\u30fc\u30c9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\uff1a\n\n#### \u7c21\u6613\u30e2\u30fc\u30c9\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\n- \u6587\u5b57\u5217\u7f6e\u63db\u3068\u6b63\u898f\u8868\u73fe\uff08regex\uff09\u3092\u4f7f\u7528\n- \u9ad8\u901f\u3067\u30b7\u30f3\u30d7\u30eb\u306a\u5909\u63db\n- \u6587\u5b57\u5217\u3084\u30b3\u30e1\u30f3\u30c8\u5185\u306e\u65e5\u672c\u8a9e\u30ad\u30fc\u30ef\u30fc\u30c9\u3082\u7f6e\u63db\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\n\n#### \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\uff08`--strict`\uff09\n- Python\u306etokenizer\u3092\u4f7f\u7528\n- \u3088\u308a\u6b63\u78ba\u3067\u5b89\u5168\u306a\u5909\u63db\n- \u6587\u5b57\u5217\u3084\u30b3\u30e1\u30f3\u30c8\u5185\u306e\u65e5\u672c\u8a9e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4fdd\u8b77\n- \u30b3\u30fc\u30c9\u306e\u69cb\u9020\u3092\u7406\u89e3\u3057\u3066\u9069\u5207\u306b\u5909\u63db\n\n**\u4f7f\u7528\u4f8b\uff1a**\n\n```japy\n# test.japy\n\u30c7\u30d5 \u30c6\u30b9\u30c8\u95a2\u6570():\n    \u30e1\u30c3\u30bb\u30fc\u30b8 = \"\u3053\u308c\u306f\u30d7\u30ea\u30f3\u30c8\u3068\u3044\u3046\u6587\u5b57\u5217\u3067\u3059\"  # \u3053\u306e\u30d7\u30ea\u30f3\u30c8\u306f\u7f6e\u63db\u3055\u308c\u307e\u305b\u3093\n    \u30d7\u30ea\u30f3\u30c8(\u30e1\u30c3\u30bb\u30fc\u30b8)  # \u3053\u306e\u30d7\u30ea\u30f3\u30c8\u306fprint\u306b\u7f6e\u63db\u3055\u308c\u307e\u3059\n```\n\n**\u5909\u63db\u7d50\u679c\u306e\u9055\u3044\uff1a**\n\n```bash\n# \u7c21\u6613\u30e2\u30fc\u30c9\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\nuv run python -m japy --input=test.japy --show\n# \u7d50\u679c: \u6587\u5b57\u5217\u5185\u306e\"\u30d7\u30ea\u30f3\u30c8\"\u3082\"print\"\u306b\u7f6e\u63db\u3055\u308c\u308b\n\n# \u53b3\u683c\u30e2\u30fc\u30c9\nuv run python -m japy --input=test.japy --show --strict\n# \u7d50\u679c: \u6587\u5b57\u5217\u5185\u306e\"\u30d7\u30ea\u30f3\u30c8\"\u306f\u4fdd\u8b77\u3055\u308c\u3001\u30b3\u30fc\u30c9\u5185\u306e\"\u30d7\u30ea\u30f3\u30c8\"\u306e\u307f\u7f6e\u63db\u3055\u308c\u308b\n```\n\n## \ud83d\udcda \u30e9\u30f3\u30b2\u30fc\u30b8\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\n\n\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u3001\u30d3\u30eb\u30c8\u30a4\u30f3\u95a2\u6570\u3001\u30d3\u30eb\u30c8\u30a4\u30f3\u578b\u306e\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u306a\u30ea\u30b9\u30c8\u306f\u3001[japy/\u30b8\u30e3\u30d1\u30a4.py](japy/\u30b8\u30e3\u30d1\u30a4.py)\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u30ea\u30d5\u30a1\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n\u30e1\u30b8\u30e3\u30fc\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\uff1a\n- `\u30c7\u30d5` \u2192 `def` (\u30d5\u30a1\u30f3\u30af\u30b7\u30e7\u30f3\u30c7\u30d5\u30a3\u30cb\u30b7\u30e7\u30f3)\n- `\u30a4\u30d5` \u2192 `if` (\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30ca\u30eb\u30d6\u30e9\u30f3\u30c1)\n- `\u30d5\u30a9\u30fc` \u2192 `for` (\u30eb\u30fc\u30d7)\n- `\u30d7\u30ea\u30f3\u30c8` \u2192 `print` (\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8)\n- `\u30ec\u30f3` \u2192 `len` (\u30ec\u30f3\u30b0\u30b9)\n\n## \ud83d\udee0\ufe0f \u30c7\u30d9\u30ed\u30c3\u30d7\u30e1\u30f3\u30c8\n\n### \u30c6\u30b9\u30c8\u30a8\u30b0\u30bc\u30ad\u30e5\u30fc\u30b7\u30e7\u30f3\n\n```bash\n# \u30b5\u30f3\u30d7\u30ebJaPy\u30d5\u30a1\u30a4\u30eb\u3092\u30e9\u30f3\nuv run python -m japy --input=japy/\u30b8\u30e3\u30d1\u30a4.japy --execute\n\n# \u30b9\u30c8\u30ea\u30af\u30c8\u30e2\u30fc\u30c9\u3067\u30c6\u30b9\u30c8\nuv run python -m japy --input=test_strict_mode.japy --show --strict\n\n# \u30ad\u30fc\u30ef\u30fc\u30c9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u30d0\u30ea\u30c7\u30fc\u30c8\nuv run python -m japy --validate\n\n# VS Code\u62e1\u5f35\u6a5f\u80fd\u306e\u30c6\u30b9\u30c8\u30b5\u30f3\u30d7\u30eb\u3092\u5b9f\u884c\nuv run python -m japy --input=vscode-extension/test-example.japy --execute\n\n# \u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u3067\u30c6\u30b9\u30c8\nuv run python -m japy --input=japy/\u30b8\u30e3\u30d1\u30a4.japy --execute --debug\n```\n\n### VS Code\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u306e\u30c7\u30d9\u30ed\u30c3\u30d7\u30e1\u30f3\u30c8\n\n\u30c7\u30a3\u30c6\u30fc\u30eb\u306f[vscode-extension/INSTALL.md](vscode-extension/INSTALL.md)\u3092\u30ea\u30d5\u30a1\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n```bash\ncd vscode-extension\n\n# \u30c7\u30da\u30f3\u30c7\u30f3\u30b7\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nnpm install\n\n# \u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\n./build.sh\n```\n\n## \ud83d\udcc4 \u30e9\u30a4\u30bb\u30f3\u30b9\n\nMIT License - \u30c7\u30a3\u30c6\u30fc\u30eb\u306f[LICENSE](LICENSE)\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30d5\u30a1\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n## \ud83d\udd17 \u30ea\u30f3\u30af\u30b9\n\n- [GitHub \u30ea\u30dd\u30b8\u30c8\u30ea](https://github.com/satoi8080/JaPy)\n- [PyPI \u30d1\u30c3\u30b1\u30fc\u30b8](https://pypi.org/project/japy-lang/)\n- [VS Code\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](vscode-extension/README.md)\n- [VS Code\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30ac\u30a4\u30c9](vscode-extension/INSTALL.md)\n\n---\n\n**JaPy** - \u65e5\u672c\u8a9e\u30ab\u30bf\u30ab\u30ca\u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u30a8\u30f3\u30b8\u30e7\u30a4\u3057\u3088\u3046\uff01\n\n~~\u306a\u3093\u3067\u3053\u3093\u306a\u3082\u306e\u3092\u4f5c\u3063\u305f\u3093\u3060\u308d\u3046...~~\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "JaPy is a Python dialect in Japanese.",
    "version": "0.2.0",
    "project_urls": {
        "Homepage": "https://github.com/satoi8080/JaPy",
        "Issues": "https://github.com/satoi8080/JaPy/issues",
        "Repository": "https://github.com/satoi8080/JaPy"
    },
    "split_keywords": [
        "japanese",
        " katakana",
        " programming-language",
        " python",
        " transpiler"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b31ce32faedc85e555bc3f4b8da7a305de53cbcc1c776a28ee76d3fd89ed5c8",
                "md5": "caf8a02895cd4113a653af655c0389f6",
                "sha256": "f4bc1976b427c4f11374ea8b960b9b309a45e40ec25e693c120275b8055ef50a"
            },
            "downloads": -1,
            "filename": "japy_lang-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "caf8a02895cd4113a653af655c0389f6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 288829,
            "upload_time": "2025-07-13T12:02:18",
            "upload_time_iso_8601": "2025-07-13T12:02:18.311553Z",
            "url": "https://files.pythonhosted.org/packages/1b/31/ce32faedc85e555bc3f4b8da7a305de53cbcc1c776a28ee76d3fd89ed5c8/japy_lang-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "22aeb9392db4f1433a47bc86d16a2344d5a4e57b8344d73ab2b82d678cf91fb8",
                "md5": "eeb96db27a470672126074b2f7714280",
                "sha256": "376dd7abb9a1407a35bca9c334e6912bf0c6d5b39ead00d5afb5a3f771c4e83d"
            },
            "downloads": -1,
            "filename": "japy_lang-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "eeb96db27a470672126074b2f7714280",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 318073,
            "upload_time": "2025-07-13T12:02:19",
            "upload_time_iso_8601": "2025-07-13T12:02:19.636416Z",
            "url": "https://files.pythonhosted.org/packages/22/ae/b9392db4f1433a47bc86d16a2344d5a4e57b8344d73ab2b82d678cf91fb8/japy_lang-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-13 12:02:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "satoi8080",
    "github_project": "JaPy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "japy-lang"
}
        
Elapsed time: 0.78834s