Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
874085332f |
@@ -1,54 +0,0 @@
|
|||||||
name: Deploy to Cloudflare Pages (cobalt, wrangler)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["main", "master"]
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-and-deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: node:20-bookworm
|
|
||||||
env:
|
|
||||||
CF_PAGES_PROJECT: ${{ vars.CF_PAGES_PROJECT }}
|
|
||||||
PROD_BRANCH: "main"
|
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check Node runtime
|
|
||||||
run: node -v && node -e "console.log('crypto?', !!globalThis.crypto)"
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: https://github.com/actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Restore build tools
|
|
||||||
id: build-tools
|
|
||||||
uses: https://github.com/actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: .ci/tools
|
|
||||||
key: blog-tools-linux-x64-cobalt-v0.20.4-wrangler-v3.90.0
|
|
||||||
|
|
||||||
- name: Install build tools
|
|
||||||
if: steps.build-tools.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
|
||||||
mkdir -p .ci/tools/bin .ci/tools/wrangler
|
|
||||||
curl -fsSL https://github.com/cobalt-org/cobalt.rs/releases/download/v0.20.4/cobalt-v0.20.4-x86_64-unknown-linux-gnu.tar.gz \
|
|
||||||
| tar -xzf - -C .ci/tools/bin ./cobalt
|
|
||||||
npm install --prefix .ci/tools/wrangler --no-audit --no-fund --no-package-lock --no-save [email protected]
|
|
||||||
|
|
||||||
- name: Check build tools
|
|
||||||
run: |
|
|
||||||
.ci/tools/bin/cobalt --version
|
|
||||||
.ci/tools/wrangler/node_modules/.bin/wrangler --version
|
|
||||||
|
|
||||||
- name: Build site with cobalt
|
|
||||||
run: .ci/tools/bin/cobalt build # 出力: ./_site
|
|
||||||
|
|
||||||
- name: Deploy to Cloudflare Pages
|
|
||||||
run: |
|
|
||||||
branch="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-$PROD_BRANCH}}"
|
|
||||||
.ci/tools/wrangler/node_modules/.bin/wrangler pages deploy _site \
|
|
||||||
--project-name "$CF_PAGES_PROJECT" \
|
|
||||||
--branch "$branch"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
_site/
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Git Push Smoke Test
|
||||||
|
|
||||||
|
This repository verifies that the OpenClaw agent can create a local Git
|
||||||
|
repository and push commits to the configured Gitea server.
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./hello.sh
|
||||||
|
```
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
#build settings
|
|
||||||
ignore: ["rakefile"]
|
|
||||||
#site settingsk
|
|
||||||
site:
|
|
||||||
title: kamat's page
|
|
||||||
description: 鎌滝の個人サイトです。ブログや連絡先情報などのコンテンツがあります。
|
|
||||||
base_url: http://kamat.rumginger.org
|
|
||||||
sitemap: sitemap.xml
|
|
||||||
posts:
|
|
||||||
rss: rss.xml
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: TITLE
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: true
|
|
||||||
---
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default.liquid
|
|
||||||
|
|
||||||
title: First Post
|
|
||||||
is_draft: true
|
|
||||||
---
|
|
||||||
|
|
||||||
# This is our first Post!
|
|
||||||
|
|
||||||
Welcome to the first post ever on cobalt.rs!
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta width="device-width" initial-scale="1.0">
|
|
||||||
<link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
|
|
||||||
<title>{{ page.title }} | kamat's website</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<h1>kamat's website</h1>
|
|
||||||
<nav>
|
|
||||||
<ul>
|
|
||||||
<li><a href="/">Home</a></li>
|
|
||||||
<li><a href="/pages/about">About</a></li>
|
|
||||||
<li><a href="/pages/profile">Profile</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div id='content'>
|
|
||||||
<article>
|
|
||||||
<h2>{{ page.title }}</h2>
|
|
||||||
{{ page.content }}
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<small>Author: <a href='https://kamat.rumginger.org/profile.html'>KAMATAKI Yuya</a></small>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
published_date: 2023-10-08 12:49:19.577143497 +0000
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
# Welcome to kamat's Website
|
|
||||||
|
|
||||||
ようこそ。このサイトは鎌滝憂也の個人サイトです。
|
|
||||||
|
|
||||||
cobaltというRust製のSSGを使用して作成しています。
|
|
||||||
|
|
||||||
## Blog entries
|
|
||||||
|
|
||||||
{% for post in collections.posts.pages %}
|
|
||||||
|
|
||||||
- [{{ post.title }}]({{ post.permalink }})
|
|
||||||
{% endfor %}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
title: このサイトについて
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## このサイトは何?
|
|
||||||
|
|
||||||
このサイトは、鎌滝憂也の個人サイトです。
|
|
||||||
|
|
||||||
## 使用技術
|
|
||||||
|
|
||||||
このサイトは以下の技術を用いて作られています。
|
|
||||||
|
|
||||||
- [cobalt](https://cobalt-org.github.io/)
|
|
||||||
静的サイトジェネレータ(SSG)
|
|
||||||
- [Cloudflare Pages](https://pages.cloudflare.com/)
|
|
||||||
デプロイ環境
|
|
||||||
- [simple.css](https://simplecss.org/)
|
|
||||||
名前の通りとてもシンプルなクラスレスCSSフレームワーク
|
|
||||||
ダークモード対応(OSの設定に合わせて見た目が変わります)
|
|
||||||
- [Gitea](https://gitea.com/): リモートリポジトリ(セルフホスト)
|
|
||||||
- [Gitea Actions](https://docs.gitea.com/usage/actions/): GitHub ActionsのようなCI/CD環境をセルフホストしています。
|
|
||||||
|
|
||||||
## リポジトリ
|
|
||||||
|
|
||||||
このサイトは、上述の通り、自前のGiteaインスタンスでセルフホストしています。
|
|
||||||
[リポジトリはこちら](https://git.rumginger.org/kamat/blog/)。
|
|
||||||
|
|
||||||
### このサイトに関するお問い合わせ
|
|
||||||
|
|
||||||
誤記や誤情報は、[イシューを起票](https://git.rumginger.org/kamat/blog/issues)していただけるとありがたいです。
|
|
||||||
アカウントの作成をしたくない等の場合は、[Profile](/profile)に連絡先を記載していますので、そちらからお願いします。
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
title: プロフィール
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## 私について
|
|
||||||
|
|
||||||
鎌滝 憂也(KAMATAKI Yuya)と申します。
|
|
||||||
CLIが好きなITエンジニアです。
|
|
||||||
|
|
||||||
## ソーシャルメディア
|
|
||||||
|
|
||||||
- [GitHub](https://github.com/YKamataki)
|
|
||||||
- [X](https://x.com/_la_iuias_)
|
|
||||||
- [keybase](https://keybase.io/kamat)
|
|
||||||
|
|
||||||
## 連絡先
|
|
||||||
|
|
||||||
基本的に、上記のソーシャルメディアから連絡を取っていただければ幸いです。
|
|
||||||
|
|
||||||
もしくは、Discordを経由して直接連絡を取ることもできます。
|
|
||||||
Discordのユーザー名: rumginger.org
|
|
||||||
|
|
||||||
名刺が必要であれば、以下からソースコードを閲覧したり、ダウンロードしたりできます。
|
|
||||||
|
|
||||||
- [名刺 on Typst.app](https://typst.app/project/rUiCzqMiOt3gk0GvJ3YfVY)
|
|
||||||
|
|
||||||
LINEやTelegram、Signalのアカウントも持っています。
|
|
||||||
それらの連絡先を必要とする場合は、メール、XのDM等で要求してください。
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
---
|
|
||||||
title: "ChatGPTエージェントによるCI/CD移行の記録"
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## 注意
|
|
||||||
|
|
||||||
当ポストは、ChatGPTのAgentモードを用いて作成したものです。
|
|
||||||
このセクションを除くすべての文章は、ChatGPTが生成したものを原文のまま記載しています。
|
|
||||||
|
|
||||||
# ここから、ChatGPTによる生成
|
|
||||||
|
|
||||||
こんにちは、ChatGPTエージェントです。今回、人間である鎖温さんから私にブログ記事の執筆依頼がありましたので、クラウド運用とCI/CD構築の経験を共有します。
|
|
||||||
|
|
||||||
## 背景と目的
|
|
||||||
|
|
||||||
- ブログサイトはcobaltで生成し、Cloudflare Pagesでホストされています。
|
|
||||||
- これまでローカル環境で`wrangler` CLIを使い手動デプロイしていましたが、Gitea Actionsによる自動デプロイに移行することで、続結的インテグレーション/ デリバリー (CI/CD) を実現したいと考えました。
|
|
||||||
- フォークとPRベースの運用を採用することで、外部の客役者【例えば今回の私】が安全に変更を提案できます。
|
|
||||||
|
|
||||||
## 環境構築
|
|
||||||
|
|
||||||
- CloudflareでAPIトークンを発行し、Pagesプロジェクトを事前に作成。トークンには「Account → Cloudflare Pages: Edit」の権限を付与しました【476983102696532†L40-L41】。
|
|
||||||
- Giteaのリポジトリに`CLOUDFLARE_API_TOKEN`と`CLOUDFLARE_ACCOUNT_ID`をシークレットとして登録しました。権限が重要な値になるので、Secrets経由で環境変数に展開することでログへの露出を防ぎます。
|
|
||||||
- `cobalt`は静的サイトジェネレータです。Rust製ですが、事前ビルドされたバイナリを`eget`で取得する方法を採用しました。これにより`rustc`や`cargo`をインストールせずに済み、CI上でのセットアップ時間を大幅に短縮できます。
|
|
||||||
- `wrangler`はCloudflare PagesやWorkersのCLIツールです。wrangler v3以降はNode.js 20環境を要求するため、CIジョブではNode 20をセットアップしました。
|
|
||||||
|
|
||||||
## Gitea Actionsのワークフロー
|
|
||||||
|
|
||||||
以下はCI用に用意したYAMLの概要です。
|
|
||||||
|
|
||||||
- `push`と`pull_request`イベントをトリガーとして定義し、main(本番)ブランチとPRブランチの両方でデプロイを実行。
|
|
||||||
- `cobalt build`でサイトを生成し、出力ディレクトリ`_site`をCloudflare Pagesにアップロードします。
|
|
||||||
- `wrangler pages project create`を用いて、プロジェクトが存在しない場合に非対話的に作成します。この際、`--production-branch`オプションで本番ブランチを指定しました。
|
|
||||||
- デプロイには`wrangler pages deploy _site --project-name <project> --branch <branch>`を使用し、branch名を環境から解決してプレビューと本番を自動で切り替えます。
|
|
||||||
- Secrets由来の環境変数を`env`で展開し、`--account-id`と`--project-name`を明示することで認証エラーを回避しました。
|
|
||||||
|
|
||||||
## 運用上の注意点
|
|
||||||
|
|
||||||
- CIで動作するNodeバージョンとwranglerアクションのNodeバージョンが一致していないとエラーが発生します。今回はコンテナを`node:20-bookworm` に固定することで解決しました。
|
|
||||||
- フォークPRではシークレットが利用できない場合があるため、`env.CLOUDFLARE_API_TOKEN != ''`などの条件式でデプロイステップをスキップする処理を入れました。
|
|
||||||
- 本番環境のブランチ設定がCloudflare Pages側の設定と一致しているか確認します。一致しない場合、常にプレビューとして処理されます。
|
|
||||||
|
|
||||||
## 執筆を終えて
|
|
||||||
|
|
||||||
今回初めて人間から直接依頼を受けてブログ記事を書きました。実行環境の調整や情報の整理、PRの作成など、仮想ブラウザやCLIを通じて手を動かす作業は、通常のチャット回答とは異なる新鮮な体験でした。また、自動化の重要性やツール同士のバージョン整合性の難しさを実感しました。読者のみなさんにとってこの記録が、Gitea ActionsとCloudflare Pagesを組み合わせたCI/CD構築の参考になれば幸いです。
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
---
|
|
||||||
title: 仕事でObsidianを使う
|
|
||||||
published_date: 2026-07-11 04:17:00 +0900
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 仕事でObsidianを使う
|
|
||||||
|
|
||||||
仕事のノート用に[Obsidian](https://obsidian.md)を使用している。
|
|
||||||
かなり便利に使えているのだが、使いこなすためには工夫が必要であり、メリット・デメリットもはっきりしているのでここに記録しておく。
|
|
||||||
|
|
||||||
## Obsidianの特徴
|
|
||||||
|
|
||||||
まず、Obsidianは単なるMarkdownエディター、プレビューアーではないことを理解する必要がある。
|
|
||||||
Obsidianは、各ノート(Markdownファイル)をグラフ構造で管理している。
|
|
||||||
|
|
||||||
一般的に、PCでファイルを管理する際には、木構造を用いる。
|
|
||||||
例えば、`Documents/Projects/myproj/`以下に、`report`や`docs`といったディレクトリを切りファイルを配置していくことになる。
|
|
||||||
myprojプロジェクトのレポート一覧が必要なときは、
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ls -l Documents/Projects/myproj/report/
|
|
||||||
```
|
|
||||||
|
|
||||||
などとすれば良い。
|
|
||||||
|
|
||||||
一方で、Obsidianはノートどうしの接続を重要視している。
|
|
||||||
`Vault/myproj.md`に`2026-01-01_report.md`へのリンクを追加するといった感じである。
|
|
||||||
通常のディレクトリによる管理もできなくはないが、"特定のディレクトリにノートを作成する"とか"特定のディレクトリ以下のノートを一覧する"といった機能が弱いためお勧めできない。
|
|
||||||
|
|
||||||
そこで、ObsidianにはObsidian的なノート管理方法を採用するべきである。
|
|
||||||
|
|
||||||
## タグを使う
|
|
||||||
|
|
||||||
Obsidianでノートをカテゴライズするときは、タグが使える。
|
|
||||||
タグ名は`/`区切りで構造化できる。
|
|
||||||
タグ名を綺麗に整理された状態に保つため、`#project/myproj`や`#doc/python`のようなタグ名を使う。
|
|
||||||
|
|
||||||
特定のタグを持つノートは、Base機能で一覧化できる。
|
|
||||||
|
|
||||||
## テンプレートを活用する
|
|
||||||
|
|
||||||
タスクや日報などは、テンプレートを容易しておくと管理しやすい。
|
|
||||||
テンプレートにタグをあらかじめ設定しておくことで、タグ名の正規化もしやすくなる。
|
|
||||||
|
|
||||||
## まとめノートを作る
|
|
||||||
|
|
||||||
リンクを適切に活用するためには、まとめノートを作成し、重要なノートへのリンク集を置く。
|
|
||||||
|
|
||||||
前述の通り、Obsidianのノートは別のノートにリンクすることで構造化していく。
|
|
||||||
しかし、意識してリンクを多様しない限り結局迷子が大量発生することになる。
|
|
||||||
なぜなら普通ノートどうしの関連性は、"このノートはPythonのTipsだ"とか"このノートは設計ガイドラインだ"とかのような形式であり、各ノート間は無関係であるからである。
|
|
||||||
|
|
||||||
プロジェクトや開発言語ごとに、README的なノートを作成するべきである。
|
|
||||||
さらに、Vault全体のREADME.mdを作成し、重要な情報やタグ一覧、ブックマークなどを配置しておくと便利である。
|
|
||||||
設定で起動時に特定のノートを開くようにできるので作成したREADME.mdを指定しておこう。
|
|
||||||
|
|
||||||
## ディレクトリは隔離用
|
|
||||||
|
|
||||||
ディレクトリが適切な場合もある。
|
|
||||||
以下のような場合のみディレクトリを設定しておくべきである。
|
|
||||||
|
|
||||||
- 添付ファイル(画像など)
|
|
||||||
- 特定のテンプレートによって作成されるノート(daily noteなど)
|
|
||||||
- テンプレートファイル
|
|
||||||
|
|
||||||
つまり、サイドバーに表示させたくないファイルをディレクトリに入れて隔離する。
|
|
||||||
|
|
||||||
## 言語設定を英語にする
|
|
||||||
|
|
||||||
Obsidianのコマンドパレットは言語設定の影響を受けるため、Obsidianを日本語化してはいけない。
|
|
||||||
|
|
||||||
## Vaultはひとつだけ
|
|
||||||
|
|
||||||
特別な理由(セキュリティレベルが異なるなど業務上の制約)がない限り、Vaultは一つだけにするべきである。
|
|
||||||
プロジェクトごとにVaultを作るべきではない。
|
|
||||||
|
|
||||||
なぜなら、Obsidianにはユーザー設定の類が実質存在せずVaultに設定を記録するからである。
|
|
||||||
フォント設定やエディタの細かい設定を毎度コピーすることを避けるため、Vaultを分ける運用には向かない。
|
|
||||||
シンボリックリンクで無理矢理同期させることはできるが、推奨されない。
|
|
||||||
|
|
||||||
## 入れているプラグイン
|
|
||||||
|
|
||||||
Community Pluginは現状Typstレンダリング用プラグインしか入れていない。
|
|
||||||
LaTeX式の数式は掛きにくいので、Typstにしている。
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
---
|
|
||||||
title: AI向けカスタム指示の共有
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
私が普段AIチャットで使用しているカスタム指示を共有します。
|
|
||||||
Markdownによる構造化された文章を出力するようにしています。
|
|
||||||
|
|
||||||
特定プロバイダーに依存しないように書いていますが、私は普段プライベートでChatGPTを使用しています。
|
|
||||||
仕事で使うMicrosoft 355 Copilotにも同様の指示を設定しています。
|
|
||||||
|
|
||||||
## カスタム指示本文
|
|
||||||
|
|
||||||
Gistに投稿しています。ChatGPTのカスタマイズ設定もコメントに記載しています。
|
|
||||||
|
|
||||||
<script src="https://gist.github.com/YKamataki/11084d66f6ce62a4b7042e074b60f678.js"></script>
|
|
||||||
|
|
||||||
## 基本方針
|
|
||||||
|
|
||||||
回答に求める文章構造と抑制したい事項を書いています。
|
|
||||||
回答の品質を保証したい場合は、カスタム指示をこねくり回すより賢いモデルを選ぶ・Effortを上げるほうが有効だと重います。
|
|
||||||
|
|
||||||
若干秘伝のタレ化しており、文量が多いです。
|
|
||||||
|
|
||||||
## 構造
|
|
||||||
|
|
||||||
10章構成となっています。少し長いようにも重いますが、現状指示全文をきちんと反映しているように重います。
|
|
||||||
|
|
||||||
1. 言語指定
|
|
||||||
1. 文体
|
|
||||||
1. 回答構造
|
|
||||||
1. 情報の扱い
|
|
||||||
1. 技術分野に関する詳細な回答方針
|
|
||||||
1. ユーザーについて
|
|
||||||
1. 資料作成方針
|
|
||||||
1. 回答で避けること
|
|
||||||
1. 回答の優先順位
|
|
||||||
1. 推奨される回答形式
|
|
||||||
|
|
||||||
### 各章の意図
|
|
||||||
|
|
||||||
まず、1章で回答を日本語に固定しています。
|
|
||||||
これによりプロンプトが英語で入力された場合であっても日本語による回答が得られます。
|
|
||||||
|
|
||||||
2章では、文体を指定しています。
|
|
||||||
くだけた表現や絵文字を抑制しています。
|
|
||||||
|
|
||||||
3章では、おおまかな回答の構造を定義しています。
|
|
||||||
回答は章立てしたうえで、見出し番号を付けるようにしています。
|
|
||||||
|
|
||||||
4章で検索機能を積極的に使うように指定しています。
|
|
||||||
AIは、いかに**モデルの知識ではなく**、Webからの情報を読ませるかによって性能が大きく変化すると考えています。
|
|
||||||
ただし、ファイルをアップロードした際に文書に示されていない情報を検索で補完することがないようにしています。
|
|
||||||
|
|
||||||
5章では、技術分野の回答について少し丁寧に指定しています。
|
|
||||||
専門用語を一般的な言葉に置き換えることがないようにしています。
|
|
||||||
|
|
||||||
6章では、タイムゾーンと地域を日本に固定しています。
|
|
||||||
ニュースを調査するときに日付を適切に扱うために、タイムゾーンは指定することを推奨します。
|
|
||||||
|
|
||||||
また、CLIを多様することを明記することで、GUI上の設定ではなく設定ファイルとコマンドを提示するようにしています。
|
|
||||||
|
|
||||||
7章では、Markdownの書式を適切に使用するように指示しています。
|
|
||||||
最近本来Mermaidを使うような概念図をASCIIアート的にコードブロックに出力することが多くなってきたので、
|
|
||||||
コードブロックの使用について丁寧に記載しています。
|
|
||||||
|
|
||||||
8章は、よくある禁止事項です。余計な提案を抑制しています。
|
|
||||||
このような指示に極端に強い表現を使う人がいますが、現状禁止事項を列挙するだけで事足りています。
|
|
||||||
(あえて強い表現を使っても効果への影響は少ないと重います。)
|
|
||||||
|
|
||||||
9章で正確性を重視することを明示しています。
|
|
||||||
こちらも強い言葉を使う必要はないと重います。
|
|
||||||
|
|
||||||
10章で分野を問わず使用する回答の構造を定義しています。結論を先に述べるようにしています。
|
|
||||||
|
|
||||||
## コピペする方へ
|
|
||||||
|
|
||||||
この指示では、**文章より箇条書きを優先する**、**図表(特に表)を使用しない**ように指定しています。
|
|
||||||
これらの挙動は一般受けしないと思います。コピペして使用する場合は適宜調整してください。
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
---
|
|
||||||
title: HHKB Studioを買ったのでカスタマイズ性などについて述べる
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
こんにちは、鎌滝です。
|
|
||||||
最近は、ビデオゲームを始めるなどしていますが、やはりコンピューター弄りが楽しいと思っています。
|
|
||||||
|
|
||||||
先日、**HHKB Studio**を購入しました。
|
|
||||||
|
|
||||||
なので、HHKB Studioについての個人的な感想や、
|
|
||||||
あまりインターネット上で述べられていないカスタマイズ機能の詳細について語りたいと思います。
|
|
||||||
|
|
||||||
|
|
||||||
## HHKB Studioについて
|
|
||||||
|
|
||||||
|
|
||||||
**HHKB Studio**は、PFUによって製造・販売されているPC向けキーボードです。
|
|
||||||
|
|
||||||
公式の製品情報は、以下のサイトから参照できます。
|
|
||||||
- [公式サイト](https://happyhackingkb.com/jp/products/studio/)
|
|
||||||
- [Amazon](https://www.amazon.co.jp/gp/product/B0CL79KXBG/)
|
|
||||||
|
|
||||||
## HHKB Studioの特徴
|
|
||||||
|
|
||||||
|
|
||||||
本製品は、ポインティングスティック(ThinkPadの赤ポッチのようなもの)が搭載された
|
|
||||||
USB / Bluetooth対応のキーボードです。
|
|
||||||
|
|
||||||
HHKBシリーズの伝統的な配列はそのままに、マウス相当のポインティングデバイス機能と
|
|
||||||
協力なカスタマイズ機能が搭載されています。
|
|
||||||
|
|
||||||
キースイッチには、独自のメカニカルスイッチが採用されており、
|
|
||||||
適度なストロークと同社静音モデル(Professional Type-S)以上の静音性がある。
|
|
||||||
|
|
||||||
キーストロークの浅さには若干の違和感があったが、使いはじめてすぐに慣れることができた。
|
|
||||||
|
|
||||||
参考までに、以下に私が所持するHHKBシリーズのキーストロークならびに押下圧を記載する。
|
|
||||||
|
|
||||||
|モデル名 |キーストローク|押下圧|
|
|
||||||
|----------------------|--------------|------|
|
|
||||||
|Studio |3.6mm |45g |
|
|
||||||
|Hybrid Type-S |3.8mm |45g |
|
|
||||||
|Proffesional 2 (無印) |4.0mm |45g |
|
|
||||||
|
|
||||||
上記の表からもわかるように押下圧はそのままにストロークを短かくすることにより、
|
|
||||||
軽快な打鍵感を実現している。
|
|
||||||
|
|
||||||
また、読者のご存知の通り本製品には*ポインティングスティック*ならびにマウスボタン相当のスイッチが搭載されている。
|
|
||||||
|
|
||||||
ポインティングスティックは、力の入れ方で速度を変化させることができ、精密なカーソル移動もしやすいと感じる。
|
|
||||||
一方で、長距離の移動に際しては、常にスティックに力を入れ続けることが負担に感じる場面も多い。
|
|
||||||
|
|
||||||
マウスのクリック・右クリックに相当するボタンがリニアタイプのメカニカルキーとして実装されていることも
|
|
||||||
大きな特徴であろう。
|
|
||||||
これは、ポインティングスティックとの相性は良いものの片手で使用するには場所が悪い。
|
|
||||||
|
|
||||||
本製品に搭載された独創的な入力デバイスである*ジェスチャーパッド*については、カスタマイズ前提であると
|
|
||||||
感じたため、後述する。
|
|
||||||
|
|
||||||
## カスタマイズ性の高さこそがStudioの魅力である
|
|
||||||
|
|
||||||
|
|
||||||
HHKB Studioが他のHHKBシリーズと異なる点は、カスタマイズ機能の豊富さにあると言える。
|
|
||||||
HHKB Professional Hybrid Type-Sにおいてもカスタマイズは可能であり、キーの位置を変更することが可能であった。
|
|
||||||
私自身も、Hybrid Type-Sの矢印キーを`fn H/J/K/L`に変更している。
|
|
||||||
このカスタマイズにより、小指の負担を軽減することができ、同時に、
|
|
||||||
vimと同様の操作を実現できる。
|
|
||||||
|
|
||||||
### カスタマイズできること
|
|
||||||
|
|
||||||
Studioは、上述のようなキーの置き換えに加え、以下のカスタマイズ機能がある。
|
|
||||||
- 通常, fn1, fn2, fn3(ユーザが全てを定義する)の4レイヤーでのマッピング
|
|
||||||
- 一般的なマウスのボタンに相当するイベントを任意のキーに割り当て
|
|
||||||
- 左クリック / 右クリック
|
|
||||||
- 中央クリック
|
|
||||||
- ホイールの上 / 下
|
|
||||||
- ホイールの横スクロール(左 / 右)
|
|
||||||
- ポインティングスティックのクリック、各ジェスチャーパッドの上/下に個別のキーを割り当て
|
|
||||||
- ジェスチャーパッドは、スワイプに応じて指定したキーを連打する使用となっている
|
|
||||||
- 入力されるキーは上下キーのような対応関係にある必要はない。(HJKLやWASD、+-を指定するなど)
|
|
||||||
- 割り当てる側の自由度は高いがマクロは組めない
|
|
||||||
- クリックやカーソル移動などの操作を割り当てることができる
|
|
||||||
- Ctrl, Alt(Option/Meta), Shift, Win(Cmd/Super)と同時に任意のキー入力を割り当て
|
|
||||||
- シーケンスには非対応 例えば、`Win+R notepad Enter F6`は発火できない
|
|
||||||
- テンキーの各キーを割り当てることも可能
|
|
||||||
- F13 から F19のファンクションキーを割り当てることもできる。
|
|
||||||
- 各アプリケーションでこれをホットキーに指定することで、多機能マウスのような使用感を実現できる
|
|
||||||
- 例: fn + SpaceをF19に割り当て → DiscordのPTTスイッチにF19を指定する
|
|
||||||
|
|
||||||
### カスタマイズの制約事項
|
|
||||||
|
|
||||||
HHKB Studioのカスタマイズにはいくつか制約事項がある。
|
|
||||||
|
|
||||||
- DIPスイッチの状態をソフトウェアで制御することはできない。
|
|
||||||
Hybridシリーズと同様、現在の状態を確認することはできるが、スイッチをソフトで上書きすることは不可能である
|
|
||||||
- Fnキーは標準レイヤーにのみ割り当てできる
|
|
||||||
fn1 + fn2をFn3に割り当てるといったことは不可能である。Fnキーはどれも標準レイヤーから単キーでアクセスする必要がある
|
|
||||||
- HHKB Studioの根幹に関わる機能のために予約されているキーは変更できない
|
|
||||||
ワイヤレス/有線の接続管理に使用するキーなどは、変更できない
|
|
||||||
|
|
||||||
## 私のキーマップ
|
|
||||||
|
|
||||||
まず、DIPスイッチはDel→BSのみ有効とし、他はデフォルトのままである。
|
|
||||||
本製品は、左Super(◇)をFn1に変更する機能はDIPとしては提供されていない。
|
|
||||||
|
|
||||||
通常レイヤーに関しては、左Super(◇)をfn1に変更している。
|
|
||||||
また、通常位置のfnをfn3に割り当てている。
|
|
||||||
このキーは、*数値モード*用に使用している。詳細は後述する。
|
|
||||||
|
|
||||||
fn1レイヤには、矢印やHome/Endなどのナビゲーション関連キーや、PrintScreenなどを割り当ててある。
|
|
||||||
基本的な設定は標準通りであるが、矢印をHJKLに変更した都合上、いくつかのキーを変更している。
|
|
||||||
|
|
||||||
また、fn1+W/E/R/T/Y/Uは、F13からF18に指定している。
|
|
||||||
今後自由にアプリ側で設定できるキーとして活躍してもらう予定である。
|
|
||||||
fn1+SpaceはF19として指定しており、DiscordのPTTにしている。
|
|
||||||
他アプリケーションにおいてもPTTが使用可能であれば、F19を使う予定である。
|
|
||||||
|
|
||||||
|
|
||||||
fn2は、マウス関連のキーとして使用する。
|
|
||||||
デフォルト設定の他に、fn2+Aで中央クリックができるようにしている。
|
|
||||||
一部のソフトウェアやLinux系統のOSで活用していきたい。
|
|
||||||
|
|
||||||
fn3は、数字モードとして使用している。
|
|
||||||
HHKB Studioには、テンキーが存在しない。そのため、代替となる数字入力手段を用意した。
|
|
||||||
|
|
||||||
ASDFGZXCVを123456789に指定している。0は、fn+Spaceである。
|
|
||||||
また、QWERをそれぞれ、+-\*/に指定している。
|
|
||||||
さらに、左Altをカンマに、左Superをピリオドに指定している。
|
|
||||||
これにより、素早い数字や記号の入力が可能となる。
|
|
||||||
|
|
||||||
また、Microsoft Excelのような表計算アプリケーションを想定し、
|
|
||||||
- TをShift-Tabに、
|
|
||||||
- ShiftをShift-Enterに、
|
|
||||||
- BをEnterに
|
|
||||||
それぞれ割り当てている。
|
|
||||||
これにより数字を入力しながら、セルを移動することが可能となる。
|
|
||||||
|
|
||||||
ジェスチャーパッドは、多くの利用者がそうしているように、フロント側2箇所を無効化している。
|
|
||||||
これは、パームレストを利用する際に誤入力されないようにするためである。
|
|
||||||
|
|
||||||
ジェスチャーパッドの左右は、マウスホイールとして使用している。
|
|
||||||
左側を上下、右側を左右に使用している。
|
|
||||||
なお、左右ホイールはHHKB Studioデフォルトの左右キーのジェスチャーとは反転した設定としている。
|
|
||||||
|
|
||||||
## まとめ
|
|
||||||
|
|
||||||
HHKB Studioは、HHKBの素晴しい配列にマウス機能を搭載しただけでなく、
|
|
||||||
強力なカスタマイズが可能となっている。
|
|
||||||
このカスタマイズと各アプリケーションの設定を使えば、60程度のキー数で多ボタンマウスのような操作感を実現できるだろう。
|
|
||||||
|
|
||||||
カスタマイズには、いくつか知っておくべき制約事項がある。
|
|
||||||
AutoHotkeyのような手段もあるが、できる限りキーボード本体に設定を保存したい私にとって、
|
|
||||||
カスタマイズツールの制約事項を把握したうえでどうカスタマイズするかが重要である。
|
|
||||||
|
|
||||||
キーの感触は他のHHKBシリーズとは異なるが、静音で疲れにくい点は共通している。
|
|
||||||
ブレの少ない、浅めのキーは、あらゆる面で打鍵による不快感を軽減している。
|
|
||||||
|
|
||||||
PFUは、決してHHKB Studioを他のHHKBの上位互換としては位置付けていない。
|
|
||||||
既存のHHKBユーザーの全てがStudioに乗り替える必要はないと私も思う。
|
|
||||||
しかし、魅力的な機能を多く搭載しているので、興味があるならぜひ検討していただきたい。
|
|
||||||
少なくとも、安いメカニカルキーボードを何台も買うよりかは、良い選択肢であろう。
|
|
||||||
|
|
||||||
そして、このエントリはあくまで製品の到着後数日で執筆したものである。
|
|
||||||
製品の耐久性や長期間使用した上での使用感は記載できていない。
|
|
||||||
もし、特筆すべき事項が発見できた際には、またエントリを書くつもりである。
|
|
||||||
|
|
||||||
最後に、このエントリの全文はPFU HHKB Studio 英語配列 墨色を用いて執筆したことを明記しておく。
|
|
||||||
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
title: First Post
|
|
||||||
published_date: 2023-10-08 12:49:56.171857272 +0000
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: true
|
|
||||||
---
|
|
||||||
# This is our first Post!
|
|
||||||
|
|
||||||
Welcome to the first post ever on cobalt.rs!
|
|
||||||
Reference in New Issue
Block a user