diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..5c96042
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,25 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+
+jobs:
+ ci:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v7
+
+ - uses: actions/setup-node@v7
+ with:
+ node-version: 20
+ cache: npm
+
+ - run: npm ci
+
+ - run: npm run lint
+
+ - run: npm run format:check
+
+ - run: npm run typecheck
diff --git a/.oxfmtrc.json b/.oxfmtrc.json
new file mode 100644
index 0000000..55c15df
--- /dev/null
+++ b/.oxfmtrc.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "./node_modules/oxfmt/configuration_schema.json",
+ "ignorePatterns": []
+}
diff --git a/.oxlintrc.json b/.oxlintrc.json
new file mode 100644
index 0000000..90588c8
--- /dev/null
+++ b/.oxlintrc.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "./node_modules/oxlint/configuration_schema.json",
+ "plugins": ["typescript", "unicorn", "oxc", "react", "jsx-a11y", "nextjs", "import"],
+ "categories": {
+ "correctness": "error"
+ },
+ "rules": {},
+ "env": {
+ "builtin": true
+ },
+ "ignorePatterns": [".next/**", "out/**", "build/**", "next-env.d.ts", "app/generated/**"]
+}
diff --git a/AGENTS.md b/AGENTS.md
index 8bd0e39..caeace2 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,4 +1,5 @@
+
# This is NOT the Next.js you know
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
diff --git a/README.md b/README.md
index 5c1856c..3151d74 100644
--- a/README.md
+++ b/README.md
@@ -5,42 +5,57 @@
```bash
npm run dev # 開発モードでプロジェクトを実行(これで動作等を確認する)
```
+
基本的に、localhost:3000 が開くはず
+
```bash
npm ci # ciとはclean installの略, package-lock.jsonの内容を基にパッケージ(再利用可能なプログラムのまとまりのこと)をインストール
```
+
(なお、インストール内容について、もし手動編集をする場合、package.jsonの方を編集し、package-lock.jsonは編集しないこと)
+
```bash
cp .env.example .env # .env.exampleの内容をコピーして自分用の.envを作成する
```
+
(`.env`ファイルは秘密情報を含みうるため`.gitignore`でGit管理から除外されている。`.env.example`はGit管理されているのでcloneすれば手元にあるはずだが、無ければ手動で作成すること)
+
```bash
npx prisma migrate dev # マイグレーション履歴(prisma/migrations)を基に、自分のローカル環境にDB(prisma/dev.db)を作成・更新する
```
+
(`prisma/dev.db`はSQLiteのDB実体ファイルで、複数人が同じファイルをGit管理すると変更が衝突して壊れるため`.gitignore`で除外されている。そのため各自が上記コマンドでローカルに作成する。他の人がスキーマ(`prisma/schema.prisma`)を変更してマイグレーションファイルを追加した場合、`git pull`した後に再度このコマンドを実行して自分のDBにも変更を反映すること)
+
```bash
git clone git@github.com:アカウント名/リポジトリ名.git # リモートリポジトリの内容を、自身のローカルリポジトリにクローンする
```
+
```bash
git pull origin main
# 自分のリポジトリにリモートリポジトリのmainブランチの変更(他の人が施したものなど)を取り込む
# git fetch(最新情報の取得)とgit merge(手元のデータへの統合)の2つの処理を同時に実行している
```
+
```bash
-git branch # 現在いるブランチを確認
+git branch # 現在いるブランチを確認
```
+
```bash
git switch ブランチ名 # ブランチを切り替える
```
+
```bash
git switch -c ブランチ名 # ブランチを新たに作成する
```
+
```bash
rm -rf リポジトリ名
# リポジトリを強制削除する
# どうしてもうまくいかなかったときは、一旦ローカルリポジトリを削除して再びクローンしてもよい(多分正攻法ではない)
```
+
## プロジェクト構成の大枠
+
- layout.tsx
- 共通するレイアウトのレンダリングを担っている
- {children}の中に各コンポーネントのレンダリングが集約されているイメージ
@@ -66,12 +81,16 @@ rm -rf リポジトリ名
- prismaディレクトリ
- Node.jsおよびTypeScript向けORMツールであるprismaを管理するディレクトリ
- ORM(オブジェクト関係マッピング): SQLを書かずにデータを操作する技術
+
## Next.jsについて
+
Next.jsとは、reactベースのWebアプリケーションフレームワークで、主に以下の2つの特徴がある。
+
- App Router: ディレクトリを使って画面の切り替えを行い、アプリを設計する機能
- Server Side Rendering(SSR): サーバー側でHTMLを作ってから表示する機能
### App Routerルーティング規則
+
App Routerのルーティングは、次の2つの軸で成り立っている。
- **フォルダ** … 階層がそのまま URL のパスになる
@@ -98,26 +117,28 @@ App Routerのルーティングは、次の2つの軸で成り立っている。
フォルダの階層がそのままURLになる。ただし中に`page`ファイルが必要
-| フォルダ構造 | 対応するURL |
-|---|---|
-| `app/page.tsx` | `/` |
-| `app/learn/page.tsx` | `/learn` |
-| `app/learn/[language]/page.tsx` | `/learn/english` など |
+| フォルダ構造 | 対応するURL |
+| ----------------------------------------- | ----------------------------- |
+| `app/page.tsx` | `/` |
+| `app/learn/page.tsx` | `/learn` |
+| `app/learn/[language]/page.tsx` | `/learn/english` など |
| `app/learn/[language]/[section]/page.tsx` | `/learn/english/grammar` など |
#### 2. 特殊ファイル(予約名)
+
ファイル名によってApp Routerにおける役割が変わる
拡張子`.tsx`/`.jsx`/`.js`(`page`は`.mdx`も可)は選べる
-| ファイル名 | 役割 |
-|---|---|
-| `page` | そのルートの UI 本体。**これがないとアクセス不可** |
-| `layout` | その階層以下で共有される枠。上位から入れ子に継承される |
-| `loading` | ロード中の UI(内部でReact Suspense利用) |
-| `error` | エラー時の UI(Error Boundary) |
-| `not-found` | 404 の UI |
-| `route` | API エンドポイント。`page`とは同じ階層に共存できない |
-| `template` | 再マウントされる点以外は`layout`に近い |
-それ以外のファイル(.tsなど)は「非公開ファイル(Colocation)」になり、そのフォルダ専用のコンポーネントやデータ処理関数を配置するのが一般的
+
+| ファイル名 | 役割 |
+| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
+| `page` | そのルートの UI 本体。**これがないとアクセス不可** |
+| `layout` | その階層以下で共有される枠。上位から入れ子に継承される |
+| `loading` | ロード中の UI(内部でReact Suspense利用) |
+| `error` | エラー時の UI(Error Boundary) |
+| `not-found` | 404 の UI |
+| `route` | API エンドポイント。`page`とは同じ階層に共存できない |
+| `template` | 再マウントされる点以外は`layout`に近い |
+| それ以外のファイル(.tsなど)は「非公開ファイル(Colocation)」になり、そのフォルダ専用のコンポーネントやデータ処理関数を配置するのが一般的 |
##### layoutについて
@@ -128,22 +149,23 @@ App Routerのルーティングは、次の2つの軸で成り立っている。
#### 3. 動的ルート(角括弧の記法)
URL の一部が可変になる部分は角括弧
-| 記法 | 名称 | マッチ例 | params の中身 |
-|---|---|---|---|
-| `[folder]` | 動的セグメント | `/learn/english` | `{ language: "english" }` |
-| `[...folder]` | catch-all | `/shop/a/b` | `{ slug: ["a", "b"] }`(配列) |
-| `[[...folder]]` | optional catch-all | `/shop` も含む | セグメント無しにもマッチ |
+
+| 記法 | 名称 | マッチ例 | params の中身 |
+| --------------- | ------------------ | ---------------- | ------------------------------ |
+| `[folder]` | 動的セグメント | `/learn/english` | `{ language: "english" }` |
+| `[...folder]` | catch-all | `/shop/a/b` | `{ slug: ["a", "b"] }`(配列) |
+| `[[...folder]]` | optional catch-all | `/shop` も含む | セグメント無しにもマッチ |
#### 4. page.tsxのコンポーネントが受け取る引数
`page.tsx`のデフォルトエクスポート関数は Next.js から**`params`と`searchParams`を自動的に受け取る。
-| 引数 | 中身 | 例 |
-|---|---|---|
-| `params` | 動的セグメント `[...]` | `/learn/english` → `{ language: "english" }` |
-| `searchParams` | クエリ文字列 `?...` | `?level=beginner` → `{ level: "beginner" }` |
+| 引数 | 中身 | 例 |
+| -------------- | ---------------------- | -------------------------------------------- |
+| `params` | 動的セグメント `[...]` | `/learn/english` → `{ language: "english" }` |
+| `searchParams` | クエリ文字列 `?...` | `?level=beginner` → `{ level: "beginner" }` |
### サーバーサイドレンダリング
+
- 原則、ルーティング規則に含まれるものはデフォルトでSSRが適用される
- 'use client'は、「クライアントコンポーネント」を宣言するディレクティブであり、ファイルの一番上にこれを記述すると、useStateやuseEffectなどのReactフックが使えるようになる(この場合でもSSR自体は適用されるので、誤解しないよう注意)
-
diff --git a/app/globals.css b/app/globals.css
index 5842cc4..3ea409e 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -226,7 +226,6 @@ body {
}
}
-
@keyframes vb-scroll-left {
from {
transform: translateX(0);
@@ -255,4 +254,4 @@ body {
.vb-flow-row {
animation: none;
}
-}
\ No newline at end of file
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index 1697d61..acb868e 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -16,8 +16,7 @@ const geistMono = Geist_Mono({
export const metadata: Metadata = {
title: "Vocabook | 多次元単語帳アプリ",
- description:
- "自分だけの多次元単語帳を作って共有できる、多言語対応の暗記学習アプリ。",
+ description: "自分だけの多次元単語帳を作って共有できる、多言語対応の暗記学習アプリ。",
};
// ルートレイアウト
@@ -27,10 +26,7 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
+
{children}
diff --git a/app/learn/chinese/01/page.mdx b/app/learn/chinese/01/page.mdx
index 264b23e..f01e9cb 100644
--- a/app/learn/chinese/01/page.mdx
+++ b/app/learn/chinese/01/page.mdx
@@ -2,11 +2,11 @@ export const title = "名詞の性の語尾による判別";
# 名詞の性の語尾による判別
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
ものの名詞は男性・女性を直観的に判断できないため、語尾によってある程度判別する。(例外もある)
-| 語尾 | 性 |
-|---|---|
-| -age、-ment、-eau、-teur | 男性名詞 |
+| 語尾 | 性 |
+| ------------------------------- | -------- |
+| -age、-ment、-eau、-teur | 男性名詞 |
| -tion、-sion、-té、-esse、-ette | 女性名詞 |
diff --git a/app/learn/chinese/layout.tsx b/app/learn/chinese/layout.tsx
index 01510ca..98e8952 100644
--- a/app/learn/chinese/layout.tsx
+++ b/app/learn/chinese/layout.tsx
@@ -3,16 +3,10 @@ import { getLanguage } from "@/app/learn/languages";
const language = getLanguage("chinese");
// 中国語セクション専用レイアウト(各言語ディレクトリの layout.tsx はファイル自体が必須)
-export default function ChineseSectionLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
+export default function ChineseSectionLayout({ children }: { children: React.ReactNode }) {
return (
-
- {language?.label}
-
+ {language?.label}
{children}
);
diff --git a/app/learn/content.ts b/app/learn/content.ts
index b302916..1747b8d 100644
--- a/app/learn/content.ts
+++ b/app/learn/content.ts
@@ -33,19 +33,21 @@ async function listSlugs(languageSlug: string): Promise {
return [];
}
- return entries
- // filterによって、entries配列の中から、ディレクトリであり、かつ名前が数字のみで構成されているものを抽出する(layout.tsxを省くため)
- .filter((entry) => entry.isDirectory() && /^\d+$/.test(entry.name))
- // mapによって、抽出されたディレクトリの名前を配列として返す
- .map((entry) => entry.name)
- // sortによって、数字順に並び替える
- .sort();
+ return (
+ entries
+ // filterによって、entries配列の中から、ディレクトリであり、かつ名前が数字のみで構成されているものを抽出する(layout.tsxを省くため)
+ .filter((entry) => entry.isDirectory() && /^\d+$/.test(entry.name))
+ // mapによって、抽出されたディレクトリの名前を配列として返す
+ .map((entry) => entry.name)
+ // sortによって、数字順に並び替える
+ .sort()
+ );
}
// 任意の言語について、セクションの番号配列を返す関数
export async function getSections(languageSlug: string): Promise {
const sectionSlugs = await listSlugs(languageSlug);
-
+
// Promise.all()は、複数のPromiseをまとめて"並列"で待ち、すべて完了したら結果を1つの配列で返す
return Promise.all(
sectionSlugs.map(async (sectionSlug) => {
diff --git a/app/learn/french/01/page.mdx b/app/learn/french/01/page.mdx
index 3fd8e17..8c8b82e 100644
--- a/app/learn/french/01/page.mdx
+++ b/app/learn/french/01/page.mdx
@@ -2,18 +2,18 @@ export const title = "冠詞の一覧と縮約形";
# 冠詞の一覧と縮約形
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
## 冠詞の種類
-| | | | 男性形 | 女性形 |
-|---|---|---|---|---|
-| 可算 | 不定冠詞 | 単数形 | un | une |
-| 可算 | 不定冠詞 | 複数形 | des | des |
-| 可算 | 定冠詞 | 単数形 | le (l') | la (l') |
-| 可算 | 定冠詞 | 複数形 | les | les |
-| 不可算 | 部分冠詞 | - | du (de l') | de la (de l') |
-| 不可算 | 定冠詞 | - | le (l') | la (l') |
+| | | | 男性形 | 女性形 |
+| ------ | -------- | ------ | ---------- | ------------- |
+| 可算 | 不定冠詞 | 単数形 | un | une |
+| 可算 | 不定冠詞 | 複数形 | des | des |
+| 可算 | 定冠詞 | 単数形 | le (l') | la (l') |
+| 可算 | 定冠詞 | 複数形 | les | les |
+| 不可算 | 部分冠詞 | - | du (de l') | de la (de l') |
+| 不可算 | 定冠詞 | - | le (l') | la (l') |
- 括弧内は直後の名詞が母音始まりの時に用いる。
- 「du」は「de le」の短縮版であり、部分冠詞は「de+定冠詞」で作られると考えてよい。
diff --git a/app/learn/french/02/page.mdx b/app/learn/french/02/page.mdx
index 8cf2c6d..a3dfbb8 100644
--- a/app/learn/french/02/page.mdx
+++ b/app/learn/french/02/page.mdx
@@ -2,65 +2,65 @@ export const title = "基本動詞の直説法現在活用";
# 基本動詞の直説法現在活用
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
## être(be動詞)
-| 人称 | 活用形 | 人称 | 活用形 |
-|---|---|---|---|
-| 一人称単数 | suis | 一人称複数 | sommes |
-| 二人称単数 | es | 二人称複数 | êtes |
-| 三人称単数 | est | 三人称複数 | sont |
+| 人称 | 活用形 | 人称 | 活用形 |
+| ---------- | ------ | ---------- | ------ |
+| 一人称単数 | suis | 一人称複数 | sommes |
+| 二人称単数 | es | 二人称複数 | êtes |
+| 三人称単数 | est | 三人称複数 | sont |
## avoir(have)
-| 人称 | 活用形 | 人称 | 活用形 |
-|---|---|---|---|
-| 一人称単数 | ai | 一人称複数 | avons |
-| 二人称単数 | as | 二人称複数 | avez |
-| 三人称単数 | a | 三人称複数 | ont |
+| 人称 | 活用形 | 人称 | 活用形 |
+| ---------- | ------ | ---------- | ------ |
+| 一人称単数 | ai | 一人称複数 | avons |
+| 二人称単数 | as | 二人称複数 | avez |
+| 三人称単数 | a | 三人称複数 | ont |
## faire(make, do)
-| 人称 | 活用形 | 人称 | 活用形 |
-|---|---|---|---|
-| 一人称単数 | fais | 一人称複数 | faisons |
-| 二人称単数 | fais | 二人称複数 | faites |
-| 三人称単数 | fait | 三人称複数 | font |
+| 人称 | 活用形 | 人称 | 活用形 |
+| ---------- | ------ | ---------- | ------- |
+| 一人称単数 | fais | 一人称複数 | faisons |
+| 二人称単数 | fais | 二人称複数 | faites |
+| 三人称単数 | fait | 三人称複数 | font |
## aller(go)
-| 人称 | 活用形 | 人称 | 活用形 |
-|---|---|---|---|
-| 一人称単数 | vais | 一人称複数 | allons |
-| 二人称単数 | vas | 二人称複数 | allez |
-| 三人称単数 | va | 三人称複数 | vont |
+| 人称 | 活用形 | 人称 | 活用形 |
+| ---------- | ------ | ---------- | ------ |
+| 一人称単数 | vais | 一人称複数 | allons |
+| 二人称単数 | vas | 二人称複数 | allez |
+| 三人称単数 | va | 三人称複数 | vont |
## venir(come)
-| 人称 | 活用形 | 人称 | 活用形 |
-|---|---|---|---|
-| 一人称単数 | viens | 一人称複数 | venons |
-| 二人称単数 | viens | 二人称複数 | venez |
-| 三人称単数 | vient | 三人称複数 | viennent |
+| 人称 | 活用形 | 人称 | 活用形 |
+| ---------- | ------ | ---------- | -------- |
+| 一人称単数 | viens | 一人称複数 | venons |
+| 二人称単数 | viens | 二人称複数 | venez |
+| 三人称単数 | vient | 三人称複数 | viennent |
## -er動詞
-| 人称 | 語尾 | 人称 | 語尾 |
-|---|---|---|---|
-| 一人称単数 | -e | 一人称複数 | -ons |
-| 二人称単数 | -es | 二人称複数 | -ez |
-| 三人称単数 | -e | 三人称複数 | -ent |
+| 人称 | 語尾 | 人称 | 語尾 |
+| ---------- | ---- | ---------- | ---- |
+| 一人称単数 | -e | 一人称複数 | -ons |
+| 二人称単数 | -es | 二人称複数 | -ez |
+| 三人称単数 | -e | 三人称複数 | -ent |
- -gerで終わる動詞(manger等)の一人称複数形は -geons
- -cerで終わる動詞(commencer等)の一人称複数形は -çons
## -ir動詞
-| 人称 | 語尾 | 人称 | 語尾 |
-|---|---|---|---|
-| 一人称単数 | -is | 一人称複数 | -issons |
-| 二人称単数 | -is | 二人称複数 | -issez |
-| 三人称単数 | -it | 三人称複数 | -issent |
+| 人称 | 語尾 | 人称 | 語尾 |
+| ---------- | ---- | ---------- | ------- |
+| 一人称単数 | -is | 一人称複数 | -issons |
+| 二人称単数 | -is | 二人称複数 | -issez |
+| 三人称単数 | -it | 三人称複数 | -issent |
- 複数形の活用は「-iss+er動詞の活用形」の形になっている。
diff --git a/app/learn/french/03/page.mdx b/app/learn/french/03/page.mdx
index 699aaf9..3eef46d 100644
--- a/app/learn/french/03/page.mdx
+++ b/app/learn/french/03/page.mdx
@@ -2,31 +2,31 @@ export const title = "基数と序数と概数";
# 基数と序数と概数
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
## 基数(0〜19)
-| 数 | 綴り | 数 | 綴り |
-|---|---|---|---|
-| 0 | zéro | 10 | dix |
-| 1 | un(une) | 11 | onze |
-| 2 | deux | 12 | douze |
-| 3 | trois | 13 | treize |
-| 4 | quatre | 14 | quatorze |
-| 5 | cinq | 15 | quinze |
-| 6 | six | 16 | seize |
-| 7 | sept | 17 | dix-sept |
-| 8 | huit | 18 | dix-huit |
-| 9 | neuf | 19 | dix-neuf |
+| 数 | 綴り | 数 | 綴り |
+| --- | --------- | --- | -------- |
+| 0 | zéro | 10 | dix |
+| 1 | un(une) | 11 | onze |
+| 2 | deux | 12 | douze |
+| 3 | trois | 13 | treize |
+| 4 | quatre | 14 | quatorze |
+| 5 | cinq | 15 | quinze |
+| 6 | six | 16 | seize |
+| 7 | sept | 17 | dix-sept |
+| 8 | huit | 18 | dix-huit |
+| 9 | neuf | 19 | dix-neuf |
## 基数(20の倍数)
-| 数 | 綴り | 数 | 綴り |
-|---|---|---|---|
-| 20 | vingt | 30 | trente |
-| 40 | quarante | 50 | cinquante |
-| 60 | soixante | - | - |
-| 80 | quatre-vingts | - | - |
+| 数 | 綴り | 数 | 綴り |
+| --- | ------------- | --- | --------- |
+| 20 | vingt | 30 | trente |
+| 40 | quarante | 50 | cinquante |
+| 60 | soixante | - | - |
+| 80 | quatre-vingts | - | - |
- 21〜99は上記の組み合わせで表現する:「{"A"の数字と"B"の数字の和となる基数}={"B"の基数}-{"A"の基数}」
- 22:vingt-deux(20+2)
@@ -39,13 +39,13 @@ export const title = "基数と序数と概数";
## 3桁以上の基数
-| 桁 | 数 | 綴り |
-|---|---|---|
-| 3桁 | 100 | cent |
-| 4桁以上 | 1.000 | mille |
-| 4桁以上 | 1.000.000 | million |
-| 4桁以上 | 1.000.000.000 | milliard |
-| 4桁以上 | 1.000.000.000.000 | billion |
+| 桁 | 数 | 綴り |
+| ------- | ----------------- | -------- |
+| 3桁 | 100 | cent |
+| 4桁以上 | 1.000 | mille |
+| 4桁以上 | 1.000.000 | million |
+| 4桁以上 | 1.000.000.000 | milliard |
+| 4桁以上 | 1.000.000.000.000 | billion |
## 序数
diff --git a/app/learn/french/04/page.mdx b/app/learn/french/04/page.mdx
index d4267a5..311db40 100644
--- a/app/learn/french/04/page.mdx
+++ b/app/learn/french/04/page.mdx
@@ -2,7 +2,7 @@ export const title = "時刻表現";
# 時刻表現
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
「〜時(〜分)」は「〜heures(〜)」で表現する。
diff --git a/app/learn/french/05/page.mdx b/app/learn/french/05/page.mdx
index 79d34b4..e2df8af 100644
--- a/app/learn/french/05/page.mdx
+++ b/app/learn/french/05/page.mdx
@@ -2,7 +2,7 @@ export const title = "日程表現";
# 日程表現
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
事細かに表す場合は「le+曜日+日+月+年」で表現する。日程を単に述べる場合、その主語は「nous」または「on」になり、動詞には「être」を用いる。
diff --git a/app/learn/french/06/page.mdx b/app/learn/french/06/page.mdx
index 7457fe0..13452e0 100644
--- a/app/learn/french/06/page.mdx
+++ b/app/learn/french/06/page.mdx
@@ -2,18 +2,18 @@ export const title = "人称代名詞";
# 人称代名詞
-*第3章 人称詞と指示詞より*
+_第3章 人称詞と指示詞より_
-| | | 主語 | 直接目的語 | 間接目的語 | 強勢形 |
-|---|---|---|---|---|---|
-| 一人称単数 | | je | me | me | moi |
-| 二人称単数 | | tu | te | te | toi |
-| 三人称単数 | 男 | il | le | lui | lui |
-| 三人称単数 | 女 | elle | la | lui | elle |
-| 一人称複数 | | nous | nous | nous | nous |
-| 二人称複数 | | vous | vous | vous | vous |
-| 三人称複数 | 男 | ils | les | leur | eux |
-| 三人称複数 | 女 | elles | les | leur | elles |
+| | | 主語 | 直接目的語 | 間接目的語 | 強勢形 |
+| ---------- | --- | ----- | ---------- | ---------- | ------ |
+| 一人称単数 | | je | me | me | moi |
+| 二人称単数 | | tu | te | te | toi |
+| 三人称単数 | 男 | il | le | lui | lui |
+| 三人称単数 | 女 | elle | la | lui | elle |
+| 一人称複数 | | nous | nous | nous | nous |
+| 二人称複数 | | vous | vous | vous | vous |
+| 三人称複数 | 男 | ils | les | leur | eux |
+| 三人称複数 | 女 | elles | les | leur | elles |
- 強勢形は、前置詞の目的語や対比・強調などに用いられる。
- 三人称の人称代名詞は非人称的な使い方で用いられることがある。
diff --git a/app/learn/french/07/page.mdx b/app/learn/french/07/page.mdx
index 3e1424c..c29b720 100644
--- a/app/learn/french/07/page.mdx
+++ b/app/learn/french/07/page.mdx
@@ -2,16 +2,16 @@ export const title = "所有形容詞";
# 所有形容詞
-*第3章 人称詞と指示詞より*
+_第3章 人称詞と指示詞より_
-| | 単数(男) | 単数(女) | 複数 |
-|---|---|---|---|
-| 一人称単数 | mon | ma (mon) | mes |
-| 二人称単数 | ton | ta (ton) | tes |
-| 三人称単数 | son | sa (son) | ses |
-| 一人称複数 | notre | notre | nos |
-| 二人称複数 | votre | votre | vos |
-| 三人称複数 | leur | leur | leurs |
+| | 単数(男) | 単数(女) | 複数 |
+| ---------- | ---------- | ---------- | ----- |
+| 一人称単数 | mon | ma (mon) | mes |
+| 二人称単数 | ton | ta (ton) | tes |
+| 三人称単数 | son | sa (son) | ses |
+| 一人称複数 | notre | notre | nos |
+| 二人称複数 | votre | votre | vos |
+| 三人称複数 | leur | leur | leurs |
- 所有形容詞は、修飾する名詞によって形が変化する。
- 修飾する語の先頭が母音時や無音のhの時、一部の女性形は括弧内のように変化する。
diff --git a/app/learn/french/08/page.mdx b/app/learn/french/08/page.mdx
index 769cae1..38022bd 100644
--- a/app/learn/french/08/page.mdx
+++ b/app/learn/french/08/page.mdx
@@ -2,15 +2,15 @@ export const title = "所有代名詞";
# 所有代名詞
-*第3章 人称詞と指示詞より*
+_第3章 人称詞と指示詞より_
英語のmineなどにあたり、「〜のもの」と訳される。常に定冠詞とセットで、置き換える「もの」の性数によって形が変化する。
-| | 男性単数 | 女性単数 | 男性複数 | 女性複数 |
-|---|---|---|---|---|
-| 一人称単数 | le mien | la mienne | les miens | les miennes |
-| 二人称単数 | le tien | la tienne | les tiens | les tiennes |
-| 三人称単数 | le sien | la sienne | les siens | les siennes |
-| 一人称複数 | le nôtre | la nôtre | les nôtres | les nôtres |
-| 二人称複数 | le vôtre | la vôtre | les vôtres | les vôtres |
-| 三人称複数 | le leur | la leur | les leurs | les leurs |
+| | 男性単数 | 女性単数 | 男性複数 | 女性複数 |
+| ---------- | -------- | --------- | ---------- | ----------- |
+| 一人称単数 | le mien | la mienne | les miens | les miennes |
+| 二人称単数 | le tien | la tienne | les tiens | les tiennes |
+| 三人称単数 | le sien | la sienne | les siens | les siennes |
+| 一人称複数 | le nôtre | la nôtre | les nôtres | les nôtres |
+| 二人称複数 | le vôtre | la vôtre | les vôtres | les vôtres |
+| 三人称複数 | le leur | la leur | les leurs | les leurs |
diff --git a/app/learn/french/09/page.mdx b/app/learn/french/09/page.mdx
index 29425d9..8945c51 100644
--- a/app/learn/french/09/page.mdx
+++ b/app/learn/french/09/page.mdx
@@ -2,14 +2,14 @@ export const title = "指示形容詞";
# 指示形容詞
-*第3章 人称詞と指示詞より*
+_第3章 人称詞と指示詞より_
「この」「その」「あの」に相当し、フランス語ではこれらすべてが同じ単語で表される。
-| | 男性 | 女性 |
-|---|---|---|
+| | 男性 | 女性 |
+| ---- | -------- | ----- |
| 単数 | ce (cet) | cette |
-| 複数 | ces | ces |
+| 複数 | ces | ces |
- 修飾する名詞が母音始まりの男性単数形の時、発音の都合上cetを用いる。
- 近称と遠称を区別したいときは、修飾する名詞の後ろに-ci(近称)や-là(遠称)をつける。
diff --git a/app/learn/french/10/page.mdx b/app/learn/french/10/page.mdx
index 1bfef46..b8e1d98 100644
--- a/app/learn/french/10/page.mdx
+++ b/app/learn/french/10/page.mdx
@@ -2,20 +2,20 @@ export const title = "指示代名詞";
# 指示代名詞
-*第3章 人称詞と指示詞より*
+_第3章 人称詞と指示詞より_
## パターン1
-| | これ | それ |
-|---|---|---|
-| 無強勢形 | ce | ce |
-| 強勢形 | ceci | cela(ça) |
+| | これ | それ |
+| -------- | ---- | -------- |
+| 無強勢形 | ce | ce |
+| 強勢形 | ceci | cela(ça) |
## パターン2
-| | 男性 | 女性 |
-|---|---|---|
-| 単数 | celui | celle |
-| 複数 | ceux | celles |
+| | 男性 | 女性 |
+| ---- | ----- | ------ |
+| 単数 | celui | celle |
+| 複数 | ceux | celles |
- 近称と遠称を区別したいときには、それぞれの後ろに-ci(近称)や-là(遠称)をつける。
diff --git a/app/learn/french/11/page.mdx b/app/learn/french/11/page.mdx
index df701b8..fbfd347 100644
--- a/app/learn/french/11/page.mdx
+++ b/app/learn/french/11/page.mdx
@@ -2,14 +2,14 @@ export const title = "主な否定表現";
# 主な否定表現
-*第4章 否定文と疑問文より*
+_第4章 否定文と疑問文より_
-| 表現 | 意味 | 例文 |
-|---|---|---|
-| ne~plus | もう〜ない | Je n'habite plus à Lyon. |
-| ne~jamais | 決して〜ない | Je ne travaille jamais le samedi. |
-| ne~rien | 何も〜ない | Ce n'est rien. |
-| ne~personne | 誰も〜ない | Il n'y a personne. |
+| 表現 | 意味 | 例文 |
+| ------------- | ------------ | ---------------------------------------- |
+| ne~plus | もう〜ない | Je n'habite plus à Lyon. |
+| ne~jamais | 決して〜ない | Je ne travaille jamais le samedi. |
+| ne~rien | 何も〜ない | Ce n'est rien. |
+| ne~personne | 誰も〜ない | Il n'y a personne. |
| ne~ni A ni B | AもBも〜ない | Je ne parle ni l'anglais ni le japonais. |
## 疑問詞のない疑問文への答え方
diff --git a/app/learn/french/12/page.mdx b/app/learn/french/12/page.mdx
index e9f98b2..8b54b0c 100644
--- a/app/learn/french/12/page.mdx
+++ b/app/learn/french/12/page.mdx
@@ -2,20 +2,20 @@ export const title = "疑問詞一覧";
# 疑問詞一覧
-*第4章 否定文と疑問文より*
+_第4章 否定文と疑問文より_
-| 疑問詞 | 意味 | 例文 |
-|---|---|---|
-| qui | 誰 | Qui est là ? |
-| que | 何 | Qu'est-ce que c'est ? |
-| quand | いつ | Quand allez-vous au Japon ? |
-| où | どこ | Où habites-tu ? |
-| combien | いくつ | Combien d'enfants avez-vous ? |
-| pourquoi | なぜ | Pourquoi pleures-tu ? |
-| comment | どう | Comment allez-vous ? |
-| quel | どの | Quelle voiture avez-vous achetée ? |
-| lequel | どれ | Laquelle de ces voitures préférez-vous ? |
-| quoi | 何 | Avec quoi mangez-vous ce plat ? |
+| 疑問詞 | 意味 | 例文 |
+| -------- | ------ | ---------------------------------------- |
+| qui | 誰 | Qui est là ? |
+| que | 何 | Qu'est-ce que c'est ? |
+| quand | いつ | Quand allez-vous au Japon ? |
+| où | どこ | Où habites-tu ? |
+| combien | いくつ | Combien d'enfants avez-vous ? |
+| pourquoi | なぜ | Pourquoi pleures-tu ? |
+| comment | どう | Comment allez-vous ? |
+| quel | どの | Quelle voiture avez-vous achetée ? |
+| lequel | どれ | Laquelle de ces voitures préférez-vous ? |
+| quoi | 何 | Avec quoi mangez-vous ce plat ? |
- quelとlequelは性数変化する。
- quoiは前置詞の目的語部分を質問するときに使う。
diff --git a/app/learn/french/13/page.mdx b/app/learn/french/13/page.mdx
index 524622a..26b7df1 100644
--- a/app/learn/french/13/page.mdx
+++ b/app/learn/french/13/page.mdx
@@ -2,16 +2,16 @@ export const title = "命令形の不規則活用";
# 命令形の不規則活用
-*第5章 命令文より*
+_第5章 命令文より_
大半の動詞は直説法現在形と同型で命令形を作るが、以下の動詞は接続法の語形を元に命令形を作る。
-| | 二人称単数命令形 | 二人称複数命令形 | 一人称複数命令形 |
-|---|---|---|---|
-| être | sois | soyez | soyons |
-| avoir | aie | ayez | ayons |
-| savoir | sache | sachez | sachons |
-| vouloir | veuille | veuillez | veuillons |
+| | 二人称単数命令形 | 二人称複数命令形 | 一人称複数命令形 |
+| ------- | ---------------- | ---------------- | ---------------- |
+| être | sois | soyez | soyons |
+| avoir | aie | ayez | ayons |
+| savoir | sache | sachez | sachons |
+| vouloir | veuille | veuillez | veuillons |
- veuilleとveuillonsについてはほとんど使用されない。
- Ayez du courage ! (元気を出してください。)
diff --git a/app/learn/french/14/page.mdx b/app/learn/french/14/page.mdx
index 256c14e..6fed985 100644
--- a/app/learn/french/14/page.mdx
+++ b/app/learn/french/14/page.mdx
@@ -2,15 +2,15 @@ export const title = "直説法半過去形の活用";
# 直説法半過去形の活用
-*第6章 時制より*
+_第6章 時制より_
語幹は直説法現在形の一人称複数形の語幹と同じ(êtreだけ例外でét-)。
-| 人称 | 語尾 | 例(donner) |
-|---|---|---|
-| 一人称単数 | -ais | donnais |
-| 二人称単数 | -ais | donnais |
-| 三人称単数 | -ait | donnait |
-| 一人称複数 | -ions | donnions |
-| 二人称複数 | -iez | donniez |
-| 三人称複数 | -aient | donnaient |
+| 人称 | 語尾 | 例(donner) |
+| ---------- | ------ | ------------ |
+| 一人称単数 | -ais | donnais |
+| 二人称単数 | -ais | donnais |
+| 三人称単数 | -ait | donnait |
+| 一人称複数 | -ions | donnions |
+| 二人称複数 | -iez | donniez |
+| 三人称複数 | -aient | donnaient |
diff --git a/app/learn/french/15/page.mdx b/app/learn/french/15/page.mdx
index f1a2cd6..1416eba 100644
--- a/app/learn/french/15/page.mdx
+++ b/app/learn/french/15/page.mdx
@@ -2,7 +2,7 @@ export const title = "直説法単純未来形の活用";
# 直説法単純未来形の活用
-*第6章 時制より*
+_第6章 時制より_
語幹の作り方:
@@ -10,11 +10,11 @@ export const title = "直説法単純未来形の活用";
- -ir動詞:原型からrをとったものを語幹にする
- reで終わる動詞:原型からreを取り除いたものを語幹にする
-| 人称 | 語尾 | 例(donner) | 例(finir) | 例(être) | 例(avoir) |
-|---|---|---|---|---|---|
-| 一人称単数 | -(e)rai | donnerai | finirai | serai | aurai |
-| 二人称単数 | -(e)ras | donneras | finiras | seras | auras |
-| 三人称単数 | -(e)ra | donnera | finira | sera | aura |
-| 一人称複数 | -(e)rons | donnerons | finirons | serons | aurons |
-| 二人称複数 | -(e)rez | donnerez | finirez | serez | aurez |
-| 三人称複数 | -(e)ront | donneront | finiront | seront | auront |
+| 人称 | 語尾 | 例(donner) | 例(finir) | 例(être) | 例(avoir) |
+| ---------- | -------- | ------------ | ----------- | ---------- | ----------- |
+| 一人称単数 | -(e)rai | donnerai | finirai | serai | aurai |
+| 二人称単数 | -(e)ras | donneras | finiras | seras | auras |
+| 三人称単数 | -(e)ra | donnera | finira | sera | aura |
+| 一人称複数 | -(e)rons | donnerons | finirons | serons | aurons |
+| 二人称複数 | -(e)rez | donnerez | finirez | serez | aurez |
+| 三人称複数 | -(e)ront | donneront | finiront | seront | auront |
diff --git a/app/learn/french/16/page.mdx b/app/learn/french/16/page.mdx
index 299acd9..8a9d7cb 100644
--- a/app/learn/french/16/page.mdx
+++ b/app/learn/french/16/page.mdx
@@ -2,7 +2,7 @@ export const title = "比較級で特殊な変化をする形容詞・副詞";
# 比較級で特殊な変化をする形容詞・副詞
-*第8章 比較より*
+_第8章 比較より_
- bonの優等比較級:meilleur(×plus bon)
- bienの優等比較級:mieux(×plus bien)
diff --git a/app/learn/french/17/page.mdx b/app/learn/french/17/page.mdx
index 939630a..8821a82 100644
--- a/app/learn/french/17/page.mdx
+++ b/app/learn/french/17/page.mdx
@@ -2,7 +2,7 @@ export const title = "現在分詞・過去分詞の作り方";
# 現在分詞・過去分詞の作り方
-*第10章 分詞より*
+_第10章 分詞より_
## 現在分詞
diff --git a/app/learn/french/18/page.mdx b/app/learn/french/18/page.mdx
index 5ca8eba..a342929 100644
--- a/app/learn/french/18/page.mdx
+++ b/app/learn/french/18/page.mdx
@@ -2,17 +2,17 @@ export const title = "条件法現在形の活用";
# 条件法現在形の活用
-*第11章 条件法より*
+_第11章 条件法より_
作り方:「単純未来形の前半部分(rまで)+半過去形の語尾」
-| 人称 | 例(donner) | 例(finir) | 例(être) | 例(avoir) | 例(faire) |
-|---|---|---|---|---|---|
-| 一人称単数 | donnerais | finirais | serais | aurais | ferais |
-| 二人称単数 | donnerais | finirais | serais | aurais | ferais |
-| 三人称単数 | donnerait | finirait | serait | aurait | ferait |
-| 一人称複数 | donnerions | finirions | serions | aurions | ferions |
-| 二人称複数 | donneriez | finiriez | seriez | auriez | feriez |
-| 三人称複数 | donneraient | finiraient | seraient | auraient | feraient |
+| 人称 | 例(donner) | 例(finir) | 例(être) | 例(avoir) | 例(faire) |
+| ---------- | ------------ | ----------- | ---------- | ----------- | ----------- |
+| 一人称単数 | donnerais | finirais | serais | aurais | ferais |
+| 二人称単数 | donnerais | finirais | serais | aurais | ferais |
+| 三人称単数 | donnerait | finirait | serait | aurait | ferait |
+| 一人称複数 | donnerions | finirions | serions | aurions | ferions |
+| 二人称複数 | donneriez | finiriez | seriez | auriez | feriez |
+| 三人称複数 | donneraient | finiraient | seraient | auraient | feraient |
- 条件法過去形は「avoir(être)の条件法現在形+動詞の過去分詞形」で作成可能。
diff --git a/app/learn/french/19/page.mdx b/app/learn/french/19/page.mdx
index 60e1820..e017fd7 100644
--- a/app/learn/french/19/page.mdx
+++ b/app/learn/french/19/page.mdx
@@ -2,16 +2,16 @@ export const title = "接続法現在形の活用";
# 接続法現在形の活用
-*第12章 接続法より*
+_第12章 接続法より_
-| 人称 | 語幹 | 語尾 | 特殊形(être) | 特殊形(avoir) |
-|---|---|---|---|---|
-| 一人称単数 | 直説法現在形3人称複数形の語幹と同様 | -e | sois | aie |
-| 二人称単数 | 直説法現在形3人称複数形の語幹と同様 | -es | sois | aies |
-| 三人称単数 | 直説法現在形3人称複数形の語幹と同様 | -e | soit | ait |
-| 一人称複数 | 直説法現在形1人称複数形の語幹と同様 | -ions | soyons | ayons |
-| 二人称複数 | 直説法現在形1人称複数形の語幹と同様 | -iez | soyez | ayez |
-| 三人称複数 | 直説法現在形3人称複数形の語幹と同様 | -ent | soient | aient |
+| 人称 | 語幹 | 語尾 | 特殊形(être) | 特殊形(avoir) |
+| ---------- | ------------------------------------ | ----- | -------------- | --------------- |
+| 一人称単数 | 直説法現在形3人称複数形の語幹と同様 | -e | sois | aie |
+| 二人称単数 | 直説法現在形3人称複数形の語幹と同様 | -es | sois | aies |
+| 三人称単数 | 直説法現在形3人称複数形の語幹と同様 | -e | soit | ait |
+| 一人称複数 | 直説法現在形1人称複数形の語幹と同様 | -ions | soyons | ayons |
+| 二人称複数 | 直説法現在形1人称複数形の語幹と同様 | -iez | soyez | ayez |
+| 三人称複数 | 直説法現在形3人称複数形の語幹と同様 | -ent | soient | aient |
- 語幹は不規則でこの通りにならないものもあるが、語尾は規則的である。
- 単数形と三人称複数形の語尾は直説法現在形と同じで、一人称複数、二人称複数の語尾は半過去形と同じである。
diff --git a/app/learn/french/20/page.mdx b/app/learn/french/20/page.mdx
index 3893cfc..3471559 100644
--- a/app/learn/french/20/page.mdx
+++ b/app/learn/french/20/page.mdx
@@ -2,16 +2,16 @@ export const title = "不定表現一覧";
# 不定表現一覧
-*第13章 不定表現より*
+_第13章 不定表現より_
-| 不定表現 | 意味 | 補足 |
-|---|---|---|
-| aucun | いかなる(〜ない) | 否定文で用いられる/原則単数名詞を修飾する/pasと共には使えない |
-| quelque | いくつかの、いくらかの/ある | 前者は可算複数形または不可算名詞、後者は可算単数形または不可算名詞を伴う |
-| n'importe | 〜でも(よい) | 後ろには疑問詞が続く |
-| chaque | それぞれの | 不定形容詞であり、複数形は存在しない |
-| chacun | それぞれの | 不定代名詞であり、複数形は存在しない |
-| tout | すべての | 後ろに定冠詞付きの名詞を伴ってそれを修飾する |
+| 不定表現 | 意味 | 補足 |
+| --------- | ---------------------------- | ------------------------------------------------------------------------ |
+| aucun | いかなる(〜ない) | 否定文で用いられる/原則単数名詞を修飾する/pasと共には使えない |
+| quelque | いくつかの、いくらかの/ある | 前者は可算複数形または不可算名詞、後者は可算単数形または不可算名詞を伴う |
+| n'importe | 〜でも(よい) | 後ろには疑問詞が続く |
+| chaque | それぞれの | 不定形容詞であり、複数形は存在しない |
+| chacun | それぞれの | 不定代名詞であり、複数形は存在しない |
+| tout | すべての | 後ろに定冠詞付きの名詞を伴ってそれを修飾する |
- Il n'y a aucune solution à ce problème.
- J'ai encore quelques questions à vous poser.
diff --git a/app/learn/french/21/page.mdx b/app/learn/french/21/page.mdx
index 8d5b3d4..eab63d7 100644
--- a/app/learn/french/21/page.mdx
+++ b/app/learn/french/21/page.mdx
@@ -2,16 +2,16 @@ export const title = "中性代名詞一覧";
# 中性代名詞一覧
-*第16章 中性代名詞より*
+_第16章 中性代名詞より_
中性代名詞は「性数一致しない代名詞」のこと。
-| 中性代名詞 | 指示対象 | 例文 |
-|---|---|---|
-| en | 前置詞「de」+定名詞(句) | J'en viens.(私はそこから来ました。) |
-| en | 同類を表す不定名詞(句) | Avez-vous des amis ? -Oui, j'en ai.(あなたは友達がいますか。-はい、います。) |
-| y | 前置詞「à」+定名詞(句) | On y compare la vie.(人生はそれにたとえられる。) |
-| le | 文脈全体 | Je lui ai téléphoné. -Je l'ai fait par précaution.(私は彼に電話をした。-私は念のためそうした。) |
-| le | 形容詞 | Êtes-vous fatigué ? -Oui, je le suis.(あなたは疲れていますか。-はい、疲れています。) |
+| 中性代名詞 | 指示対象 | 例文 |
+| ---------- | -------------------------- | ------------------------------------------------------------------------------------------------- |
+| en | 前置詞「de」+定名詞(句) | J'en viens.(私はそこから来ました。) |
+| en | 同類を表す不定名詞(句) | Avez-vous des amis ? -Oui, j'en ai.(あなたは友達がいますか。-はい、います。) |
+| y | 前置詞「à」+定名詞(句) | On y compare la vie.(人生はそれにたとえられる。) |
+| le | 文脈全体 | Je lui ai téléphoné. -Je l'ai fait par précaution.(私は彼に電話をした。-私は念のためそうした。) |
+| le | 形容詞 | Êtes-vous fatigué ? -Oui, je le suis.(あなたは疲れていますか。-はい、疲れています。) |
- enが同類を表す不定名詞(句)を置き換える場合で、後ろに形容詞が付いている場合は、形容詞は「de+形容詞」の形で残る。
diff --git a/app/learn/french/layout.tsx b/app/learn/french/layout.tsx
index 4467384..c2a986c 100644
--- a/app/learn/french/layout.tsx
+++ b/app/learn/french/layout.tsx
@@ -5,16 +5,10 @@ const language = getLanguage("french");
// フランス語セクション専用レイアウト
// カード型コンテナで囲み、globals.css の .french-content で見出し・表・リストを装飾する
// (他言語は components/SectionLayout.tsx の共通レイアウトのまま)
-export default function FrenchSectionLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
+export default function FrenchSectionLayout({ children }: { children: React.ReactNode }) {
return (
-
- {language?.label}
-
+ {language?.label}
{children}
diff --git a/app/learn/german/01/page.mdx b/app/learn/german/01/page.mdx
index 264b23e..f01e9cb 100644
--- a/app/learn/german/01/page.mdx
+++ b/app/learn/german/01/page.mdx
@@ -2,11 +2,11 @@ export const title = "名詞の性の語尾による判別";
# 名詞の性の語尾による判別
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
ものの名詞は男性・女性を直観的に判断できないため、語尾によってある程度判別する。(例外もある)
-| 語尾 | 性 |
-|---|---|
-| -age、-ment、-eau、-teur | 男性名詞 |
+| 語尾 | 性 |
+| ------------------------------- | -------- |
+| -age、-ment、-eau、-teur | 男性名詞 |
| -tion、-sion、-té、-esse、-ette | 女性名詞 |
diff --git a/app/learn/german/layout.tsx b/app/learn/german/layout.tsx
index 372edd3..afc346c 100644
--- a/app/learn/german/layout.tsx
+++ b/app/learn/german/layout.tsx
@@ -3,16 +3,10 @@ import { getLanguage } from "@/app/learn/languages";
const language = getLanguage("german");
// ドイツ語セクション専用レイアウト(各言語ディレクトリの layout.tsx はファイル自体が必須)
-export default function GermanSectionLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
+export default function GermanSectionLayout({ children }: { children: React.ReactNode }) {
return (
-
- {language?.label}
-
+ {language?.label}
{children}
);
diff --git a/app/learn/page.tsx b/app/learn/page.tsx
index 4c18de8..5c7a0ac 100644
--- a/app/learn/page.tsx
+++ b/app/learn/page.tsx
@@ -13,7 +13,11 @@ export default function LearnPage() {
{LANGUAGES.map((language) => (
-
+
{language.label}
))}
diff --git a/app/learn/spanish/01/page.mdx b/app/learn/spanish/01/page.mdx
index 264b23e..f01e9cb 100644
--- a/app/learn/spanish/01/page.mdx
+++ b/app/learn/spanish/01/page.mdx
@@ -2,11 +2,11 @@ export const title = "名詞の性の語尾による判別";
# 名詞の性の語尾による判別
-*第1章 品詞と文型より*
+_第1章 品詞と文型より_
ものの名詞は男性・女性を直観的に判断できないため、語尾によってある程度判別する。(例外もある)
-| 語尾 | 性 |
-|---|---|
-| -age、-ment、-eau、-teur | 男性名詞 |
+| 語尾 | 性 |
+| ------------------------------- | -------- |
+| -age、-ment、-eau、-teur | 男性名詞 |
| -tion、-sion、-té、-esse、-ette | 女性名詞 |
diff --git a/app/learn/spanish/layout.tsx b/app/learn/spanish/layout.tsx
index d4f2a61..2cf4186 100644
--- a/app/learn/spanish/layout.tsx
+++ b/app/learn/spanish/layout.tsx
@@ -3,16 +3,10 @@ import { getLanguage } from "@/app/learn/languages";
const language = getLanguage("spanish");
// スペイン語セクション専用レイアウト(各言語ディレクトリの layout.tsx はファイル自体が必須)
-export default function SpanishSectionLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
+export default function SpanishSectionLayout({ children }: { children: React.ReactNode }) {
return (
-
- {language?.label}
-
+ {language?.label}
{children}
);
diff --git a/app/page.tsx b/app/page.tsx
index dc68008..8b06d73 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -35,9 +35,7 @@ export default function Home() {
仮画像
FR → JA
-
- liberté
-
+ liberté
意味
@@ -49,15 +47,11 @@ export default function Home() {
例文
-
- 自由
-
+ 自由
-
- My単語帳
-
+
My単語帳
意味・発音・例文など複数の軸を持つ、自分だけの単語帳を作成。
@@ -69,10 +63,42 @@ export default function Home() {
単語帳を作ってみる
-
-
-
-
+
+
+
+
@@ -118,10 +144,42 @@ export default function Home() {
教材を見てみる
-
-
-
-
+
+
+
+
@@ -129,4 +187,4 @@ export default function Home() {
);
-}
\ No newline at end of file
+}
diff --git a/components/Footer.tsx b/components/Footer.tsx
index 2f574fa..a7b7086 100644
--- a/components/Footer.tsx
+++ b/components/Footer.tsx
@@ -4,10 +4,9 @@ import Link from "next/link";
const NAV_LINKS = [
{ href: "https://forms.gle/HnspDy2kNqQxPCWA8", label: "ご意見" },
{ href: "https://utcode.net/", label: "ut.code():" },
- { href: "https://x.com/utokyo_code", label: "公式X"},
+ { href: "https://x.com/utokyo_code", label: "公式X" },
];
-
export default function Footer() {
return (
);
-}
\ No newline at end of file
+}
diff --git a/components/my-notebooks/DeleteNotebookButton.tsx b/components/my-notebooks/DeleteNotebookButton.tsx
index f6afc42..0ac5e5c 100644
--- a/components/my-notebooks/DeleteNotebookButton.tsx
+++ b/components/my-notebooks/DeleteNotebookButton.tsx
@@ -8,7 +8,11 @@ export default function DeleteNotebookButton({ notebookId }: { notebookId: strin