summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--content/_index.md2
-rw-r--r--content/about.md18
-rw-r--r--content/notes/_index.md2
-rw-r--r--content/notes/reading-and-questions.md12
-rw-r--r--content/notes/start.md39
-rw-r--r--content/notes/static-sites-and-maintenance.md46
-rw-r--r--content/software/_index.md2
-rw-r--r--content/software/archive-site/index.md36
-rw-r--r--content/software/archive-site/screenshot.svg17
-rw-r--r--content/software/content-notes.md23
-rw-r--r--content/software/ollama-web/capture.gifbin0 -> 23646280 bytes
-rw-r--r--content/software/ollama-web/index.md81
-rw-r--r--doc/Design.md8
-rw-r--r--doc/Specifications.md13
-rw-r--r--doc/content-templates/README.md27
-rw-r--r--doc/content-templates/note.md31
-rw-r--r--doc/content-templates/software.md41
-rw-r--r--sass/_archive.scss8
-rw-r--r--sass/_article.scss22
-rw-r--r--sass/_base.scss2
-rw-r--r--sass/_footer.scss6
-rw-r--r--sass/_layout.scss21
-rw-r--r--sass/_software.scss22
-rw-r--r--sass/_typography.scss6
-rw-r--r--templates/index.html10
-rw-r--r--templates/software/section.html2
-rw-r--r--zola.toml6
28 files changed, 290 insertions, 214 deletions
diff --git a/.gitignore b/.gitignore
index 87174b6..c9253a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/public/
+/draft/
diff --git a/content/_index.md b/content/_index.md
index 7db2929..373c142 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -1,4 +1,4 @@
+++
title = "たかしの記録"
-description = "日々考えたこととか思ったことを記録します"
+description = "日々考えたこととか思ったことの記録や作成したソフトウェアをここに公開します"
+++
diff --git a/content/about.md b/content/about.md
index b0f203c..a6e355c 100644
--- a/content/about.md
+++ b/content/about.md
@@ -3,24 +3,16 @@ title = "About"
template = "page.html"
+++
-## 名前
+## プロフィール
-たかし。ソフトウェアを作り、本を読み、考えたことを記録しています。
+- 名前: 田中 たかし
+- 職業・分野: ソフトウェア開発(生成AI, 組み込み, Web)
+- 趣味: 読書
## このサイトについて
-「たかしの記録」は、日々考えたこと、感じたこと、調べたことと、作成したソフトウェアを長く保存するための個人アーカイブです。更新の速さよりも、あとから読み返せることを大切にしています。
-
-## 関心分野
-
-- 情報工学とソフトウェア
-- 論理学
-- マルクス、資本論、政治経済
-- 地球環境
-- 読書を通じた考察
+{{ config.description }}
## 連絡先
[{{ config.extra.mail }}](mailto:{{ config.extra.mail }})
-
-掲載内容は初期サンプルです。公開時に、プロフィールと連絡先を実際の情報へ差し替えてください。
diff --git a/content/notes/_index.md b/content/notes/_index.md
index 3e6bb92..ad9c45d 100644
--- a/content/notes/_index.md
+++ b/content/notes/_index.md
@@ -5,5 +5,3 @@ sort_by = "date"
template = "notes/section.html"
page_template = "notes/page.html"
+++
-
-分野を固定せず、文章として残したいものをまとめています。
diff --git a/content/notes/reading-and-questions.md b/content/notes/reading-and-questions.md
deleted file mode 100644
index 6f67c0c..0000000
--- a/content/notes/reading-and-questions.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "読書の途中にある問いを残す"
-description = "結論だけでなく、読んでいる途中の問いを記録することについて。"
-date = 2025-11-03
-
-[taxonomies]
-tags = ["読書", "論理学"]
-+++
-
-本を読んだあとに結論だけを書こうとすると、文章を残す機会を逃すことがあります。理解できなかった箇所や、別の文章とのつながりも、その時点での大切な記録です。
-
-問いを未完成のまま残しておけば、次に同じ主題へ戻ったときの出発点になります。
diff --git a/content/notes/start.md b/content/notes/start.md
new file mode 100644
index 0000000..3c9fed9
--- /dev/null
+++ b/content/notes/start.md
@@ -0,0 +1,39 @@
++++
+# 必須。ページ見出し、一覧、HTML titleで使用する。
+title = "はじめまして"
+
+# 任意。一覧とmeta descriptionで使用する。不要なら空文字列のままにする。
+description = "Webサイトを立ち上げた経緯と今後について"
+
+# 必須。公開日とNotesの並び順で使用する。
+date = 2026-08-26
+
+# 任意。記事を更新したときにコメントを解除し、更新日を指定する。
+# updated = 2026-08-22
+
+[taxonomies]
+# 任意。タグ一覧とタグ別ページで使用する。
+tags = []
+
+[extra]
+# 任意。content/を基準にしたSoftwareのMarkdown pathを指定する。
+related_software = []
++++
+
+はじめまして。田中 たかしです。
+このWebサイトを立ち上げた経緯や今後どう運用していくかについて記録します。
+
+このサイトでは、日々考えたことや調べたこと、作成したソフトウェアについて記録します。
+
+短いメモから、技術や社会について少し長く考えた文章まで、内容をひとつの分野に限定せず残していく予定です。
+
+ソフトウェアのソースコードは、自分で管理するGitリポジトリをメインとし、cgitで公開する予定です。
+必要に応じて、これまで利用してきたGitHubにもミラーします。
+この構成を選んだ理由については、別の記事で改めて書くかもしれません。
+
+このサイト自体はVPS上で、DebianとかCaddy、zolaなどを使って運用しているので、
+この生成AIが流通する時代に今更な気がしますが、この辺りの技術的な備忘録も残せていけたらと思います。
+
+更新頻度は決めず、書き残したいことがあるときに更新します。
+
+それでは。 \ No newline at end of file
diff --git a/content/notes/static-sites-and-maintenance.md b/content/notes/static-sites-and-maintenance.md
deleted file mode 100644
index 10fcd7d..0000000
--- a/content/notes/static-sites-and-maintenance.md
+++ /dev/null
@@ -1,46 +0,0 @@
-+++
-title = "静的サイトと長期的な保守"
-description = "仕組みを小さく保つことが、長く書き続けるためにどう役立つか。"
-date = 2026-08-21
-updated = 2026-08-22
-
-[taxonomies]
-tags = ["情報工学", "Web"]
-
-[extra]
-related_software = [
- "software/archive-site/index.md",
-]
-+++
-
-個人サイトの目的は、必ずしも最新の機能を提供することではありません。文章を残し、必要なときに読み返せることが中心なら、静的な構成は今もよく合います。
-
-## 保守する対象を減らす
-
-動的な仕組みを採用すると、アプリケーションだけでなく、実行環境やデータベースも保守対象になります。静的サイトでは、公開環境に置くものを生成済みのHTMLとCSSへ限定できます。
-
-```text
-Markdown → Zola → HTML / CSS / JS
-```
-
-構成を小さくすることは、機能を諦めることではありません。目的に必要な部分を見極め、理解できる範囲に留める判断です[^small].
-
-### 更新の手順
-
-記事を書くときの流れも単純です。
-
-1. Markdownを追加する
-2. `zola check`で内部リンクを確認する
-3. `zola build`で静的ファイルを生成する
-4. 生成物だけを配信する
-
-## 読む時間を中心に置く
-
-長く残す文章では、画面の動きより、行長や余白、リンクの見分けやすさが重要です。このサイトでは[Archive Site](@/software/archive-site/index.md)の設計を通して、その考え方を試しています。
-
-## 参考文献
-
-1. Zola, *Documentation*.
-2. W3C, *Web Content Accessibility Guidelines (WCAG)*.
-
-[^small]: ここでいう「小さい」は、ファイル数ではなく、運用時に理解すべき境界が少ないことを指します。
diff --git a/content/software/_index.md b/content/software/_index.md
index d7e092e..94a9f87 100644
--- a/content/software/_index.md
+++ b/content/software/_index.md
@@ -5,5 +5,3 @@ sort_by = "date"
template = "software/section.html"
page_template = "software/page.html"
+++
-
-ソースコードの正本は自前のcgitで公開し、ここでは人間向けの説明を記録します。
diff --git a/content/software/archive-site/index.md b/content/software/archive-site/index.md
deleted file mode 100644
index ef83fe1..0000000
--- a/content/software/archive-site/index.md
+++ /dev/null
@@ -1,36 +0,0 @@
-+++
-title = "archive-site"
-description = "文章とソフトウェアを長く残すためのZolaサイト。"
-date = 2026-08-21
-include_in_feeds = false
-
-[extra]
-language = ["Zola", "Tera", "SCSS"]
-license = "MIT"
-source = "https://git.takashi-2521.com/archive-site/"
-github_mirror = "https://github.com/takashi-2521/archive-site"
-related_notes = [
- "notes/static-sites-and-maintenance.md",
-]
-+++
-
-## 概要
-
-NotesとSoftwareを中心に、文章と制作物を長期的に保存するための静的サイトです。
-
-![archive-siteの画面構成例](screenshot.svg)
-
-## 作った背景
-
-断片的なメモとソースコードの間にある、設計意図や調査の過程を一か所に残すために作りました。更新頻度が低くても自然に見える、索引としての情報構造を重視しています。
-
-## 開発の過程
-
-ZolaのSection、Page、Taxonomyをそのまま用い、独自のコンテンツ管理層を作らない方針にしました。表示はTera、スタイルはSCSS、テーマ切替だけを小さなJavaScriptで担当します。
-
-## 特徴
-
-- 年別のNotesアーカイブ
-- タグによる横断的な分類
-- NotesとSoftwareの明示的な関連付け
-- JavaScriptなしでも読める本文とナビゲーション
diff --git a/content/software/archive-site/screenshot.svg b/content/software/archive-site/screenshot.svg
deleted file mode 100644
index 18b05c5..0000000
--- a/content/software/archive-site/screenshot.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540" role="img" aria-labelledby="title desc">
- <title id="title">archive-siteの画面構成例</title>
- <desc id="desc">ヘッダー、Notes一覧、Software一覧を罫線で整理した画面。</desc>
- <rect width="960" height="540" fill="#f6f5f1"/>
- <rect x="72" y="54" width="816" height="46" fill="none" stroke="#d6d8da"/>
- <rect x="72" y="144" width="500" height="28" fill="#202124"/>
- <rect x="72" y="194" width="620" height="12" fill="#aeb2b5"/>
- <rect x="72" y="246" width="816" height="1" fill="#d6d8da"/>
- <rect x="72" y="280" width="104" height="18" fill="#315f82"/>
- <rect x="72" y="326" width="816" height="1" fill="#d6d8da"/>
- <rect x="72" y="348" width="104" height="12" fill="#aeb2b5"/>
- <rect x="220" y="344" width="420" height="20" fill="#202124"/>
- <rect x="72" y="392" width="816" height="1" fill="#d6d8da"/>
- <rect x="72" y="414" width="104" height="12" fill="#aeb2b5"/>
- <rect x="220" y="410" width="350" height="20" fill="#202124"/>
- <rect x="72" y="458" width="816" height="1" fill="#d6d8da"/>
-</svg>
diff --git a/content/software/content-notes.md b/content/software/content-notes.md
deleted file mode 100644
index 0d5f6df..0000000
--- a/content/software/content-notes.md
+++ /dev/null
@@ -1,23 +0,0 @@
-+++
-title = "content-notes"
-description = "Markdownだけで考えの断片を整理する小さな道具。"
-date = 2025-10-18
-include_in_feeds = false
-
-[extra]
-language = ["Rust"]
-license = "MIT"
-source = "https://git.takashi-2521.com/content-notes/"
-+++
-
-## 概要
-
-短いメモに日付と題名を付け、単純なディレクトリへ保存するためのコマンドラインツールです。
-
-## 作った背景
-
-思いついたことを残す前に保存場所や形式で迷わないよう、操作を限定した道具が必要でした。
-
-## 開発の過程
-
-保存形式には可搬性の高いMarkdownを採用しました。検索や分類を内部データベースへ閉じ込めず、通常のファイル操作でも扱えることを優先しています。
diff --git a/content/software/ollama-web/capture.gif b/content/software/ollama-web/capture.gif
new file mode 100644
index 0000000..9a086e7
--- /dev/null
+++ b/content/software/ollama-web/capture.gif
Binary files differ
diff --git a/content/software/ollama-web/index.md b/content/software/ollama-web/index.md
new file mode 100644
index 0000000..a0d5b75
--- /dev/null
+++ b/content/software/ollama-web/index.md
@@ -0,0 +1,81 @@
++++
+# 必須。Software名、一覧、HTML titleで使用する。
+title = "ollama-web"
+
+# 任意。一覧とmeta descriptionで使用する。不要なら空文字列のままにする。
+description = """
+Docker や仮想マシンを必要とせず、ホスト OS 上で直接起動して利用できる、軽量な個人向け Ollama Web UI です。
+"""
+
+# 必須。Software一覧の並び順で使用する。
+date = 2026-08-22
+
+# 必須。Notes中心のサイトfeedへSoftwareを含めない。
+include_in_feeds = false
+
+[extra]
+# 任意。詳細ページの「使用言語」に表示する。
+language = ["Python"]
+
+# 任意。詳細ページの「ライセンス」に表示する。
+license = "MIT"
+
+# 必須。ソースコードの正本となるcgit URLを指定する。
+source = "https://git.takashi-2521.com/ollama-web/"
+
+# 任意。GitHub mirrorがない場合は空文字列のままにする。
+github_mirror = "https://github.com/takashi000/ollama-web"
+
+# 任意。content/を基準にしたNotesのMarkdown pathを指定する。
+related_notes = []
++++
+
+## 概要
+
+ブラウザから Ollama とのストリーミングチャット、
+Web 検索・URL 取得、画像・ファイル・PDF 添付、MCP Tool Calling を利用できます。\
+大規模な AI プラットフォームを導入せず、個人が小さな構成で使うことを想定しています。
+
+![実行例](capture.gif)
+
+## 背景
+
+OpenWeb UIなどの生成AIプラットフォームだと、DockerなどのVM環境を立ち上げる必要があるのが、
+結構煩わしく感じられました。\
+最近は、Ollamaでも
+GLM-5.2やDeepseek V4などの比較的エージェンティックに動作するオープンウェイトモデルが使用できます。\
+より、手軽に使えるOllamaフロントエンドアプリケーションを作ろうと思いました。
+
+## 開発の過程
+
+基本的には、CodexとZooCodeを使用して開発しました。
+
+軽量化を重視したため、バックエンドにはStarletteとUvicorn、HTML生成にはJinja2を使用しています。
+フロントエンドも専用フレームワークを導入せず、HTML、CSS、JavaScriptで構成しました。
+
+会話履歴などもセッションで管理できるようにしました。\
+ここもデータベースを導入せずに、
+ディレクトリ単位でJSONを使って保存するようにしました。
+
+見た目のUIに関しては、レスポンシブデザインに対応しました。\
+スマホからだとレンダーできないケースが頻発しました。\
+LLMからの応答を逐次受信するたびにMarkdown全体をHTMLへ変換していたからでした。\
+応答が長くなるほど再描画の負荷が増えました。\
+なので、Markdownとしての最終的なHTML変換は応答完了時にまとめて行いました。\
+ストリーミング中の表示はリアルタイムに更新します。
+
+標準のツールには、Web検索・スクレイピング・PDF抽出を搭載しました。\
+必要になった部分だけを追加取得できるように、ツールにページング機能を付けました。\
+ツール呼び出しが一定回数を超えた場合は、その時点で最終回答を生成させるようにしました。
+
+MCPにも対応しました。プロトコルは2025-11-25版[^1]です。\
+対応したトランスポートは、stdioとStreamable HTTPです。\
+SSEは非推奨でしたので、非対応です。\
+tool/list、tool/callの最小限の機能だけ実装しました。
+[^1]: [Model Context Protocol Specification — 2025-11-25](https://modelcontextprotocol.io/specification/2025-11-25)
+
+PIN認証、CSRF・CSP対策、取得先URLの検査、MCP実行ファイルと接続先の許可リスト化を採用しました。\
+LANからの利用、Web取得、ファイル操作、MCPによる外部プログラムの起動をセキュアに保ちます。\
+任意のプロセスの起動を防ぐため、明示的に許可した実行ファイルだけstdio経由でのMCPに使用できます。
+
+## 参考資料 \ No newline at end of file
diff --git a/doc/Design.md b/doc/Design.md
index bddd04f..f479e72 100644
--- a/doc/Design.md
+++ b/doc/Design.md
@@ -285,6 +285,8 @@ Sectionはdate順にする。
#### 6.3.2 Notes Page front matter
+新規記事用の完全な雛形は`doc/content-templates/note.md`を使用する。
+
```toml
+++
title = "記事タイトル"
@@ -348,6 +350,8 @@ Software一覧の順序は初期状態ではdate順とする。
#### 6.4.1 Software Page front matter
+新規記事用の完全な雛形は`doc/content-templates/software.md`を使用する。
+
```toml
+++
title = "example-software"
@@ -537,6 +541,8 @@ Navigationには`aria-label="メインナビゲーション"`を設定する。
Mail addressは設定値に直接埋め込むか、`config.extra`へ置く。
公開時のspam対策を別途必要と判断した場合のみ変更する。
+Footerは全Pageで同じ高さ・内側余白を使用する。Bodyを縦Flex layoutとし、短いPageではFooterをviewport下端へ配置する。Page固有の本文高や`main`の固定最小高でFooter位置を調整しない。
+
### 8.4 Home Template
`templates/index.html`
@@ -1038,7 +1044,7 @@ body {
Sans-serif。
過度な巨大見出しにしない。
-Home H1だけやや大きくする。
+Pageタイトルは本文を圧迫しない控えめな大きさとする。HomeのH1はheading hierarchy維持のため視覚的に非表示とし、サイト名はHeaderだけに表示する。
### 17.3 Metadata
diff --git a/doc/Specifications.md b/doc/Specifications.md
index 9f9c60f..1cffd4a 100644
--- a/doc/Specifications.md
+++ b/doc/Specifications.md
@@ -140,12 +140,13 @@ Homeはサイト全体の入口・索引として機能する。
以下の順序を基本とする。
-1. サイト名
-2. 短い説明文
-3. 最近のNotes
-4. Software
-5. サイトについての短い説明
-6. Aboutへの導線
+1. 短い説明文
+2. 最近のNotes
+3. Software
+4. サイトについての短い説明
+5. Aboutへの導線
+
+サイト名はHeaderに表示されるため、Home本文では重複表示しない。
### 5.3 トップ説明文
diff --git a/doc/content-templates/README.md b/doc/content-templates/README.md
new file mode 100644
index 0000000..0180943
--- /dev/null
+++ b/doc/content-templates/README.md
@@ -0,0 +1,27 @@
+# コンテンツテンプレート
+
+`content/`へ新しい記事を追加するときに、このディレクトリのMarkdownをコピーして使用する。
+
+| 記事種別 | テンプレート | コピー先 |
+|---|---|---|
+| Notes | `note.md` | `content/notes/<英語ASCIIのslug>.md` |
+| Software | `software.md` | `content/software/<英語ASCIIのslug>.md`、または`content/software/<英語ASCIIのslug>/index.md` |
+
+画像などの記事固有assetがあるSoftwareは、後者のPage Bundle形式を使用し、`index.md`と同じディレクトリへassetを置く。
+
+## 使用手順
+
+1. 対応するテンプレートをコピーする。
+2. Front Matter内の説明コメントを削除する。
+3. 必須項目と日付を実際の値へ置き換える。
+4. 不要な任意項目は空文字列または空配列のまま残せる。
+5. `zola check`で内部リンクとFront Matterを検証する。
+
+関連コンテンツのpathは、`content/`を基準にしたMarkdown pathを指定する。`@/`は付けない。
+
+```toml
+related_software = ["software/example/index.md"]
+related_notes = ["notes/example.md"]
+```
+
+`date`と`updated`はTOMLの日付として記述するため、引用符で囲まない。更新日のないNotesでは、`updated`をコメントのままにする。
diff --git a/doc/content-templates/note.md b/doc/content-templates/note.md
new file mode 100644
index 0000000..8351fe3
--- /dev/null
+++ b/doc/content-templates/note.md
@@ -0,0 +1,31 @@
++++
+# 必須。ページ見出し、一覧、HTML titleで使用する。
+title = "記事タイトル"
+
+# 任意。一覧とmeta descriptionで使用する。不要なら空文字列のままにする。
+description = ""
+
+# 必須。公開日とNotesの並び順で使用する。
+date = 2026-08-22
+
+# 任意。記事を更新したときにコメントを解除し、更新日を指定する。
+# updated = 2026-08-22
+
+[taxonomies]
+# 任意。タグ一覧とタグ別ページで使用する。
+tags = []
+
+[extra]
+# 任意。content/を基準にしたSoftwareのMarkdown pathを指定する。
+related_software = []
++++
+
+導入文を書く。
+
+## 見出し
+
+本文を書く。
+
+## 参考資料
+
+- [資料名](https://example.com/)
diff --git a/doc/content-templates/software.md b/doc/content-templates/software.md
new file mode 100644
index 0000000..56ac280
--- /dev/null
+++ b/doc/content-templates/software.md
@@ -0,0 +1,41 @@
++++
+# 必須。Software名、一覧、HTML titleで使用する。
+title = "software-name"
+
+# 任意。一覧とmeta descriptionで使用する。不要なら空文字列のままにする。
+description = ""
+
+# 必須。Software一覧の並び順で使用する。
+date = 2026-08-22
+
+# 必須。Notes中心のサイトfeedへSoftwareを含めない。
+include_in_feeds = false
+
+[extra]
+# 任意。詳細ページの「使用言語」に表示する。
+language = []
+
+# 任意。詳細ページの「ライセンス」に表示する。
+license = ""
+
+# 必須。ソースコードの正本となるcgit URLを指定する。
+source = "https://git.takashi-2521.com/software-name/"
+
+# 任意。GitHub mirrorがない場合は空文字列のままにする。
+github_mirror = ""
+
+# 任意。content/を基準にしたNotesのMarkdown pathを指定する。
+related_notes = []
++++
+
+## 概要
+
+ソフトウェアの役割と、何ができるものかを書く。
+
+## 背景
+
+解決したかった問題や、制作の目的を書く。
+
+## 開発の過程
+
+設計上の判断、技術選定、実装過程などを書く。
diff --git a/sass/_archive.scss b/sass/_archive.scss
index 32318f5..b31a79d 100644
--- a/sass/_archive.scss
+++ b/sass/_archive.scss
@@ -8,7 +8,7 @@
display: grid;
grid-template-columns: 8rem minmax(0, 1fr);
gap: 1.5rem;
- padding-block: 1.25rem;
+ padding-block: 1rem;
border-bottom: var(--rule);
}
@@ -48,8 +48,8 @@
.archive-year {
display: grid;
grid-template-columns: 7rem minmax(0, 1fr);
- gap: 2rem;
- padding-block: 2rem;
+ gap: 1.5rem;
+ padding-block: 1.5rem;
border-bottom: var(--rule);
}
@@ -69,7 +69,7 @@
}
.empty-state {
- padding-block: 2rem;
+ padding-block: 1.5rem;
border-block: var(--rule);
color: var(--color-muted);
}
diff --git a/sass/_article.scss b/sass/_article.scss
index 91a0ac4..aec78d4 100644
--- a/sass/_article.scss
+++ b/sass/_article.scss
@@ -1,16 +1,16 @@
.article-header {
- margin-bottom: 2.5rem;
+ margin-bottom: 1.75rem;
}
.article-header h1 {
- margin-block: 0.7rem 1.25rem;
+ margin-block: 0.55rem 1rem;
}
.article-dates {
display: flex;
flex-wrap: wrap;
gap: 0.5rem 1.5rem;
- margin-bottom: 1.5rem;
+ margin-bottom: 1rem;
color: var(--color-muted);
font-size: 0.78rem;
}
@@ -21,8 +21,8 @@
}
.toc {
- margin-bottom: 3.5rem;
- padding: 1.25rem 1.5rem;
+ margin-bottom: 2.5rem;
+ padding: 1rem 1.25rem;
border-block: var(--rule);
background: var(--color-surface);
}
@@ -54,7 +54,7 @@
}
.prose > * + * {
- margin-top: 1.45em;
+ margin-top: 1.2em;
}
.prose h2,
@@ -63,13 +63,13 @@
}
.prose h2 {
- margin-top: 3.2em;
- padding-top: 0.8em;
+ margin-top: 2.2em;
+ padding-top: 0.65em;
border-top: var(--rule);
}
.prose h3 {
- margin-top: 2.3em;
+ margin-top: 1.75em;
}
.prose .zola-anchor {
@@ -134,8 +134,8 @@
}
.related-content {
- margin-top: 4rem;
- padding-top: 1.5rem;
+ margin-top: 3rem;
+ padding-top: 1.25rem;
border-top: var(--rule);
}
diff --git a/sass/_base.scss b/sass/_base.scss
index d460c41..5546dec 100644
--- a/sass/_base.scss
+++ b/sass/_base.scss
@@ -1,4 +1,6 @@
body {
+ display: flex;
+ flex-direction: column;
min-height: 100vh;
overflow-x: hidden;
overflow-wrap: anywhere;
diff --git a/sass/_footer.scss b/sass/_footer.scss
index 2d5c475..b82576a 100644
--- a/sass/_footer.scss
+++ b/sass/_footer.scss
@@ -1,5 +1,5 @@
.site-footer {
- margin-top: 4rem;
+ flex: none;
border-top: var(--rule);
color: var(--color-muted);
font-size: 0.85rem;
@@ -10,7 +10,8 @@
align-items: center;
justify-content: space-between;
gap: 1.5rem;
- min-height: 5rem;
+ min-height: 0;
+ padding-block: 1rem;
}
.footer-inner nav {
@@ -24,6 +25,5 @@
flex-direction: column;
justify-content: center;
gap: 0.3rem;
- padding-block: 1rem;
}
}
diff --git a/sass/_layout.scss b/sass/_layout.scss
index 126fa96..eac8eaa 100644
--- a/sass/_layout.scss
+++ b/sass/_layout.scss
@@ -5,7 +5,8 @@
}
.site-main {
- min-height: 65vh;
+ flex: 1 0 auto;
+ min-height: 0;
}
.narrow,
@@ -16,14 +17,10 @@
}
.home-intro {
- padding-block: clamp(4rem, 10vw, 7rem);
+ padding-block: clamp(2.25rem, 5vw, 3.5rem);
border-bottom: var(--rule);
}
-.home-intro h1 {
- margin-bottom: 1rem;
-}
-
.home-intro p {
max-width: 38rem;
}
@@ -32,12 +29,12 @@
.listing-page,
.editorial-page,
.article-page {
- padding-block: clamp(3.5rem, 8vw, 6rem);
+ padding-block: clamp(2.25rem, 5vw, 4rem);
}
.home-sections {
display: grid;
- gap: clamp(4rem, 9vw, 7rem);
+ gap: clamp(3rem, 6vw, 5rem);
}
.section-heading {
@@ -56,7 +53,7 @@
.home-about {
width: min(100%, var(--content-max));
- padding-top: 2rem;
+ padding-top: 1.5rem;
border-top: var(--rule);
}
@@ -66,7 +63,7 @@
}
.page-header {
- margin-bottom: clamp(2.5rem, 6vw, 4.5rem);
+ margin-bottom: clamp(1.75rem, 4vw, 3rem);
}
.page-header h1 {
@@ -74,11 +71,11 @@
}
.editorial-page .page-header {
- margin-bottom: 2.5rem;
+ margin-bottom: 1.75rem;
}
.error-page {
- padding-block: clamp(5rem, 14vw, 10rem);
+ padding-block: clamp(3.5rem, 8vw, 6rem);
}
.error-page .error-code {
diff --git a/sass/_software.scss b/sass/_software.scss
index 4ad6e42..fd704b4 100644
--- a/sass/_software.scss
+++ b/sass/_software.scss
@@ -1,5 +1,5 @@
.software-list-item {
- padding-block: 1.3rem;
+ padding-block: 1rem;
border-bottom: var(--rule);
}
@@ -23,7 +23,7 @@
.software-meta {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
- margin-bottom: 3.5rem;
+ margin-bottom: 2.5rem;
border-block: var(--rule);
}
@@ -32,11 +32,14 @@
grid-template-columns: 7rem minmax(0, 1fr);
gap: 1rem;
padding-block: 0.75rem;
- border-bottom: var(--rule);
}
-.software-meta div:nth-last-child(-n + 2) {
- border-bottom: 0;
+.software-meta div:nth-child(n + 3) {
+ border-top: var(--rule);
+}
+
+.software-meta div:last-child:nth-child(odd) {
+ grid-column: 1 / -1;
}
.software-meta dt {
@@ -59,12 +62,11 @@
gap: 0.3rem;
}
- .software-meta div,
- .software-meta div:nth-last-child(-n + 2) {
- border-bottom: var(--rule);
+ .software-meta div:nth-child(n + 2) {
+ border-top: var(--rule);
}
- .software-meta div:last-child {
- border-bottom: 0;
+ .software-meta div:last-child:nth-child(odd) {
+ grid-column: auto;
}
}
diff --git a/sass/_typography.scss b/sass/_typography.scss
index 4b11814..1bc7f45 100644
--- a/sass/_typography.scss
+++ b/sass/_typography.scss
@@ -9,11 +9,11 @@ h3 {
}
h1 {
- font-size: clamp(2rem, 5vw, 3.25rem);
+ font-size: clamp(1.8rem, 4vw, 2.5rem);
}
h2 {
- font-size: clamp(1.35rem, 3vw, 1.7rem);
+ font-size: clamp(1.25rem, 2.5vw, 1.5rem);
}
h3 {
@@ -38,5 +38,5 @@ time,
.page-header > p,
.home-intro > p {
color: var(--color-muted);
- font-size: 1.08rem;
+ font-size: 1rem;
}
diff --git a/templates/index.html b/templates/index.html
index 3f0c8c6..61bab58 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -9,10 +9,6 @@
{% set software_url = get_url(path='@/software/_index.md') %}
{% set software = get_section(path='software/_index.md') %}
{% set notes = get_section(path='notes/_index.md') %}
-<section class="site-container home-intro" aria-labelledby="home-title">
- <h1 id="home-title">{{ section.title }}</h1>
- <p>{{ section.description }}</p>
-</section>
<div class="site-container home-sections">
<section class="home-section" aria-labelledby="latest-notes">
@@ -52,11 +48,5 @@
<p class="empty-state">Softwareは準備中です。</p>
{% endif %}
</section>
-
- <section class="home-about" aria-labelledby="home-about-title">
- <h2 id="home-about-title">このサイトについて</h2>
- <p>考えたこと、読んだこと、調べたことと、作成したソフトウェアを長期的に残すための個人アーカイブです。</p>
- <a href="{{ about_url }}">Aboutを読む</a>
- </section>
</div>
{% endblock content %}
diff --git a/templates/software/section.html b/templates/software/section.html
index 813f793..e1ec4b4 100644
--- a/templates/software/section.html
+++ b/templates/software/section.html
@@ -19,6 +19,6 @@
{% else %}
<p class="empty-state">Softwareはまだありません。</p>
{% endif %}
- <p class="source-note">ソースコードの正本は各Softwareから自前cgitへ案内します。</p>
+ <p class="source-note">公開先リポジトリ: <a href="{{ config.extra.cgit }}" class="external-link" target="_blank" rel="noopener noreferrer">cgit</a></p>
</div>
{% endblock content %}
diff --git a/zola.toml b/zola.toml
index 7e74e4c..2954b0e 100644
--- a/zola.toml
+++ b/zola.toml
@@ -10,7 +10,9 @@ base_url = "https://www.takashi-2521.com"
# サイト全体のメタデータ。標準feedでも使用される
title = "たかしの記録"
-description = "日々考えたこととか思ったことを記録します"
+description = """
+日々考えたこととか思ったことの記録や作成したソフトウェアをここに公開します。
+"""
default_language = "ja"
# 外部themeは使用しない。空文字でも指定扱いになるため未指定にする
@@ -216,3 +218,5 @@ home_notes_limit = 5
home_software_limit = 4
copyright_year = 2026
mail = "takashi@takashi-2521.com"
+cgit = "https://git.takashi-2521.com"
+github = "https://github.com/takashi000"