Skip to content

Commit

Permalink
Merge pull request #550 from K-dash/translate-getting-started-en-to-ja
Browse files Browse the repository at this point in the history
Translate getting-started.md to Japanese
  • Loading branch information
yukinarit authored Jun 17, 2024
2 parents 481e81e + 8a6fae7 commit 8ec44de
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 2 deletions.
6 changes: 4 additions & 2 deletions docs/en/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ If you're using poetry, run this command.
poetry add pyserde
```

Additional data formats besides JSON and Pickle need additional dependencies installed. Install `msgpack`, `toml`, or `yaml` extras to work with the appropriate data formats; you can skip formats that you don't plan to use. For example, if you want to use Toml and YAML:
Additional data formats besides JSON and Pickle need additional dependencies installed. Install `msgpack`, `toml` or `yaml` extras to work with the appropriate data formats; you can skip formats that you don't plan to use. For example, if you want to use Toml and YAML:

```
pip install "pyserde[toml,yaml]"
Expand All @@ -36,12 +36,14 @@ poetry add pyserde -E all
```

Here are the available extras
* `all`: Install `msgpack`, `toml`, `yaml` and `numpy` extras
* `all`: Install `msgpack`, `toml`, `yaml`, `numpy`, `orjson`, and `sqlalchemy` extras
* `msgpack`: Install [msgpack](https://github.com/msgpack/msgpack-python)
* `toml`: Install [tomli](https://github.com/hukkin/tomli) and [tomli-w](https://github.com/hukkin/tomli-w)
* NOTE: [tomllib](https://docs.python.org/3/library/tomllib.html) is used for python 3.11 onwards
* `yaml`: Install [pyyaml](https://github.com/yaml/pyyaml)
* `numpy`: Install [numpy](https://github.com/numpy/numpy)
* `orjson`: Install [orjson](https://github.com/ijl/orjson)
* `sqlalchemy`: Install [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy)

## Define your first pyserde class

Expand Down
129 changes: 129 additions & 0 deletions docs/ja/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Getting Started

## インストール

PyPIからpyserdeをインストールしてください。pyserdeにはPython>=3.9が必要です。

```
pip install pyserde
```

poetryを使用している場合は、以下のコマンドを実行してください。
```
poetry add pyserde
```

JSONとPickle以外のデータ形式を扱う場合は、追加の依存関係をインストールする必要があります。
適切なデータ形式で動作するには、`msgpack``toml``yaml` の追加パッケージをインストールしてください。
使用しない場合はスキップして構いません。
例えば、TomlとYAMLを使用する場合は以下のようにします。

```
pip install "pyserde[toml,yaml]"
```

poetryを使用している場合
```
poetry add pyserde -E toml -E yaml
```

一度にすべてをインストールする場合

```
pip install "pyserde[all]"
```

poetryを使用している場合
```
poetry add pyserde -E all
```

利用可能な追加パッケージ
* `all``msgpack``toml``yaml``numpy``orjson``sqlalchemy` をインストール
* `msgpack`[msgpack](https://github.com/msgpack/msgpack-python) をインストール
* `toml`[tomli](https://github.com/hukkin/tomli)[tomli-w](https://github.com/hukkin/tomli-w) をインストール
* 注記:python 3.11以降は [tomllib](https://docs.python.org/3/library/tomllib.html) を使用
* `yaml`[pyyaml](https://github.com/yaml/pyyaml) をインストール
* `numpy`[numpy](https://github.com/numpy/numpy) をインストール
* `orjson`[orjson](https://github.com/ijl/orjson) をインストール
* `sqlalchemy`[sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) をインストール


## 最初のpyserdeクラスを定義

pyserdeの`@serde`デコレータを使用してクラスを定義します。
モジュール名が `pyserde` ではなく `serde` であることに注意してください。
`pyserde`は標準ライブラリの`dataclasses`モジュールに大きく依存しています。
そのため、dataclassに慣れていない場合はまず[dataclassesのドキュメント](https://docs.python.org/3/library/dataclasses.html)を読むことをおすすめします。

```python
from serde import serde

@serde
class Foo:
i: int
s: str
f: float
b: bool
```

クラスがPythonインタプリタにロードされると、pyserdeは`@serde`によってデシリアライズに必要なメソッドを生成します。
コード生成は一度だけ行われ、クラスを使用する際にオーバーヘッドはありません。
これにより、クラスはpyserdeがサポートするすべてのデータ形式でシリアライズおよびデシリアライズ可能になります。

> **注記:** シリアライズまたはデシリアライズの機能のみが必要な場合、`@serde`デコレータの代わりに`@serialize``@deserialize`を使用できます。
>
> 例:シリアライズのみを行う場合、`@serialize`デコレータを使用できます。しかし、`Foo`のデシリアライズAPI(例:`from_json`)を呼び出すとエラーが発生します。
> ```python
> from serde import serialize
>
> @serialize
> class Foo:
> i: int
> s: str
> f: float
> b: bool
> ```
## PEP585とPEP604
python>=3.9用の[PEP585](https://www.python.org/dev/peps/pep-0585/)スタイルのアノテーションと、python>=3.10用の[PEP604](https://www.python.org/dev/peps/pep-0604/) Unionオペレータがサポートされています。
PEP585PEP604を使用すると、pyserdeクラスをきれいに書くことができます。
```python
@serde
class Foo:
a: int
b: list[str]
c: tuple[int, float, str, bool]
d: dict[str, list[tuple[str, int]]]
e: str | None
```
## pyserdeクラスの使用

次に、pyserdeのデシリアライズAPIをインポートします。
JSONの場合は以下のようにします。

```python
from serde.json import from_json, to_json
```

`to_json`を使用してオブジェクトをJSONにシリアライズします。
```python
f = Foo(i=10, s='foo', f=100.0, b=True)
print(to_json(f))
```

`from_json``Foo`クラスとJSON文字列を渡して、JSONをオブジェクトにデシリアライズします。
```python
s = '{"i": 10, "s": "foo", "f": 100.0, "b": true}'
print(from_json(Foo, s))
```

以上です!
pyserdeには他にも多くの機能があります。興味があれば、残りのドキュメントをお読みください。

> 💡 ヒント:どのタイプチェッカーを使用すべきか?
> pyserdeは[PEP681 dataclass_transform](https://peps.python.org/pep-0681/)に依存しています。
> 2024年1月現在、[mypy](https://github.com/python/mypy)はdataclass_transformを完全にはサポートしていません。
> 私の個人的なおすすめは[pyright](https://github.com/microsoft/pyright)です。

0 comments on commit 8ec44de

Please sign in to comment.