<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>uouo blog</title><link>https://blog.uo-uo.com/</link><description>Recent content on uouo blog</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Fri, 12 Jun 2026 02:15:15 +0900</lastBuildDate><atom:link href="https://blog.uo-uo.com/index.xml" rel="self" type="application/rss+xml"/><item><title>MPK mini 鍵盤の修理</title><link>https://blog.uo-uo.com/posts/mpk-mini-repair/</link><pubDate>Thu, 11 Jun 2026 17:03:29 +0900</pubDate><guid>https://blog.uo-uo.com/posts/mpk-mini-repair/</guid><description>&lt;p&gt;　ハードオフでAKAI MPK miniを買ってきました。
　鍵盤の一部が反応しない、箱付きジャンクで3300円（税込）でした。&lt;/p&gt;
&lt;p&gt;　&lt;img src="./5f34fd8e50cdb4139bc3003ccc04eab2.5f34fd8e50cdb4139bc3003ccc04eab2.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　今回はこの、反応しない鍵盤を修理します。&lt;/p&gt;
&lt;p&gt;　反応しないのは一部のキーだけで、PCには正常にデバイス認識されるので、おそらく鍵盤の接点が原因。
　接点を清掃して直していきます。&lt;/p&gt;
&lt;h2 id="分解手順"&gt;分解手順&lt;/h2&gt;
&lt;h3 id="裏側のネジを外す"&gt;裏側のネジを外す&lt;/h3&gt;
&lt;p&gt;　裏側のネジは全部同じ長さなので、何も考えず外しちゃってOK&lt;/p&gt;
&lt;h3 id="白のプレートを外す"&gt;白のプレートを外す&lt;/h3&gt;
&lt;p&gt;　側面のUSB-B端子が引っかかるので、プレートを横にずらしたあと、手前に引きます。
　&lt;img src="./da1eee13e05af75d5aada92583fea581.da1eee13e05af75d5aada92583fea581.webp" alt="ここを" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　&lt;img src="./29a4bdf55aa911a98db7a938f2ab58e8.29a4bdf55aa911a98db7a938f2ab58e8.webp" alt="こう" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　背面のSUTAIN・横のUSB-Bはどちらも白のプレートについてくるので、気にしなくてOK
　&lt;/p&gt;
&lt;h3 id="フラットケーブルを外す"&gt;フラットケーブルを外す&lt;/h3&gt;
&lt;p&gt;　白のプレートと、黒のプレートはフラットケーブルで繋がっています。
　引きちぎってしまわないよう、黒のツメを緩めたあと、気をつけてケーブルを外します。
　&lt;img src="./f41495857954377f1a79575f92b7b966.f41495857954377f1a79575f92b7b966.webp" alt="" 
 loading="lazy" /&gt;
