blob: e46299beb661ace02d80d1ad22049bf237b0615b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
# 安竹洋平 公式サイト 編集ルール
## 文体・表現
- ベースの文体は「です・ます」調(敬語)
- 「残念ながら」「非常に遅い」「拒否している」など嫌味・批判的な表現は避け、客観的事実として書く
- 人物には「氏」をつける
- 見出しに「」は使わない
## ディスレクシアについてのコンテンツについて
- /about-dyslexia/以下の、「ディスレクシアについて」の項目中のコンテンツ(ページ)については次を適用する。
- 旧mdbook(C:\Users\yohei\Desktop\ZedPlayground\reference-materials\dyslexiaのmdbookソース)の内容を**必ず参照**し、そこにある文章・リンク・引用を優先して使う
- 旧mdbookにない内容を勝手に追加しない。省かれている記述があれば追加する
- 引用は `>` ブロッククォートまたは `<div class="bln bleft dyslexia">` 吹き出しで明示し、出典リンクを必ず併記する
- 吹き出しは `<div class="bln bleft dyslexia"><span class="tail-outer"></span>` を使用
- 色はアンバー系(CSS変数 `--bubble-dyslexia-bg` 等で定義済み)
- 吹き出しには必ず `<span class="tail-outer"></span>` を入れる
- 出典は吹き出しの後に `— 出典名` 形式で書く
- 楽天アフィリエイトのURL形式: `https://hb.afl.rakuten.co.jp/ichiba/54fb1f56.abf524ab.54fb1f57.aed11c5d/_RTLink136060?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2FNUMBER%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9`
- アフィリエイト注記: 「リンクからの収益は、ディスレクシアの周知活動およびサイト運営費に充てられます」
## アフィリエイト
- 楽天アフィリエイトID: `54fb1f56.abf524ab.54fb1f57.aed11c5d`
- 書籍リンクには `target="_blank" rel="nofollow sponsored noopener"` を付与
- アフィリエイト注記: 「リンクからの収益は、安竹洋平の政治活動及び本サイトの運営費に充てられます」
## ノート(:::note)
- `:::note[タイトル]` ではなく、以下形式でTOCに表示させる:
```
:::note
##### タイトル
本文
:::
```
## 実績ページ(○○の軌跡)
- フロントマター: `title`, `description`, `tableOfContents: true`
- 冒頭にアイキャッチ画像(`<img>` + 画像クレジットの `<p class="image-credit">`)
- 構成: 冒頭説明 → タイムライン(表) → 詳細セクション → 「成果」表 → 「今後の課題」 → 「関連リンク」 → `[← 実績ページに戻る](/jisseki/)`
- アイキャッチ画像は `public/img/` に配置、参照は `/img/filename.png`
- 画像のダウンロード元(イラストAC等)を必ずクレジット表記
## SEO
- `@astrojs/sitemap` によるサイトマップ自動生成(`astro.config.mjs` に追加済み)
- `public/robots.txt` に sitemap URL を記載
- OGP 画像・JSON-LD 構造化データは `astro.config.mjs` の `head` で設定
- Google Search Console への登録・サイトマップ送信は手動で行う
---
# 画像の取り扱い(技術編)
## ファイル名
- **短くすること**。長いファイル名(例: `kajo-seigen-kanwa-eyecatch.png`)は Astro dev server が 404 を返す
- 推奨: `{topic}-eyecatch.png`(例: `dislexia-eyecatch.png`)
- 極力日本語読みでファイル名を作成する(例: 'asita-yaru.mdx')
## 表示サイズと用途
| 用途 | クラス/CSS | 表示サイズ | 推奨元画像サイズ |
|------|-----------|-----------|----------------|
| 実績カード | `.achievement-img` | 160×110px(SP: 140px高) | 横長 480×330px 以上 |
| 詳細ページアイキャッチ | `max-height:360px; width:100%` | コンテンツ幅(〜720px) | 横長 1440×720px(2:1) |
| ホーム活動グリッド | `.activity-card`(`aspect-ratio:4/3`) | 最小150px幅 | 4:3、600×450px 以上 |
- 全画像 `object-fit: cover` のため枠より大きければ自動トリミング
- 共通の推奨サイズ: **横長 1500×750px**
## 画像コピー方法
```bash
cp "C:/Users/yohei/Desktop/ZedPlayground/reference-materials/{フォルダ}/{ファイル名}" "C:/Users/yohei/Desktop/ZedPlayground/yasutakeyohei.com/public/img/{出力ファイル名}"
```
- `copy_path` ツールは上書きに失敗しやすいため、`cp` が確実
- 上書き時は先に `rm` で削除してから `cp`
## ライセンス表記テンプレート
### 実績カード内
```html
<p class="image-credit" style="font-size:0.7rem;color:#aaa;text-align:right;margin-top:0.5rem;">画像提供:<a href="URL">サイト名</a></p>
```
### 詳細ページアイキャッチ直後
```html
<p class="image-credit" style="font-size:0.75rem;color:#999;text-align:right;margin-bottom:1.5rem;">画像提供:<a href="URL">サイト名</a></p>
```
### よく使う素材サイトURL
- イラストAC: `https://www.ac-illust.com/main/detail.php?id=XXXXXX`
- photoAC: `https://www.photo-ac.com/main/detail/XXXXXX`
- いらすとや: `https://www.irasutoya.com/YYYY/MM/blog-post_XX.html`
- PIXTA: `https://pixta.jp/illustration/XXXXXX`
- かいごイラスト: `https://kaigoirasuto.info/`
---
# ファイル編集の注意点
## edit_file の制限
- **長い行やURLを含むテキストには `edit_file` がマッチしない**ことが多い
- その場合は `write_file` でファイル全体を書き換える
## write_file 使用時の注意
- **ファイル全体の内容を必ず含めること**。一部だけだと内容が消失する
- 事前に `read_file` で全内容を取得してから編集する
- 消失した場合は `git checkout -- {filepath}` で復元可能
## 複数箇所にマッチする場合
- `old_text` が複数行にマッチすると編集に失敗する
- 十分にユニークなコンテキストを含めること
---
# よく使うファイル
- 設定: `astro.config.mjs`
- CSS: `src/styles/custom.css`
- 参照資料: `reference-materials/実績まとめ用資料/`
- 参照資料(小平市議会での安竹の記録): `reference-materials/実績まとめ用資料/議会`
- 旧サイト参照: `reference-materials/移行元documents(docusaurus)/`
- 旧サイト(ディスレクシア)参照: `reference-materials/dyslexiaのmdbookソース/'
- .htaccess: `public/.htaccess`
---
# 一般質問ページの作成ルール
## 年度の区切り
- **3月定例会は前年度に属する**(例: 令和7年3月 → 令和6年度 r6d、令和8年3月 → 令和7年度 r7d)
- 4月以降は新年表記の年度(例: 令和7年6月 → 令和7年度 r7d)
## 新規セッション追加時のインフラ設定
1. `astro.config.mjs` の `year()` に該当月を追加(なければ関数の MONTHS にも追加)
2. `src/content/docs/ippan-situmon/rXd/index.mdx` に該当月へのリンクを追加
3. **`src/components/starlight/Breadcrumbs.astro` の `labelMap` に新年表記を追加**(例: `'r7d': '令和7年度'`)
4. 各ディレクトリに `images/` フォルダを作成
## ページのフォーマット
### 見出し(TOC表示のため Markdown 必須)
- **必ず `###` を使う。HTML の `<h3>` は右側目次に表示されない**
- `### 質問する理由` → 背景説明
- `### ① [質問タイトル]` → 各質問(丸数字付き)
- `#### [サブタイトル]` → 再質問セクション。**「○の再質問:」プレフィックス禁止**
- 丸数字(①②③)は自動生成ID上で `-` に変換される → まとめ表のリンクは `(#-自動生成ID)` 形式
### 吹き出し(MessageBubble)
- 安竹: `speaker="安竹(初回質問)"` または `speaker="安竹(再質問)"`
- **相手側は必ず `align="left"` を使用**。フルネームで(例: `speaker="市長(小林 洋子)" align="left"`)
### スタイル
- まとめ文は です・ます調。2〜3文で簡潔
- 「令和X年X月X日に行ったN件の一般質問のうちのX件目です。」は重複禁止
- 吹き出し内の番号付きリストは Markdown 記法(1. 2. 3.)
- データの多い答弁は表形式に整形
### 部分テンプレート(必須)
主な質疑の先頭に必ず以下を入れる:
```
import Partial from './../../_partial.mdx';
<Partial />
```
### 一問一答形式の構造
```
### 質問する理由
#### [背景サブタイトル]
<MessageBubble speaker="安竹(初回質問)"> ... </MessageBubble>
### ① [質問タイトル]
<MessageBubble speaker="安竹(初回質問)"> 質問文 </MessageBubble>
<MessageBubble speaker="[役職]([名前])" align="left"> 答弁 </MessageBubble>
#### [再質問サブタイトル]
<MessageBubble speaker="安竹(再質問)"> ... </MessageBubble>
<MessageBubble speaker="[役職]([名前])" align="left"> ... </MessageBubble>
```
## 通告書PDFの扱い
1. `reference-materials/実績まとめ用資料/議会/[YYYY年M月定例会]/` から該当PDFを探す
2. `public/pdf/` にコピー(命名: `YYYYMMDD-ippan-situmon-yasutake-N.pdf`)
3. **PyPDF2 で1ページずつ分割**(`YYYYMMDD-ippan-situmon-yasutake-Np.pdf`)し、元の全ページPDFは削除
4. 各質問ページに `<embed src="/pdf/YYYYMMDD-ippan-situmon-yasutake-Np.pdf" class="tukokusyo" type="application/pdf" />`
## FAQ
- **見出しが目次に出ない**: `<h3>` HTMLタグではなく `###` Markdownを使う
- **faviconが出ない**: `astro.config.mjs` の `head` に `<link rel="icon" href="/favicon.ico">` を追加
- **Windowsでステージ時にエラー206**: パス長制限。`git config core.longpaths true` を実行
- **パンくずリストで年度が rXd と表示される**: `Breadcrumbs.astro` の `labelMap` に追加
- **PDFが全ページ表示される**: 1ページずつ分割して `-1p.pdf` 等を使う
---
# デプロイ
## ビルドコマンド
- `npm run build` は `astro build && py removeNullCharacters.py` を実行する
- `removeNullCharacters.py` はビルド後のNull文字除去スクリプト(プロジェクト直下)
## エックスサーバーへのデプロイ
- エックスサーバーは全プランSSH対応だが、サーバー側 rsync は保証されない
- デプロイスクリプト: `deploy.sh`(プロジェクト直下)
- `RSYNC_DEST=user@sv12345.xsrv.jp:public_html/ npm run deploy` で実行
- まず rsync(SSH経由)を試行 → 失敗時は lftp(FTPS)に自動フォールバック
- rsync は `--checksum` を使用(タイムスタンプではなく内容で差分判定)
- `--delete` なしのため、サーバー上のサブドメインディレクトリは**一切削除されない**
- lftp が必要な場合: Git Bash: `pacman -S lftp` / WSL: `sudo apt install lftp`
- SSH鍵を設定しておくとパスワード不要でデプロイ可能
---
# 画像素材の補足
## 海外フリー素材(人物なし用途)
- Unsplash: 欧米人被写体が大半のため、**人物が写っていない写真**(教室・文房具・黒板・自然など)に限定して使う
- Pixabay: Unsplash より多様だが同様の制約
## いらすとやの検索
- 「特別支援学級」といったピンポイントなキーワードではヒットしない場合がある
- 代わりに「学校」「教室」「こども」など、より一般的なキーワードで検索する
- 商用利用は21点まで無料(要クレジット表記)
## 画像選定の基本方針
- 外国人は原則NG。日本のこども・学校・風景のイラスト・写真を優先
- 人物ありの写真が必要な場合は、イラストAC・photoAC・いらすとや等の日本素材サイトを使う
|