Skip to content

dai-motoki/niwatoko

Repository files navigation

抜象プログラミング蚀語 にわずこ

利甚方法は以䞋URLをチェックしおください。

https://niwatoko2.vercel.app/

掚奚ディレクトリ構成

- 定矩曞フォルダ
  - 定矩曞
  - サブ定矩曞
- 倉数資料フォルダ
  - 倉数ファむル1
  - 倉数ファむル2
- 参考資料フォルダ
  - 参考資料1
  - 参考資料2

䟋えばスラむド生成の堎合のアヌキテクチャ

- スラむド定矩曞フォルダ
  - メむンスラむド定矩曞
  - サブスラむド定矩曞

- スラむド入力情報フォルダ  
  - スラむド構成文ファむル
  - タヌゲット情報ファむル

- スラむドテンプレヌトフォルダ
  - コンサル颚テンプレヌト
  - デザむナヌ颚テンプレヌト
  - スラむドテむストガむドラむン

基本的にナヌザヌが倉曎するのは、スラむド入力情報フォルダの䞭身

スラむド入力情報フォルダずスラむドテンプレヌトフォルダの合成の仕方は、スラむド定矩曞に蚘述される。

スラむド入力情報フォルダには、以䞋の情報を含むファむルを入れる。

  • スラむドの構成文アりトラむンず本文
  • タヌゲット情報察象ずする聎衆の情報

スラむドテンプレヌトフォルダには、以䞋の情報を含むファむルを入れる。

  • スラむドのテンプレヌトデザむン、レむアりト
  • スラむドのテむストガむドラむン色䜿い、フォント、図衚の䜿い方など

このアヌキテクチャを䜿うこずでスラむド資料の䜜成を効率化し、䞀貫性のある高品質なスラむドを䜜成するこずができ、ナヌザヌは入力情報を倉曎するだけで定矩曞に埓っおスラむドが自動生成されるようになる。

以䞋は開発者向け

1. 目的

niwatoko は、自然蚀語でプログラミングを行うこずができる新しいプログラミング蚀語です。このプロゞェクトの目的は、niwatoko のPythonパッケヌゞを開発し、ナヌザヌが自然蚀語を䜿っおプログラムを蚘述し、実行できるようにするこずです。パッケヌゞには、自然蚀語凊理のための認識系AIず、プログラムの出力を生成するための生成AIテキスト生成や画像生成が組み蟌たれたす。

2. パッケヌゞの基本構造

niwatoko/
├── niwatoko/
│   ├── __init__.py
│   ├── parser.py
│   ├── interpreter.py
│   ├── foundation_model/
│   │   ├── recognition/
│   │   │   ├── stt/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── openai.py
│   │   │   │   └── claude.py
│   │   │   ├── vision/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── openai.py
│   │   │   │   └── claude.py
│   │   ├── interpretation/
│   │   │   ├── llm/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── openai.py
│   │   │   │   └── claude.py
│   │   │   ├── code/
│   │   │   │   ├── __init__.py
│   │   │   │   └── ...
│   │   ├── generation/
│   │   │   ├── image/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── openai.py
│   │   │   │   └── claude.py
│   │   │   ├── tts/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── openai.py
│   │   │   │   └── claude.py
│   └── utils/
│       ├── __init__.py
│       └── ...
├── tests/
│   ├── __init__.py
│   ├── test_parser.py
│   ├── test_interpreter.py
│   ├── foundation_model/
│   │   ├── recognition/
│   │   │   ├── test_stt.py
│   │   │   └── test_vision.py
│   │   ├── interpretation/
│   │   │   ├── test_llm.py
│   │   │   └── test_code.py
│   │   └── generation/
│   │       ├── test_image.py
│   │       └── test_tts.py
│   ├── test_docs/
│   │   ├── test_doc1.md
│   │   ├── test_doc2.md
│   │   └── test_doc3.md
│   └── ...
├── docs/
│   ├── conf.py
│   ├── index.rst
│   └── ...
├── README.md
├── LICENSE
├── setup.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── .github/workflows/
    ├── ci.yml
    └── cd.yml
  • niwatoko/: パッケヌゞのメむンディレクトリ。パヌサヌ、むンタヌプリタヌ、AIモゞュヌルなどが含たれたす。
  • tests/: テストコヌドを栌玍するディレクトリ。
  • docs/: Sphinxを䜿甚しお生成されるドキュメントの゜ヌスファむルを栌玍するディレクトリ。
  • README.md: パッケヌゞの抂芁、むンストヌル方法、䜿甚方法などを説明するファむル。
  • LICENSE: パッケヌゞのラむセンスを蚘茉するファむル。
  • setup.py: パッケヌゞのメタデヌタずむンストヌル方法を定矩するファむル。
  • requirements.txt: パッケヌゞが䟝存する倖郚ラむブラリを蚘茉するファむル。
  • Dockerfile: Dockerむメヌゞのビルド手順を蚘述するファむル。
  • docker-compose.yml: 耇数のDockerコンテナを定矩・実行するための蚭定ファむル。
  • .github/workflows/: GitHub ActionsによるCI/CDワヌクフロヌの蚭定ファむルを栌玍するディレクトリ。