　&lt;/p&gt;
&lt;h3 id="鍵盤を外す"&gt;鍵盤を外す&lt;/h3&gt;
&lt;p&gt;　鍵盤の根本の部分がネジで固定されています。
　このネジは筐体裏側のネジとは長さが違うので、別々にして保管します。（長い方が鍵盤のネジ）&lt;/p&gt;
&lt;p&gt;　&lt;img src="./8524226270f7a3cd932dc25c8083a0bc.8524226270f7a3cd932dc25c8083a0bc.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　鍵盤は裏側にツメがあるので、手前に引っ張って取り出します。&lt;/p&gt;
&lt;h3 id="導電ゴムを外す"&gt;導電ゴムを外す&lt;/h3&gt;
&lt;p&gt;　鍵盤の真下にある導電ゴムを外します。ツメで軽く引っかかっているので、引きちぎらないように取り外します。&lt;/p&gt;
&lt;p&gt;　&lt;img src="./2140ff881025c531adb1db0611803f3e.2140ff881025c531adb1db0611803f3e.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　（鍵盤のしたは外から清掃できないので、きれいにするなら今のうち）&lt;/p&gt;
&lt;p&gt;（導電ゴムの接点が 2つ/鍵 ついてるのは、微妙なベロシティを検知するためなのでしょうかね。思ったよりだいぶシンプルな仕組みだった。）&lt;/p&gt;
&lt;h2 id="清掃"&gt;清掃&lt;/h2&gt;
&lt;p&gt;　導電ゴムと、その接点を無水アルコールのウェットティッシュで拭き上げます。
　&lt;img src="./c77366134bb76007e34f54858c17ac3e.c77366134bb76007e34f54858c17ac3e.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　念のため鍵盤側基盤のネジを外して、裏側にあるフラットケーブルも取り外し、フラットケーブルの接点も拭いておきます。
　&lt;img src="./4d0a0f365f1a3acd1ac46e812a786024.4d0a0f365f1a3acd1ac46e812a786024.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　同様に、USBコネクタのある側のフラットケーブル接点も清掃します。&lt;/p&gt;
&lt;h2 id="分解時と逆の順番で組み立てる"&gt;分解時と逆の順番で組み立てる&lt;/h2&gt;
&lt;p&gt;　フラットケーブルを引きちぎらないように再組み立てします。
　USB-Bのある側から差し込んではめ込みます。&lt;/p&gt;
&lt;p&gt;　&lt;img src="./5f34fd8e50cdb4139bc3003ccc04eab2.5f34fd8e50cdb4139bc3003ccc04eab2.webp" alt="" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;　で、完成、ってワケ……。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;　Abletonに繋いで確認したところ、ちゃんと全鍵盤反応するようになりました。&lt;/p&gt;
&lt;p&gt;　この手の機材が、キーが反応しない等の理由でジャンクの場合はだいたいこの手順で直せるハズ。
　リモコンとかも一緒ですね。&lt;/p&gt;
&lt;p&gt;　そもそも電源が入らない・PCに認識されないとかの場合は、どこかのハンダがクラックしてる/配線がちぎれてる、とかが原因なので買わないが吉。
　”一部が”反応しない、の場合は修理簡単なのでお買い得ですね。&lt;/p&gt;</description></item><item><title>Codemirror-6での縦書き</title><link>https://blog.uo-uo.com/posts/codemirror-tategaki/</link><pubDate>Mon, 11 May 2026 16:45:00 +0900</pubDate><guid>https://blog.uo-uo.com/posts/codemirror-tategaki/</guid><description>&lt;h2 id="codemirrorで縦書きしたい"&gt;codemirrorで縦書きしたい！！！&lt;/h2&gt;
&lt;p&gt;なんて思う方はなかなかいらっしゃらないとは思いますが、&lt;/p&gt;
&lt;p&gt;書いてんかで縦書きを実装するときに使った縦書き拡張があるので、npmとgithubに置いておきます。
MITライセンスなのでよしなに使ってやってください。&lt;/p&gt;
&lt;p&gt;最近のリリースで文字のタイポグラフィがよりきれいになったりしました。
ご意見、ご要望はissueにお願いします。&lt;/p&gt;
&lt;p&gt;npm install
npm i @uozumi/cm-vertical-writing&lt;/p&gt;
&lt;p&gt;GitHub
&lt;a href="https://github.com/UozumiMizuto/cm-vertical-writing"&gt;https://github.com/UozumiMizuto/cm-vertical-writing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;縦書きお試しデモページ
&lt;a href="https://playground.uo-uo.com/vertical/"&gt;https://playground.uo-uo.com/vertical/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>OpenTimeStampの活用</title><link>https://blog.uo-uo.com/posts/kaitenka-ots/</link><pubDate>Mon, 11 May 2026 16:45:00 +0900</pubDate><guid>https://blog.uo-uo.com/posts/kaitenka-ots/</guid><description>&lt;p&gt;書いてんか、というツールを作りました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://text.uo-uo.com/about"&gt;書いてんか概要&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="otsとは"&gt;OTSとは&lt;/h2&gt;
&lt;p&gt;　&lt;a href="https://opentimestamps.org/"&gt;OpenTimeStamps&lt;/a&gt;とは、時刻認証局ナシ・外部サーバーを信用することなく使えるタイムスタンプです。（です、と言い切ったものの、理解しきれてるかは怪しい）&lt;/p&gt;
&lt;p&gt;　ビットコインのトランザクションに、他のOTSユーザーのハッシュ値と、自分の原稿群のハッシュ値で作成したマークルツリーのルートを、トランザクションのPUSHDATAに乗せることによって、それらのデータがそのビットコイン採掘時点で存在していた、と証明する仕組みです。&lt;/p&gt;
&lt;p&gt;　ようは、手元のファイルが、今この瞬間にこの内容で存在していたということを、客観的に証明してくれる仕組み。&lt;/p&gt;
&lt;p&gt;　盗作とか、パクられ妄想被害などへの対策に使えるというわけです。&lt;/p&gt;
&lt;p&gt;　&lt;img src="./9932f1048b200f985c200006292d223d.9932f1048b200f985c200006292d223d.webp" alt="実際の証明の様子" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;しかもなんとこれ、無料で使える。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;　AI驚き屋みてえな書き方しちゃった…&lt;/p&gt;
&lt;p&gt;　財政の実態としては、署名＝PUSHDATA＝トランザクションごとに、~30円ほどの手数料がかかっているご様子。&lt;/p&gt;
&lt;p&gt;　送金自体は内々で回していて、その金額に毎回200サトシ程度の手数料がかかる、のが実情。&lt;/p&gt;
&lt;p&gt;　例えば、私の原稿ファイルを実際に証明してくれているトランザクションが&lt;a href="https://chainflyer.bitflyer.com/Transaction/311648a3b1418ef1580cf5c8d6448dbc199bc399a997f23c18755243df34b4b6"&gt;これ&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;　1万円程度をもう一つのウォレットに送金して、その手数料が4円だった、とのこと。（2026/05/11時点の時価換算）&lt;/p&gt;
&lt;p&gt;　（ページ下部のOP_PUSHDATAがマークルツリールート。）&lt;/p&gt;
&lt;p&gt;　一回一回は僅かな金額とはいえ、1時間毎のスタンプを24時間365日×平均10円=年間90,000円ほどの手数料が発生している。&lt;/p&gt;
&lt;p&gt;　ビットコイン経由での寄付も募っているそうなので、積極的に[寄付]&lt;a href="https://bob.btc.calendar.opentimestamps.org/"&gt;https://bob.btc.calendar.opentimestamps.org/&lt;/a&gt;しよう。（なんなら4月ごろには資金が偏ってダウンしてたらしい）
　&lt;/p&gt;
&lt;p&gt;　さて、そんなに便利なOTSﾁｬﾝですが、書いてんか においては”原稿群やアイデアがいつの時点で存在していたか”を証明するために活用しています。&lt;/p&gt;
&lt;h2 id="otsメモ"&gt;OTSメモ&lt;/h2&gt;
&lt;p&gt;・.otsファイルは、pending状態と、accept状態の、２つの状態がある。pending.otsを保存しておいて、数時間後にOTSサーバーにaccpetになっていないか問い合わせする必要がある。&lt;/p&gt;
&lt;p&gt;・accept.otsと、プロジェクトデータがあれば、OTSサーバーがダウンしていたとしても検証自体は可能（検証時に信頼するのはビットコインネットワークだけなので）&lt;/p&gt;
&lt;p&gt;・accept.otsが存在を保証するのは、accept.otsが生成されたときのデータのみ。つまりGitで更新を重ねていったとき、過去の変更について検証したい場合はその時点のプロジェクトデータが必要。&lt;/p&gt;
&lt;p&gt;・ツール側のハッシュ値を計算するロジックが変わると、過去の時点のハッシュ値も変わってしまい、照合不可能になってしまう。（ヘッダに一文字加わるだけでハッシュ値は変わる）＝検証ツールをちゃんとバージョニング・コードフリーズして、過去の検証ツールも常時提供しておく必要がある。&lt;/p&gt;
&lt;p&gt;・OTSが証明するのは、”そのファイルがその時点で存在していた”ということだけ。仕様上、ファイルに余分にランダムなデータを入れればハッシュ値の改ざん自体はできてしまう（ちょうどビットコインの採掘のように）ので、実際に裁判などで用いられるにはOTS検証＋目視での全原稿確認は必須。&lt;/p&gt;
&lt;h2 id="otsと書いてんか"&gt;OTSと書いてんか&lt;/h2&gt;
&lt;p&gt;・署名に使うのがハッシュ値で、ハッシュ値の計算自体はローカルで完結する、という点において、ユーザーの原稿を預かりプライバシーを重視する本ツールとしては大変好都合だった。&lt;/p&gt;
&lt;p&gt;・書いてんかにおいて、”原稿が存在していたことを証明する”ツールとして動作させるには、エンドユーザーにOTSを使わせてはいけない。いつの間にかスタンプされていて積み重なっている、状態が望ましいと考えた。&lt;/p&gt;
&lt;p&gt;・ので！　Gitでプッシュするたびに自動でスタンプする構造にした。&lt;/p&gt;
&lt;p&gt;・が、プッシュのたびに謎の.otsファイルが増えるのはユーザーにとって恐怖でしょうから、OTSファイルを選択したときにはちゃんと説明文を表示するように実装。&lt;/p&gt;
&lt;p&gt;&lt;img src="./3894a46e28d6c8eee77a39983db348d1.3894a46e28d6c8eee77a39983db348d1.webp" alt="OTSファイルを選択したときの表示" 
 loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;・と同時に、検証ツールも提供。ファイル群の結合の順番やルールを完全に再現しないとハッシュ値が合致しないので、これは当然。
