Skip to content

Latest commit

History

227 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

rustyworks.jp — 公開用リポジトリ

このフォルダは GitHub Pages で rustyworks.jp として公開されている本体 です。 Rusty1m/rustyworks のクリーンなクローンで、常にリモートと一致した状態を保ちます。

フォルダの役割分担

フォルダ役割git
~/rustyworks-site/(ここ)公開用。 ここから push すると本番に反映される管理下
~/git_HomePage用/一時置き場。 作りかけ・大量の画像素材・書き出し前のもの管理外

公開したいものができたら、一時置き場からこのフォルダへコピーして push します。 一時置き場は git 管理外なので、うっかり全部コミットして本番のファイルを消す事故が起きません。

一時置き場のものは削除しないこと

~/git_HomePage用/ のファイルは、基本的に消しません。 片付けのつもりでも、不要に見えても、勝手に消さないでください。

理由は2つあります。

  • 公開できないものが置いてあります。 サイトに載せない素材、書き出し前のもの、 手元だけで持っておくもの。「サイトで使われていない=不要」ではありません
  • git 管理外なので、消したら戻せません。 公開用フォルダなら履歴から復元できますが、 こちらにはその後ろ盾がありません

見た目が作業ファイルでも、実体がそこにあるものがあります。たとえば —

場所中身
contact-worker/稼働中の問い合わせ受け口の実体。ここが唯一の原本
og/OGP 画像を描くための元。作り直すときに要る

消す必要があると思ったときは、消さずに相談してください。

触ってはいけないファイル

  • CNAME — 独自ドメイン rustyworks.jp の設定。消すとドメインで開けなくなります。
  • ~/git_HomePage用/ の中身 — 上記のとおり。削除は相談してから。