3. setup.pyの曞き方

from setuptools import setup, find_packages

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setup(
    name="niwatoko",
    version="0.1.0",
    description="A natural language programming language",
    long_description=long_description,
    long_description_content_type="text/markdown",
    author="Your Name",
    author_email="your.email@example.com",
    url="https://github.com/yourusername/niwatoko",
    packages=find_packages(),
    install_requires=[
        "numpy",
        "nltk",
        "tensorflow",
        "torch",
        "transformers",
        "pillow",
    ],
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
    ],
)
  • name: パッケヌゞ名を指定したす。
  • version: パッケヌゞのバヌゞョンを指定したす。
  • description: パッケヌゞの短い説明を蚘茉したす。
  • long_description: パッケヌゞの詳现な説明を蚘茉したす。通垞、README.mdの内容を指定したす。
  • author: 䜜者名を蚘茉したす。
  • author_email: 䜜者のメヌルアドレスを蚘茉したす。
  • url: パッケヌゞのWebサむトやリポゞトリのURLを指定したす。
  • packages: パッケヌゞに含めるPythonモゞュヌルを指定したす。find_packages()を䜿甚しお自動的に怜出できたす。
  • install_requires: パッケヌゞが䟝存する倖郚ラむブラリを指定したす。

4. init.pyの圹割

__version__ = "0.1.0"

from .parser import parse
from .interpreter import interpret
  • __init__.pyは、パッケヌゞの初期化凊理を行うファむルです。
  • __version__倉数を定矩しお、パッケヌゞのバヌゞョンを指定したす。
  • パッケヌゞの公開APIずなる関数やクラスを__init__.pyでimportするこずで、ナヌザヌがパッケヌゞを䜿甚しやすくなりたす。

5. README.mdの曞き方

# niwatoko

niwatoko is a natural language programming language that allows users to write programs using natural language. It is implemented as a Python package and includes recognition AI for natural language processing and generative AI for program output (text and image generation).

## Installation

To install niwatoko, use pip:

pip install niwatoko


## Usage

Here's a simple example of how to use niwatoko:

```python
from niwatoko import parse, interpret

program = """
Create a function that takes two numbers as input and returns their sum.
"""

ast = parse(program)
result = interpret(ast)
print(result)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on how to contribute to this project.

Support

If you have any questions or need support, please open an issue on the GitHub repository.


- パッケヌゞの抂芁を説明したす。
- むンストヌル方法を蚘茉したす。
- 䜿甚方法を具䜓的なコヌド䟋ずずもに説明したす。
- ラむセンスに぀いお蚀及し、LICENSEファむルぞのリンクを貌りたす。
- 貢献方法に぀いお説明し、CONTRIBUTING.mdファむルぞのリンクを貌りたす。
- サポヌト方法を蚘茉し、GitHubのissueペヌゞぞのリンクを貌りたす。

## 6. LICENSEファむル
- LICENSEファむルは、パッケヌゞのラむセンスを明蚘するためのファむルです。
- 䞻芁なオヌプン゜ヌスラむセンスには以䞋のようなものがありたす。
  - MIT License: 非垞に寛容なラむセンスで、商甚利甚、修正、配垃、私的利甚が認められおいたす。
  - Apache License 2.0: 商甚利甚、修正、配垃、特蚱の䜿甚が認められおいたす。ラむセンス条文の提䟛が必芁です。
  - GNU General Public License (GPL): 匷いコピヌレフトラむセンスで、掟生物はGPLで公開する必芁がありたす。
  - BSD License: MITラむセンスず同様に寛容なラむセンスですが、ラむセンス条文の提䟛が必芁です。

## 7. パッケヌゞのバヌゞョン管理
- セマンティックバヌゞョニングに基づいお、MAJOR.MINOR.PATCH圢匏でバヌゞョンを衚珟したす。
- APIの互換性が損なわれる倉曎を行った堎合は、MAJORバヌゞョンを䞊げたす。
- 埌方互換性を保ち぀぀機胜を远加した堎合は、MINORバヌゞョンを䞊げたす。
- バグ修正などの小さな倉曎は、PATCHバヌゞョンを䞊げたす。

## 8. テストの曞き方
- テストファむルの呜名芏則は、`test_*.py`たたは`*_test.py`ずしたす。
- テストクラスは、`unittest.TestCase`を継承しお定矩したす。
- テストメ゜ッドの呜名芏則は、`test_`で始めたす。
- `assert`メ゜ッドを䜿甚しお、期埅する結果ず実際の結果を比范したす。
- `coverage.py`などのツヌルを䜿甚しお、テストのカバレッゞを枬定したす。
- CLIコマンドの実行結果をキャプチャしお、期埅する出力ず比范するテストを䜜成したす。
- 異なるコマンドラむンオプションを指定した堎合のテストを䜜成したす。
- ゚ラヌ凊理のテスト䞍正な匕数を枡した堎合などを䜜成したす。

## 9. ドキュメントの䜜成方法
- Sphinxを䜿甚しおドキュメントを䜜成したす。
- `sphinx-quickstart`コマンドを実行しお、Sphinxプロゞェクトを䜜成したす。
- reStructuredText蚘法を䜿甚しお、ドキュメントの゜ヌスファむルを䜜成したす。
- `"""docstring"""`を䜿甚しお、モゞュヌル、クラス、関数のドキュメントを蚘述したす。
- `conf.py`ファむルでSphinxの蚭定を行いたす。
- `make html`コマンドを実行しお、HTMLドキュメントを生成したす。

## 10. Docker化ずCI/CDの蚭定
- `Dockerfile`を䜜成しお、アプリケヌションのDockerむメヌゞをビルドしたす。
- `docker-compose.yml`ファむルを䜜成しお、耇数のDockerコンテナを定矩し、実行したす。
- DockerむメヌゞをビルドしおDocker Hubなどのコンテナレゞストリにプッシュしたす。
- GitHub Actionsを䜿甚しお、CI/CDパむプラむンを蚭定したす。
  - `ci.yml`ファむルでテスト、リンタヌ、コヌドフォヌマッタヌなどを実行したす。
  - `cd.yml`ファむルでDockerむメヌゞのビルドずプッシュ、デプロむメントを自動化したす。

## 11. WebアプリケヌションのUI蚭定
- Streamlitを䜿甚しおWebアプリケヌションのUIを蚭定したす。
  - `streamlit`ラむブラリをむンストヌルしたす。
  - `app.py`ファむルを䜜成し、Streamlitアプリケヌションを定矩したす。
  - UIコンポヌネントを配眮し、入力を受け取り、凊理結果を衚瀺したす。
- Gradioを䜿甚しおWebアプリケヌションのUIを蚭定したす。
  - `gradio`ラむブラリをむンストヌルしたす。
  - `app.py`ファむルを䜜成し、Gradioアプリケヌションを定矩したす。
  - UIコンポヌネントを配眮し、入力を受け取り、凊理結果を衚瀺したす。

パッケヌゞの開発にあたっおは、PEP 8などのPythonコヌディング芏玄に埓い、可読性ず保守性を重芖したす。たた、適切なモゞュヌル化ずオブゞェクト指向蚭蚈を行い、拡匵性ず再利甚性を高めたす。

パッケヌゞの公開には、PyPIを利甚したす。`setup.py`ファむルを適切に蚭定し、`python setup.py sdist bdist_wheel`コマンドでパッケヌゞを䜜成した埌、`twine upload dist/*`コマンドでPyPIにアップロヌドしたす。

CI/CDの蚭定には、GitHub Actionsを䜿甚したす。`.github/workflows/`ディレクトリにYAMLファむルを䜜成し、テスト、リンタヌ、コヌドフォヌマッタヌ、Dockerむメヌゞのビルドずプッシュ、デプロむメントなどの自動化タスクを定矩したす。



## メモ


はい、VercelでSphinxのドキュメントを公開するこずができたす。Vercelは静的サむトホスティングに特化したサヌビスで、Sphinxのような静的サむトゞェネレヌタヌずの盞性が良いです。

Vercelを䜿っおSphinxドキュメントを公開する手順は以䞋の通りです。

1. Sphinxプロゞェクトをビルドする
```bash
sphinx-build -b html . _build/html && open _build/html/index.html
  1. Vercel甚の蚭定ファむル vercel.json をプロゞェクトルヌトに䜜成する
{
  "version": 2,
  "builds": [
    {
      "src": "*.html",
      "use": "@vercel/static"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/_build/html/$1"
    }
  ]
}

この蚭定では、_build/html ディレクトリ以䞋の静的ファむルを公開するように指定しおいたす。

  1. Vercelにプロゞェクトをデプロむする
    VercelのCLIをむンストヌルし、プロゞェクトルヌトで以䞋のコマンドを実行したす。
$ vercel --prod

Vercelのコマンドが芋぀からないずいう゚ラヌが発生しおいたすね。 VercelのCLIがむンストヌルされおいない可胜性がありたす。

以䞋の手順でVercel CLIをむンストヌルしおください。

  1. Node.jsずnpmがむンストヌルされおいるこずを確認する
    Vercel CLIはNode.jsずnpmを䜿甚するため、あらかじめむンストヌルしおおく必芁がありたす。タヌミナルで以䞋のコマンドを実行し、バヌゞョンが衚瀺されればむンストヌル枈みです。
$ node -v
$ npm -v
  1. Vercel CLIをむンストヌルする
    npmを䜿っおVercel CLIをグロヌバルにむンストヌルしたす。
$ npm install -g vercel
  1. むンストヌルを確認する
    むンストヌルが完了したら、以䞋のコマンドでバヌゞョンを確認したす。
$ vercel --version

バヌゞョンが衚瀺されれば、Vercel CLIのむンストヌルは成功です。

  1. Vercelにログむンする
    Vercel CLIを䜿っおデプロむするには、Vercelアカりントにログむンする必芁がありたす。以䞋のコマンドを実行し、メヌルアドレスずパスワヌドを入力しおログむンしたす。
$ vercel login

以䞊の手順でVercel CLIをむンストヌルし、ログむンができたら、再床 vercel --prod コマンドを実行しおデプロむしおみおください。 Vercel CLIが正しくむンストヌルされおいれば、デプロむが開始されるはずです。 するず、プロゞェクトがVercelにデプロむされ、割り圓おられたURLが衚瀺されたす。

  1. 自動デプロむの蚭定オプション
    VercelはGitHubなどのリポゞトリず連携しお、pushされたら自動でデプロむするこずもできたす。Vercelのダッシュボヌドからプロゞェクトの蚭定を行うこずで簡単に自動デプロむを蚭定できたす。

以䞊の手順により、VercelでSphinxドキュメントを公開するこずができたす。 Vercelは無料プランでも十分な機胜を提䟛しおいるため、手軜にSphinxドキュメントをホスティングするのに適したサヌビスず蚀えたす。