&lt;img src="./506324b385996d680e95d329d8332084.506324b385996d680e95d329d8332084.webp" alt="OTS検証ツール" 
 loading="lazy" /&gt;
・また、実際にエンドユーザーが裁判沙汰などになった際に検証ツールの透明性を確保する必要があるため、OTS部分はOSSのライブラリとして切り出し、[GitHubで公開]&lt;a href="https://github.com/UozumiMizuto/ots-proof"&gt;https://github.com/UozumiMizuto/ots-proof&lt;/a&gt;した。&lt;/p&gt;
&lt;h2 id="おわりに"&gt;おわりに&lt;/h2&gt;
&lt;p&gt;　&lt;em&gt;なんだこの記事…？&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;　詳しい解説でもない、紹介でもない、なんなんだ…&lt;/p&gt;
&lt;p&gt;　まあ、ゆるくいきましょ、誰か（あるいはAI）の参考にはなるでしょうよ。&lt;/p&gt;
&lt;p&gt;　もし、書いてんかのユーザーの方で、本当に裁判沙汰になった方は[お問い合わせ]&lt;a href="https://portal.uo-uo.com/contact.html"&gt;https://portal.uo-uo.com/contact.html&lt;/a&gt;ください。&lt;/p&gt;
&lt;p&gt;　技術解説や証拠提出など協力させていただきます。（もちろん弁護はできないよ！弁護士はご用意ください）&lt;/p&gt;</description></item><item><title>書いてんか</title><link>https://blog.uo-uo.com/posts/kaitenka-press/</link><pubDate>Sat, 21 Mar 2026 19:03:00 +0900</pubDate><guid>https://blog.uo-uo.com/posts/kaitenka-press/</guid><description>&lt;p&gt;書いてんか、というツールを作りました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://text.uo-uo.com/about"&gt;書いてんか概要&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ゲーム制作をする中で、シナリオの管理やら、アイデアの書き溜めなんかを簡単にしたいという目的で作りました。&lt;br&gt;
Trello、Notion、Obsidianの良いところを参考にしつつ、より執筆特化に尖らせています。&lt;/p&gt;
&lt;p&gt;Trelloはカードが便利だけれど長文執筆には向いていない&lt;br&gt;
Notionはデータ構造が便利だけれどデータ同期がイケていない&lt;br&gt;
Obsidianは究極のカスタマイズができるけれどマルチデバイスが苦手&lt;/p&gt;
&lt;p&gt;というところで、じゃあいいとこ取りすればええやん、と。&lt;br&gt;
で、俺が産まれたってわけ&lt;/p&gt;
&lt;p&gt;維持コストも安いし、執筆中の広告は気が散るので、今後サブスクリプションとか広告を実装することはありません。&lt;br&gt;
まあなんか、便利だと思ったら使ってやってください。&lt;br&gt;
使われても私はなにも得しないけれど…&lt;/p&gt;
&lt;h2 id="機能群とメインターゲット"&gt;機能群とメインターゲット&lt;/h2&gt;
&lt;p&gt;前述の通り、いろんなツールをキメラにしています。&lt;br&gt;
Gitと、Markdown執筆できるCodeMirror6のエディタ、アウトラインプロセッサ、Kuromojiをはじめとする校正機能、作品設定をまとめるデータベース機能、アイデアを書き留めるカンバンボード、予測変換のIME機能、ノベルゲーム専用エディタなど。&lt;br&gt;
全体的にアイデアベースの長文執筆に特化したツールに出来上がっています。&lt;/p&gt;
&lt;p&gt;機能群的には、&lt;/p&gt;
&lt;p&gt;・ゲームクリエイター&lt;br&gt;
・小説家&lt;br&gt;
・WEBライター&lt;/p&gt;
&lt;p&gt;あたりの方々は便利に使っていただけるのではないでしょうか。&lt;br&gt;
逆に、簡単にメモを取ったり、家族共有のノートブックといった使い方には向いていないと思います。（Gitを理解・活用するハードルがあるので…）&lt;/p&gt;
&lt;p&gt;日記アプリ兼吐き出しノートとして使うのは便利かも。&lt;/p&gt;
&lt;h2 id="私の使い方"&gt;私の使い方&lt;/h2&gt;
&lt;h3 id="アイデア"&gt;アイデア&lt;/h3&gt;
&lt;p&gt;&lt;img src="./c0a85f7061643c8cef60993d27f65fe0.c0a85f7061643c8cef60993d27f65fe0.webp" alt="" 
 loading="lazy" /&gt;&lt;br&gt;