公開の流れ

  1. このフォルダで編集(または一時置き場からコピー)
  2. git status で変更内容を確認(意図しない削除がないか必ず見る
  3. 必要なファイルだけ git add
  4. コミットして git push origin main
  5. 数十秒で rustyworks.jp に反映される

認証

HTTPS + キーチェーン。Personal Access Token(fine-grained・Contents: Read and write)を使用。 有効期限: 2026-10-24 — 切れたら GitHub で作り直してください。

収録ページ

製品ページ
Recouprecoup.html / recoup_manual.html / recoup_privacy.html
ShelfNavigatorshelfnavigator.html / _manual / _privacy
Kurokuro.html / kuro_manual.html / kuro_privacy.html
不満ノート(FumanNote)fumannote.html / fumannote_manual.html / fumannote_privacy.html
Plain Video Saverpvs.html / pvs_privacy.html
UADBUADB_manual.html / uadb_privacy.html
オートダビング構文(Web アプリ)autodub/index.html / autodub/notes.html(解説記事)
トップindex.html
サイト共通works.html(作品一覧) / contact.html(お問い合わせ・noindex) / site_privacy.html

ページを1枚追加するときの決まりごと

既存のページはすべて下の形になっています。忘れても表示は壊れないが、 後から直しても取り返しがつきにくいものを先に並べます。

1. OGP を入れる

SNS やチャットに貼られたときに出るカードの中身です。後から足しても、 各サービスが一度取得したキャッシュは当分そのままなので、公開前に入れます。

入れるページ製品ページ、Web アプリ、トップ、WORKS、お問い合わせ
入れないページ取説・各アプリのプライバシーポリシー(人に貼られる前提がないため)

index.html の7〜20行目がそのまま雛形です。

<metaname="description" content=""><metaproperty="og:type" content="website"><metaproperty="og:site_name" content="RustyWorks"><metaproperty="og:locale" content="ja_JP"><metaproperty="og:url" content="https://rustyworks.jp/xxx.html"><metaproperty="og:title" content=""><metaproperty="og:description" content=""><metaproperty="og:image" content="https://rustyworks.jp/assets/og/xxx-og.jpg"><metaproperty="og:image:width" content="1200"><metaproperty="og:image:height" content="630"><metaname="twitter:card" content="summary_large_image"><metaname="twitter:title" content=""><metaname="twitter:description" content=""><metaname="twitter:image" content="https://rustyworks.jp/assets/og/xxx-og.jpg">
  • og:urlog:image は絶対 URL で書く。 相対パスだと拾われません
  • 製品ごとの絵が無いページ(トップ・WORKS・お問い合わせ)は、共通の rustyworks-og.jpg を指します。専用の絵を描いたら差し替える
  • 検索に出したくないページには <meta name="robots" content="noindex"> を足す (contact.html がそうしています)。OGP は noindex でも効きます

2. 画像を3か所に用意する

トップと WORKS の枠は aspect-ratio:1200/630 の帯で、絵は object-fit:contain で中に収めています。だから実寸がバラついても一覧の高さは揃うし、絵が切り取られる こともありません。 そのかわり、比率が 1200:630 からずれた分だけ帯の余白が出ます。

置き場使う場所目安形式
assets/og/<名前>-og.jpg共有時のカード1200×630 ちょうど(SNS 側が決める)jpg
assets/cards/<名前>.webpトップの作品カード・WORKS 一覧720×378(=1200:630)webp
assets/icons/<名前>.png専用の絵が無いものの代用・ファビコン160×160png
  • 揃えるのは画素数ではなく比率です。 720×378 はちょうど 1200:630 なので余白が出ません
  • 比率がずれる絵を使うときは、帯の色を絵の地に合わせます。 そうすれば余白は見えません。 実際 fumannote.webp は 800×382(比率 2.09)ですが、この指定で成立しています
<!-- index.html — トップの作品カード。比率がずれるので帯の色を指定している --><aclass="work" href="fumannote.html"><divclass="work-art" style="--art-bg:#f6f3f0;"><imgsrc="assets/cards/fumannote.webp" alt="" loading="lazy" width="800" height="382"></div><divclass="work-foot"><spanclass="work-name">不満ノート</span><spanclass="dot released" title="リリース済み" aria-label="リリース済み"></span></div></a><!-- works.html — 専用の絵がまだ無いものは placeholder にしてアイコンを中央に置く --><divclass="item-art placeholder"><imgsrc="assets/icons/xxx.png" alt="" loading="lazy" width="160" height="160"></div>

widthheight は実寸をそのまま書きます(枠が比率を持っているので、 書かなくても行はずれません)。alt が空なのは、すぐ隣に同じ名前が テキストで出ているからです。

3. 一覧に登録する

ページを作っただけでは、どこからも辿れません。両方に足します。

  • index.html の作品カード(横送り)
  • works.html の一覧(説明文・状態バッジ・取説やプライバシーへのリンク)

4. 問い合わせの対象に足す(2か所あります

新しい製品を出したら、お問い合わせフォームの「対象」に足します。 サイト側とクラウドフレア側の両方を直さないと、黙って取りこぼします。

直す場所何を
contact.html<select id="product"><option value="DocPane">DocPane</option> を1行
~/git_HomePage用/contact-worker/worker.jsPRODUCTS同じ文字列を配列に追加

片方だけだと、送信は成功して 200 が返るのに、届いたメールでは 「指定なし」になります。 Worker は知らない値を弾かずに寄せる作りだからです。 送った人にも受け取った側にも、失敗したことが分かりません。

worker.js はこのリポジトリにはありません。一時置き場の ~/git_HomePage用/contact-worker/ にあります。受け口の設計と デプロイ手順は、そこの README が正典です。

worker.js は直しただけでは効きません。上げるまで反映されません。

cd~/git_HomePage用/contact-worker && npx wrangler deploy

optionvaluePRODUCTS の文字列は完全一致させます。表示名と 値を変えている項目があるので注意(UADB / UADB Litevalue="UADB"このサイトvalue="サイト")。

5. Latest Updates に1行足す

トップの更新履歴です。新しいものが一番上で、日付は降順に並べます。

<aclass="update" href="docpane/"><timedatetime="2026-08-14">2026.08.14</time><spanclass="badge news">NEWS</span><spanclass="update-title" data-ja="" data-en=""></span><svgviewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><polylinepoints="9 5 16 12 9 19"/></svg></a>
バッジ使いどころ
news新しく出したもの・公開したもの
update既にあるものの更新
lab実験的なもの、解説記事

<time>datetime 属性と表示の両方を書きます(2026-08-142026.08.14)。 href は、その話題の行き先へ。日本語だけでなく data-en も書きます。

6. 全ページ共通で入れるもの

<meta name="viewport" …>無いとスマホで極小表示になります
配色ライトテーマの値に合わせる。--bg--panel--line--text--muted--accent
日英切替切り替えたい要素に data-ja / data-en、placeholder は data-ph-ja / data-ph-en
解析タグ</body> の直前に Cloudflare Web Analytics のタグ(トークンは全ページ共通)
フッタートップへ戻る導線と site_privacy.html へのリンク

7. 公開したあとに見る

curl -s -o /dev/null -w '%{http_code}\n' https://rustyworks.jp/xxx.html
curl -s -o /dev/null -w '%{http_code}\n' https://rustyworks.jp/assets/og/xxx-og.jpg

どちらも 200 であること。og:image が 404 だと、カードは画像なしで出ます。 一覧からリンクが繋がっているかも合わせて確認します。

LP(製品ページ)の決まりごと

LP の見た目は、担当ごとに自由に作って構いません。 構成・レイアウト・見出しの言い回し・スクリーンショットの見せ方・アニメーション — そのページの中で完結するものは、揃える必要がありません。

**ただし、次の3つだけは揃えます。**サイトを横断して動くもの、 あるいは他のページから来た人の期待を裏切るものだからです。

揃えるもの揃えないと何が起きるか
日英の切り替えEN で見ている人が、そのページだけ日本語になる
トップへ戻る導線(上と下)直接入ってきた人が、サイトの他を見に行けない
ライトテーマの地白いページから来て、そこだけ暗転する
製品まわりのフッター取説だけ読みに来た人が、製品ページやストアへ行けない

1. 日英を切り替えられるようにする

トップと同じ仕組みを載せます。ヘッダーに JA / EN のボタンを置き、 切り替えたい要素に data-ja / data-en を書きます。

<divclass="lang" role="group" aria-label="Language"><buttontype="button" data-lang="ja" aria-pressed="true">JA</button><spanclass="sep">/</span><buttontype="button" data-lang="en" aria-pressed="false">EN</button></div>
varKEY='rw-lang';varbuttons=document.querySelectorAll('.lang button');varnodes=document.querySelectorAll('[data-ja][data-en]');functionapply(lang){document.documentElement.lang=lang;nodes.forEach(function(el){vartext=el.getAttribute('data-'+lang);if(text!==null)el.textContent=text;});buttons.forEach(function(b){b.setAttribute('aria-pressed',String(b.dataset.lang===lang));});try{localStorage.setItem(KEY,lang);}catch(e){}}buttons.forEach(function(b){b.addEventListener('click',function(){apply(b.dataset.lang);});});varsaved=null;try{saved=localStorage.getItem(KEY);}catch(e){}if(!saved)saved=(navigator.language||'').toLowerCase().indexOf('ja')===0 ? 'ja' : 'en';if(saved==='en')apply('en');
  • 保存先の rw-lang はサイト全体で共有です。 だからトップで EN にした人は、 LP も EN で開きます。LP に仕組みが無いと、そのページだけ日本語に戻ります
  • 入れ替えるのは textContent です。placeholder を訳すときは data-ph-ja / data-ph-en を使い、el.placeholder に入れます(contact.html が例)
  • data-jadata-en両方書きます。片方だけの要素は切り替わりません

2. トップへ戻る導線を、上と下の両方に置く

一番上(ヘッダー)と一番下(フッター)の2か所です。

LP は検索やリンクの共有から直接入ってくるページです。上にしか無いと 読み終えた人が戻れず、下にしか無いと読む前に離れた人が戻れません。

hrefindex.html。サブフォルダに置く Web アプリからは ../index.html です。

3. できるだけライトテーマにする

地は白、文字は濃いグレー。値は他のページと同じものを使います。

用途
#ffffff
パネル#f7f7f8 / 一段沈める場合 #f0f0f2
罫線#e4e4e7
本文・見出し#111214
補助文字#5f6368 / さらに薄く #8a8d93
リンク・ボタンの青#1a4fd8 / hover #143fb0
  • 製品ごとの accent は個性として残して構いません(不満ノート=橙、 ShelfNavigator=琥珀など)。地を白にすることが揃っていれば十分です
  • 暗い地の前提で選んだ明るい色を、そのまま白地に置かないこと。#ff8f6b のような色は白地でコントラストが足りません。濃い側へ振り直します
  • 色地のバッジに黒文字を載せていた箇所は、accent を濃くしたぶん白抜きにします

4. 製品まわりのフッターは、5つを1組で置く

1つの製品には製品ページ・取説・プライバシーの3ページがあります。 その3ページすべてに、同じフッターの塊を置きます。

並び行き先
RustyWorksindex.html(トップ)
製品ページ<製品>.html
取説<製品>_manual.html
ストアApp Store / itch.io など、外部の配布先
プライバシー<製品>_privacy.html
サイトのポリシーsite_privacy.html

どのページから入っても、その製品に関わる全部へ1クリックで行けます。 検索や共有リンクは3ページのどこにでも着地するので、取説だけ読みに来た人が そこから製品ページへ戻れない、ということが起きなくなります。

無い項目は出しません。 5つ揃っている製品ばかりではありません(ストアが まだ無い、取説をこれから書く、など)。出ている以上、必ず行き先がある 状態を保ちます。空リンクやグレーアウトは置きません。

専用のプライバシーページが無いのは、欠落とは限りません。 ストアで配布しておらず、手元で何も起きない製品は、site_privacy.html だけで 説明が尽きます(DocPane がその例)。その場合はプライバシーの行を出さず、 サイトのポリシーだけを置きます。作り忘れと決めつけて追加しないこと。

  • 同じ塊を3ページに貼ります。 現在地の項目もそのまま残して構いません。 各ページで削るより、崩れにくさを優先します
  • ラベルには data-ja / data-en を書きます
  • サブフォルダに置く製品は ../ を付けますdocpane/autodub/ など)
  • ストアは外部なので target="_blank" rel="noopener" を付けます
<footer><divclass="container footer-inner"><spanclass="copy">&copy; RustyWorks</span><divclass="footer-links"><ahref="index.html">RustyWorks</a><ahref="kuro.html" data-ja="製品ページ" data-en="Product">製品ページ</a><ahref="kuro_manual.html" data-ja="取扱説明書" data-en="Manual">取扱説明書</a><ahref="https://apps.apple.com/app/id0000000000" target="_blank" rel="noopener" data-ja="ストア" data-en="Store">ストア</a><ahref="kuro_privacy.html" data-ja="プライバシー" data-en="Privacy">プライバシー</a><ahref="site_privacy.html" data-ja="サイトのポリシー" data-en="Site Policy">サイトのポリシー</a></div></div></footer>

出す前の確認

担当のページで、これだけ見てください。

  • ヘッダーに JA / EN のボタンがあり、押すと切り替わる
  • 訳したい要素すべてに data-jadata-en両方ある
  • トップで EN にしてからこのページを開くと、EN で表示される
  • 一番上にトップへ戻るリンクがある
  • 一番下にトップへ戻るリンクがある
  • 地が白系で、他のページから来て暗転しない
  • フッターの1組が、製品ページ・取説・プライバシーの3ページすべてにある
  • フッターのリンクを全部押して、404 が出ない

3つ目は仕組みが効いているかの確認です。localStoragerw-lang を 読めていないと、ボタンは動くのに他ページからの引き継ぎだけ失敗します。

Web アプリについて

Web アプリは1つにつき1フォルダにして、index.html を置きます。 URL が rustyworks.jp/autodub/ の形になり、拡張子が出ません。 共有される前提のものなので、URL の見た目と、後からデータや画像を 足せる余地を優先しています。

実体autodub/index.html(1ファイル完結・外部依存なし・ビルド不要)
OGP画像assets/og/autodub-og.jpg(1200×630)
アイコンautodub/icon.png(ファビコン用・相対参照)と assets/icons/autodub.png(トップのカード用)の2か所
旧URLautodub.html は転送用に残置。消さないこと
版の表記フッター右下の .verビルドが無いので手で上げる。 GitHub Pages は HTML に10分のキャッシュを付けるため、手元だけ古いまま見えることがある。そのときここを見れば判別できる

開発は ~/オートダビング構文/ で行い、そこからコピーして公開します。 コピー時に足すのは <title> 周りの OGP メタだけで、本体には手を入れません。

autodub.html(ルート直下)は、フォルダ化する前に公開していた URL への 転送ページです。既に共有されたリンクを死なせないために置いてあります。

About

RustyWorksの紹介ページ

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages