Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(pages): update Japanese translation of env-variables.mdx #1458

Merged
merged 62 commits into from
Jun 23, 2023
Merged
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7263887
start Japanese translation
Apr 15, 2023
8e5494a
feat(pages): translate introcution.md
Apr 15, 2023
63bb352
feat(pages): first translate why.md
Apr 15, 2023
17dadcf
fix(pages): translate frontmatter in Japanese
Apr 15, 2023
6132b19
fix(pages): change left side navibar to link to Japanese
Apr 15, 2023
84eac7b
fix(pages): translate installation.mdx
Apr 15, 2023
18c10e2
fix(pages): translate folder-structure.mdx
Apr 15, 2023
b60be00
fix(pages): translate faq
Apr 16, 2023
0ca924e
fix(pages): translate t3-collection
Apr 16, 2023
d5c3a25
fix(pages): translate other-recs
Apr 16, 2023
4231060
fix(pages): translate first-step
Apr 16, 2023
dfc87ca
fix(pages): translate usage/next-js
Apr 16, 2023
cffbdb7
fix(pages): translate typescript.md
Apr 16, 2023
ff81572
fix(pages): translate tRPC
Apr 16, 2023
53718db
fix(pages): translate prisma.md
Apr 16, 2023
a228585
fix(pages): translate next-auth.md
Apr 16, 2023
11a5fc9
fix(pages): Translate env-variable.mdx
Apr 16, 2023
a4aefd1
finx(pages): Translate tailwind.md
Apr 16, 2023
43573ae
fix(pages): Translate vercel.md
Apr 17, 2023
eda3423
netlify(pages): Translate netlify.mdx
Apr 17, 2023
9030d57
pages(pages): Translate docker.md
Apr 17, 2023
eb3b262
fix(pages): performed preliminary proofreading
Apr 17, 2023
d253427
Update www/src/pages/ja/introduction.md
uehaj Apr 17, 2023
e04e1e7
fix(pages): fix and improve in review comments
Apr 18, 2023
d49fe96
fix(pages): left side menu category translated
Apr 18, 2023
d5cfe30
fix(pages): Improvement for introduction.md why.md
Apr 18, 2023
a87998f
fix(pages): improve: Installation,Folder Structure,FAQ,T3 Collection,…
Apr 19, 2023
b76f1d4
fix(pages): translate left side menu item
Apr 19, 2023
bbbd8a5
fix(pages): follow review comments and other minor fixes
Apr 20, 2023
12108a7
fix(pages): improve first-step.md
Apr 20, 2023
6210f71
fix(pages):improve next-js.md, trpc.md, typescript.md
Apr 21, 2023
59536b7
fix(pages): improve prisma.md
Apr 21, 2023
30220ad
fix(pages): next-auth.md
Apr 21, 2023
adb0581
fix(pages): improve env-variables.mdx
Apr 23, 2023
769e62d
fix(pages): improve tailwind.md
Apr 24, 2023
a5fb322
fix(pages): improve vercel.md, netlify.md, docker.md
Apr 24, 2023
6c3923d
fix(pages): improvement
Apr 24, 2023
b72ad8d
fix(pages): remove aside english and improvement.
Apr 26, 2023
964a8d2
fix(pages): final check
Apr 26, 2023
a59f3b5
docs(pages): Japanese Translation
Apr 26, 2023
796fcf6
Merge remote-tracking branch 'upstream/next' into next
Apr 26, 2023
aa3f813
docs(pages): small change
uehaj-tx Apr 27, 2023
9292d37
Merge branch 'next' into next
c-ehrlich Apr 27, 2023
af460c0
Merge branch 'next' of https://github.com/t3-oss/create-t3-app into next
uehaj-tx May 8, 2023
4727b37
docs(pages): update Japanese translation of env-variables.mdx
uehaj May 31, 2023
6f1ad1b
Merge branch 'next' into patch-1
uehaj-tx Jun 2, 2023
470bd49
Merge branch 'next' into patch-1
uehaj Jun 2, 2023
50b6ff3
fix(docs): small fix
uehaj-tx Jun 2, 2023
8ce414c
Merge branch 'patch-1' of https://github.com/uehaj/create-t3-app into…
uehaj-tx Jun 2, 2023
393400c
Merge branch 'next' into patch-1
c-ehrlich Jun 2, 2023
a3d82cb
fix(docs): remove .changelog
uehaj-tx Jun 4, 2023
e867204
Merge branch 'patch-1' of https://github.com/uehaj/create-t3-app into…
uehaj-tx Jun 4, 2023
3447c3e
Merge remote-tracking branch 'upstream/next' into next
uehaj-tx Jun 10, 2023
8d93e44
Merge branch 'next' into patch-1
uehaj-tx Jun 10, 2023
78a46a3
docs(next-auth.mdx): updated for newer en version.
uehaj-tx Jun 10, 2023
e32785b
Merge remote-tracking branch 'upstream/next' into next
uehaj-tx Jun 20, 2023
6c88b83
Merge branch 'next' of https://github.com/t3-oss/create-t3-app into next
uehaj-tx Jun 22, 2023
eda8d8d
Merge remote-tracking branch 'origin/patch-1' into next
uehaj-tx Jun 22, 2023
ecdb2ce
add .changeset files
uehaj-tx Jun 22, 2023
9145479
docs(ja/usage/env-variables.mdx): follow En version update
uehaj-tx Jun 22, 2023
74dbcf3
fix: add .changeset/
uehaj-tx Jun 22, 2023
fa69699
add .changeset
uehaj-tx Jun 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .changeset/README.md
uehaj marked this conversation as resolved.
Show resolved Hide resolved

This file was deleted.

15 changes: 0 additions & 15 deletions .changeset/config.json
uehaj marked this conversation as resolved.
Show resolved Hide resolved

This file was deleted.

138 changes: 36 additions & 102 deletions www/src/pages/ja/usage/env-variables.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,113 +8,39 @@ isMdx: true

import Callout from "../../../components/docs/callout.tsx";

Create T3 App [Zod](https://github.com/colinhacks/zod) を使用して、`src/env.mjs`にいくつかの追加ロジックを提供することにより、実行時*および*構築時に環境変数の検証を行います。
Create T3 App は自前のパッケージ[@t3-oss/env-nextjs](https://env.t3.gg) と [Zod](https://github.com/colinhacks/zod) を組合わせて、`src/env.mjs`にいくつかの簡単なロジックを提供することにより、実行時*および*構築時に環境変数の検証を行います。

## env.mjs

_要約; 環境変数を追加する場合は、`.env`に追加するとともに、`src/env.mjs`にバリデーターを定義する必要があります。_

このファイルは、スキーマと、オブジェクトの検証ロジックおよび再構築の、2 つの部分に分かれています。検証ロジックは触る必要がありません。
_要約; 環境変数を追加する場合は、`src/env.mjs`にバリデーターを定義し、キーバリューペアを `.env`に追加する必要があります。_

```ts:env.mjs
const server = z.object({
NODE_ENV: z.enum(["development", "test", "production"]),
});
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";

const client = z.object({
// NEXT_PUBLIC_CLIENTVAR: z.string(),
export const env = createEnv({
server: {
NODE_ENV: z.enum(["development", "test", "production"]),
},
client: {
// NEXT_PUBLIC_CLIENTVAR: z.string(),
},
runtimeEnv: {
NODE_ENV: process.env.NODE_ENV,
},
});

const processEnv = {
NODE_ENV: process.env.NODE_ENV,
// NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,
};
```

### サーバースキーマ
T3 Env は`createEnv`を通じて新しい概念を導入します。これはスキーマを作成し、クライアント側とサーバー側の環境変数に対する主要な検証ロジックを含める役割を果たします。
uehaj marked this conversation as resolved.
Show resolved Hide resolved

サーバーサイドの環境変数スキーマをここで定義します。

<Callout type="warning">
重要なシークレットがクライアント側に漏れないようにするため、ここでのキーには
`NEXT_PUBLIC` の接頭辞をつけないようにしてください。
<Callout type="info">
createEnvが内部でどのように動作するかについての詳細は、[T3
Env](https://env.t3.gg/docs/introduction)のドキュメントをご覧ください。
</Callout>

### クライアントスキーマ

クライアント側の環境変数のスキーマをここで定義します。

クライアントに公開するには接頭辞 `NEXT_PUBLIC` を付ける必要があります。接頭辞を付けない場合、検証が失敗するので不正な構成を検出できます。

### processEnv オブジェクト

ここで `process.env` を再構築します。

Zod スキーマを解析できる JavaScript オブジェクトが必要で、Next.js が環境変数を扱う方法のため、通常のオブジェクトのように process.env を再構築できません。そのため、手動で行う必要があります

TypeScript は、両方のスキーマからすべてのキーを再構築したことを確認するのに役立ちます。

```ts
// ❌ This doesn't work, we need to destruct it manually
const schema = z.object({
NEXT_PUBLIC_WS_KEY: z.string(),
});

const validated = schema.parse(process.env);
```

### バリデーションロジック

_興味のある読者のために:_

<details>
<summary>高度な話題: バリデーションロジック</summary>

環境(サーバーまたはクライアント)に応じて、両方のスキーマが検証されるのか、クライアントのスキーマだけが検証されるのかが決まります。つまり、サーバーの環境変数が未定義であっても、バリデーションが失敗することはありません。つまり、環境変数のエントリーポイントを 1 つにすることができます。

```ts
// src/env.mjs

const isServer = typeof window === "undefined";

const merged = server.merge(client);
const parsed = isServer
? merged.safeParse(processEnv) // <-- on server, validate all
: client.safeParse(processEnv); // <-- on client, validate only client

if (parsed.success === false) {
console.error(
"❌ Invalid environment variables:\n",
...formatErrors(parsed.error.format()),
);
throw new Error("Invalid environment variables");
}
```

そして、プロキシオブジェクトを使って、クライアントでサーバーサイドの環境変数にアクセスしようとすると、エラーを投げるようにしています。

```ts
// src/env.mjs

// proxy allows us to remap the getters
export const env = new Proxy(parsed.data, {
get(target, prop) {
if (typeof prop !== "string") return undefined;
// on the client we only allow NEXT_PUBLIC_ variables
if (!isServer && !prop.startsWith("NEXT_PUBLIC_"))
throw new Error(
"❌ Attempted to access serverside environment variable on the client",
);
return target[prop]; // <-- otherwise, return the value
},
});
```

</details>

## 環境変数の使用

環境変数を使いたいときは、`env.mjs`からインポートして、通常と同じように使うことができます。これをクライアントでインポートして、サーバー側の環境変数にアクセスしようとすると、ランタイムエラーが発生します。
環境変数を使いたいときは、先程作成した`env.mjs`からインポートして、通常と同じように使うことができます。これをクライアントでインポートして、サーバー側の環境変数にアクセスしようとすると、ランタイムエラーが発生します。

```ts:pages/api/hello.ts
import { env } from "../../env.mjs";
Expand Down Expand Up @@ -145,7 +71,11 @@ Next.js などのいくつかのフレームワークやビルドツールでは

📄 `.env`: 通常の`.env`ファイルに入力するように、環境変数を入力します(例:`KEY=VALUE`)。

📄 `env.mjs`:Zod スキーマを定義することで、環境変数に適切な検証ロジックを追加します。(例:`KEY: z.string()` )。そして、環境変数を `process.env` から `processEnv` オブジェクトに再構築します(例:`KEY: process.env.KEY` )。
📄 `env.mjs`:それぞれの環境変数に`createEnv`中で Zod スキーマを定義することで、環境変数に適切な検証ロジックを追加します。(例:`KEY: z.string()` )。それに加えて、`runtimeEnv`オプションでそれらを分解することを確認してください。例えば、`KEY: process.env.KEY`のようにします。

<Callout type="info">
なぜ`runtimeEnv`で環境変数を分解する必要があるのでしょうか。これはNext.jsが特定のランタイムで環境変数をバンドルする方法によるものです。手動で分解することで、変数がバンドルから取り除かれることはないことを保証します。
</Callout>

オプションで、`.env.example`を最新化しておいても良いでしょう:

Expand All @@ -164,15 +94,19 @@ TWITTER_API_TOKEN=1234567890
2. 環境変数を `env.mjs` に追加する:

```ts
export const server = z.object({
// ...
TWITTER_API_TOKEN: z.string(),
});
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";

export const processEnv = {
export const env = createEnv({
server: {
TWITTER_API_TOKEN: z.string(),
},
// ...
TWITTER_API_TOKEN: process.env.TWITTER_API_TOKEN,
};
runtimeEnv: {
// ...
TWITTER_API_TOKEN: process.env.TWITTER_API_TOKEN,
},
});
```

<Callout type="info">
Expand All @@ -181,7 +115,7 @@ export const processEnv = {
空であってはならない場合は、`z.string().min(1)` のように指定します。
</Callout>

3. _オプション:_ 環境変数を `.env.example` に追加しますが、トークン値自体は含めないようにします
3. _オプション:_ 環境変数を `.env.example` に追加しますが、`runtimeEnv`オプションには秘密情報を含めないように注意してください

```
TWITTER_API_TOKEN=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ title: NextAuth.js
description: NextAuth.jsの使い方
layout: ../../../layouts/docs.astro
lang: ja
isMdx: true
---

import Callout from "../../../components/docs/callout.tsx";

Next.js アプリケーションが認証システムを必要とするとき、NextAuth.js は、自分で構築する手間をかけずに、複雑なセキュリティを導入できる優れたソリューションです。NextAuth.js には OAuth 認証をすばやく追加するための豊富なプロバイダーの一覧が付属しており、多くのデータベースや ORM のためのアダプターを提供しています。

## コンテクストプロバイダー
Expand Down Expand Up @@ -178,6 +181,34 @@ NextAuth.js を Prisma と共に動作させるには、多くの[初期設定](

NextAuth.js を Next.js ミドルウェアで利用する場合、認証に [JWT セッション戦略](https://next-auth.js.org/configuration/nextjs#caveats)を利用する必要があります。これは、ミドルウェアが JWT である場合にのみ、セッションクッキーにアクセスすることができるためです。デフォルトでは、Create T3 App は、データベースアダプターとして Prisma と組み合わせて、**default**データベースストラテジーを使用するように構成されています。

<Callout type="warning">
データベースセッションの使用が推奨されており、セキュリティ問題を避けるために JWT セッション戦略に切り替える前に JWT について詳しく調べておくべきです。

</Callout>

JWT セッション戦略に切り替えた後は、`src/server/auth.ts` の`session`コールバックを更新してください。
`user`オブジェクトは`undefined`になります。代わりに、`token`オブジェクトからユーザーの ID を取得します。
つまり:

```diff:server/auth.ts
export const authOptions: NextAuthOptions = {
+ session: {
+ strategy: "jwt",
+ },
callbacks: {
- session({ session, user }) {
+ session({ session, token }) {
- if (session.user) {
+ if (session.user && token.sub) {
- session.user.id = user.id;
+ session.user.id = token.sub;
}
return session;
}
},
};
```

## デフォルトの DiscordProvider を設定する

1. [Discord Developer Portal の Application セクション](https://discord.com/developers/applications)に向かい「New Application」をクリックします。
Expand Down
Loading