思いついたことはとりあえずアイデアボードにぶち込んでいきます。&lt;br&gt;
後々ナシだな…と思ったことは&amp;quot;ボツ&amp;quot;や、自分で追加した”微妙”レーンに移動させます。&lt;br&gt;
実際に作中で使ったアイデアやセリフは&amp;quot;採用済み&amp;quot;に。&lt;/p&gt;
&lt;p&gt;アイデアボードは1リポジトリに一つなので、全作品共通で使えるようなアイデアを書いていきます。&lt;/p&gt;
&lt;h3 id="データベース"&gt;データベース&lt;/h3&gt;
&lt;p&gt;&lt;img src="./2ec6c664c04d94d0ca93e412b910b37e.2ec6c664c04d94d0ca93e412b910b37e.webp" alt="" 
 loading="lazy" /&gt;&lt;br&gt;
キャラクターの設定や、ゲーム内アイテムのの情報はDB機能でまとめています。&lt;br&gt;
こうすると、執筆中にタイトル部分がサジェストされるようになるので、後々便利だったり。&lt;/p&gt;
&lt;p&gt;データベースをJson・CSVで書き出すこともできるので、ゲームへの組み込みも簡単になります。&lt;/p&gt;
&lt;h3 id="執筆中"&gt;執筆中&lt;/h3&gt;
&lt;p&gt;&lt;img src="./2abfcd0d45be0b218a12f2d3e815b972.2abfcd0d45be0b218a12f2d3e815b972.webp" alt="" 
 loading="lazy" /&gt;&lt;br&gt;
執筆はMD(MarkDown)形式で行えます。&lt;br&gt;
MDの ## などの見出しは、そのまま階層を表現したアウトラインプロセッサで表示されるので、見出しを先につけると執筆に迷いません。&lt;br&gt;
前述のDBに登録した用語が入力中にサジェストされるので、表記ゆれが減って便利です。&lt;/p&gt;
&lt;h3 id="同時並行制作"&gt;同時並行制作&lt;/h3&gt;
&lt;p&gt;私は複数作品並行して制作しているので、ひとつのリポジトリ内で作品ごとにフォルダを分け、その中にDBやMDを入れる運用にしています。&lt;br&gt;
こうすることで、いちいちリポジトリを切り替えることなく、同じ画面で並行して作業を進められます。&lt;/p&gt;
&lt;p&gt;このリポジトリには他にも、&lt;/p&gt;
&lt;p&gt;・読んだ作品の感想考察&lt;br&gt;
・完成した過去作品のデータ&lt;br&gt;
・ゲームのアーキテクチャ設計書&lt;br&gt;
・過去のボツデータ&lt;/p&gt;
&lt;p&gt;など、私のほぼ全てを詰め込んでいます。&lt;br&gt;
すべてのデータはGithubが保持しており、中身はjsonなどのtxtファイルにすぎないので、我ながら安心してすべてを預けられます。&lt;/p&gt;
&lt;h2 id="codemirrorでの縦書き"&gt;CodeMirrorでの縦書き&lt;/h2&gt;
&lt;p&gt;エディタにはCodeMirror 6を使っています。&lt;br&gt;
Markdownや、校正機能の装飾を実装したかったので、機能的にリッチで安定感のあるライブラリ、というところでCodeMirror 6になりました。&lt;br&gt;
（あとコーディングエージェントが真っ先に選んだのがCodeMirrorだったので、知識があるのじゃろうというある種の信頼も）&lt;/p&gt;
&lt;p&gt;ただ、CodeMirrorは縦書きが出来ません。&lt;br&gt;
というかそもそも、WEBエディタ系ライブラリで縦書きに対応しているのは現状存在しないという。&lt;/p&gt;
&lt;p&gt;なので、作りました。&lt;br&gt;
&lt;a href="https://github.com/UozumiMizuto/cm-vertical-writing"&gt;cm-vertical-writing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CodeMirror 6を縦書きにするやーつです。&lt;br&gt;
やってることはシンプルなので、ごちゃごちゃすればCodeMirror以外でも適用できるかと。&lt;br&gt;
詳しいことはまた後日書くかも。&lt;/p&gt;
&lt;h2 id="費用"&gt;費用&lt;/h2&gt;
&lt;p&gt;処理は全部フロント側で完結する静的仕様。&lt;br&gt;
サーバーはさくらのライトプラン。&lt;br&gt;
認証周りはFirebase(無料のBlaze)。&lt;br&gt;
ユーザーストレージはGitHubを間借りする形になるので用意なし。&lt;br&gt;
　（ただし、ユーザーにフリーストレージみたいに使われるのは良くないので、画像は長辺1920以下にリサイズする処理を入れてある）&lt;/p&gt;</description></item><item><title>ブログを開設しました</title><link>https://blog.uo-uo.com/posts/first-post/</link><pubDate>Sat, 21 Feb 2026 18:30:00 +0900</pubDate><guid>https://blog.uo-uo.com/posts/first-post/</guid><description>&lt;p&gt;ブログです&lt;/p&gt;</description></item></channel></rss>