2026/7 ふりかえり

あんまこういうこと継続できないけど、タイピングが乗ったので書けるだけ書き出してみる。やっぱ深夜のほうが何でもできる感じになる。

スーパー長いので目次を設置。

開発周り

レシートプリンターを買った

これ結構ウケが良かった。今でもAIにPOST叩いてもらっていろいろレシートにして作ってる。以外とロールの長さはあるようなので安心している。

d.taiseiue.jp

WSOFTアカウントの権限管理をいい感じにした

WSOFTという同人サークル(1人+無限)では、作ったWebアプリや動かしているアプリの認証認可に独自のIdPを使っている。といってもAuth0でユーザーを1度独自IdPで認証して、その認証情報をクライアントアプリケーションに配るという仕掛けだけど。そこで、今までAuth0の管理画面からユーザーに権限付与したりしていたのをAuth0に依存せずにOry Ketoを使ってみることにした。KetoはOry社が開発しているOSSのアクセス制御DBで、グラフでいい感じに権限を指定できるようになっている。これを使って、このユーザーは(このグループにいるので)、リソースに対してこういう動作ができる、というのを設定できるようになった。これでサーバーを置かせてもらっている家の人にGrafanaの温度関係のダッシュボードを見せたりできるようになって便利。

github.com

ついでに、これをあるにあたって新たにスタッフ向け管理画面をTanStackで作った。Next.jsより便利そうだけどファイルベースルーティングにいつもと違うかんじがあってびっくりした。

Renovateの設定を見直した

Renovateの設定を見直して、軽微なものであれば自動マージ、そうでないなら自分にアサインするようにした。 アサインされることで通知が来てメンテする心掛けができる。あと、サプライチェーンアタックが流行っているので何日か寝かせておく設定もやっと入れた。それまでは日数見て「もうちょい待つか」してたので。

じゃんけんAIを作った

訳あってLLMがたくさん使えるようになった。どういう訳かは id:rokuokun のスライドを見てもらうとして、とにかくレート制限のないLLMを使わせてもらえることになった。

speakerdeck.com

レート制限がないのでケチってできなかったアイデアを実装できる、ということでじゃんけんAIを作ってみた。これを使うとAIが今までのあなたの手からultrathinkして次に出すべき手を計算するようになっている。絶対に勝てないのでぜひ挑戦されたい。

janken.yaken.org

インフラ周り

最強のオンプレDBを建てた

k8sやDocker Composeなどで必要なときどきにDBを建てていたものの、いよいよ増えすぎて収集がつかなくなってしまったので何か管理しやすいものを考えていた。 そこで、ひとつ最強のオンプレDBを建てて、ほかのアプリケーションはそこに繋ぎにいくという方針にした。ここでいう"最強"とは何かというと便利に使えてちゃんと管理できて復元できること。なので、Terraformでユーザーを管理してAnsibleでデプロイ、Cloudflare R2に毎日バックアップを送信するようにした。実際はひとつDBを建てるといっても、PostgreSQLとMySQLのふたつ、それも本番用とステージング用の計4つ建てることになったが、それでも従来のDBが20個乱立している状況からはましになったと思う。

WSOFTダウンロードセンターのMSSQL脱出

WSOFTダウンロードセンターというものを高校2年のころから運営している。私がこれまで作ったWindowsアプリとか、友人のボカロ曲のinstとかを配信しているサイトだ。これは、当時ASP.NET Coreで作っていてIISでデプロイしており、その関係でMicrosoft SQLServerを使っていた。このころはDBへの接続文字列とかがコードにハードコードされていてゆるふわな感じだった。

下周りのOSをLinuxに変更した後も、docker-composeでappコンテナとMSSQLのコンテナを仲良く2つ並べて運用していた。しかし上の最強のDBを建てるにあたって、さすがにMSSQLをこれ以上使うこともないと思うのでPostgreSQLに移行することにした。

移行にあたっては、EntityFrameworkというORMを使っているのでそれを使ってMSSQLからデータを吸ってきて、PostgreSQLに吐き出すという形をとった。これは新しい項目の追加がほとんどないという特性を活かしたもの。ついでにk8s上で動くようにManifest書いたりもした。

Coolifyを使ってみている

Coolifyというものを使ってみている。これはセルフホストできるOSSなPaaSみたいなもので、管理画面/Terraformから、任意のLinuxサーバーにDockerコンテナをデプロイしてくれる。Docker Composeにも対応していたり、ポート番号が衝突しないように管理してくれたり、GitHubのリポジトリを読ませてArgoCDみたいなことができたりで便利に使っている。そのうち時間取ってこれにすべてのdockerコンテナの管理を集約させたい。

coolify.io

生活

バイトに加えて先月からマネーフォワードでインターンを初めたので結構アルバイトに明け暮れる学生感が出ている。 マネフォでも先日やっと成果が出せたので佳きこと。

学校ではテストがあった。1年や2年のころとは違って2科目だけ。データベースのテストではSQLが出ると聞いて、紙に無限にSQLを書く練習をしていた。自分はORMより後に生まれているので、実は素朴なSQLをこれほど書いたことは今までなかった。そういう意味でいい授業だったと思う。

学祭やイベントの仕事とかもあったりして、結構忙殺されていた感じだった。学祭ではPM的な立ち周りをすることになったので、マネジメントの勉強を何かしらしたいと思っている。おすすめがあればコメントにたのむ。

神戸に行った

小旅行に出たくなって神戸に行った。自宅から三宮まで2時間ほどでちょうどいい距離感だった。西から攻めていく作戦で、まず須磨に行った。

海浜公園では大勢の海水浴客がいたが、あいにく水着は持ってないし一人なのでポラロイドを構えてそのまま駅に戻る変な人になってしまった。

水族園前の歩道橋からの景色

それから、須磨海浜水族園がいつのまにか須磨シーワールドになっていた。小さいころ来た覚えがあるのでちょっと残念。

中華街

それから元町に行った。中華街で小籠包を食べてとにかく美味しかった。 それからは神戸高速線沿いに元町→西元町→神戸まで歩いた。神戸駅の東側にD51があったりした。ここで暑さで干涸びたので帰路の新快速に乗ることにした。ひとりで旅行すると満足したので帰る、が手札にとれて便利。

関西Ruby会議に行った

関西Ruby会議にも行った。みんな各々の基盤でmruby動かしていて良かった。でも一番印象に残っているのは途中で鍵を失くしてしまったこと。幸い家へはスペアキーで入れたものの、家の鍵ごとexpireしなければいけないのか迷っていた矢先、会場の能会館の清掃の方にみつけていただいたと連絡が入った。 運営の方にも会場の方にも頭が上がらない。見つかったと聞いた翌日に受けとりに行った。あとAirTagも買った。互換品もあったけど、大事なものはコストカットより純正の安心(適当)を取ることにした。

金魚を愛でている

一年前から金魚を飼っている。夏休みは何かとインターンとかで家を離れる時間が長くなるので、いろいろと死なれないように対策を打った。

いろいろメカがついた水槽

まず自動餌やり機を導入した。ほんとに2週間くらい家を離れっぱなしの期間があるので、その間お腹をすかせないようにするため。24時間に一回(12時間にもできる)餌箱が一回転して一定量の餌を落とすようになっている。供給が安定しないなどのレビューをみかけたが、今のところ上手く動いている。

次に外部式のフィルターを導入した。今まで投げ込み式フィルター(俗に言うブクブク)を使っていたが、それより濾過能力が高くバクテリアが滞在しやすいとのことで導入した。 これで水換えをなかなかできなくなっても元気でやってくれると思う。

最後にバクテリアを追加導入した。もともと初心者向け飼育セットに付属していたバクテリアだけでやっていたが、フィルターを交換して数が減ってることも考慮して、バクテリアがいる石を買うことにした。そうそう、バクテリアというのは金魚のフンやそれに含まれる物質を分解してくれるやつね。

金魚ノウハウはどっかにまとめてもいいかも。

本を買った

いくつか読むと良いといわれた本を買った。 全然読む時間を取れてないので夏休みに読みたいと思う。

アニメ・映画

最近は2期が初まった「逃げ上手の若君」を見ている。1期が1年の冬くらいだったと思うので記憶を辿りつつになっていてなかなかリアタイできていないけど。

映画でいうと「ウィキッド ふたりの魔女」、「ターミナル」、「ペット 檻の中の乙女」、「ナイト ミュージアム/エジプト王の秘密」、「プロジェクト・ヘイル・メアリー」、「ジョーズ」、「E.T.」を観た。特にプロジェクト・ヘイル・メアリーはペトロヴァ・ラインを追って辿りついた空間の描写が美しかった。

また、ふとしたきっかけでニャル子さんを観かえした。最初に観たのは高校1年のときだったはず。ニャル子さんはいろいろ好きな曲があるけど、あんまり言われない中でいうと「キミのとなりで」が好き。1期2期のエンディングの旋律が散りばめられていて初めて聞いたときには結構感動した。

open.spotify.com

よってS.O.Sも好き。カノン進行丸出しの上にメロディが載っていて面白い。

open.spotify.com

レシートプリンターを買った

レシートプリンターを買った。理由は秋の学祭で使うためだが、それはそうとあったら面白いので買った。

エプソン TM-T70Ⅱ

ReceiptLine

ちょうと知人からReceiptLineというものを聞いたところで、これをやってみる。 ReceiptLineっていうのはMarkdownみたいな軽量マークアップ言語のことで、SVG画像やプリンターのコマンドに 変換できるらしい。

github.com

できることは以下が詳しい。

www.ofsc.or.jp

機種選び

ReceiptLineに対応してたらいいやと思って機種を選ぶことにした。 とりあえずReceiptLineのリポジトリをDeepWikiに調べてもらって、対応している機種を教えてもらう。

DeepWikiの情報

deepwiki.com

これを見ながらメルカリでいろいろ見ていたところ、まだ生産終了していないTM-T70IIがよさそう。

調べている様子

結局ロール紙をおまけしてくれるということで6000円で買った。

やって来た・受難

エプソン TM-T70Ⅱ

1日後、まだ勢いも冷めぬまま家にレシートプリンターがやってきた。 箱を開けてコードをつないでみるも、思ってたEthernetポートがない...

どうやらTM-T70IIには数種類バリエーションがあるようで、このバリエーションにはEthernetポートもBluetoothも無線LANもないようだった。 LAN越しに制御することを目論んでいたので残念。

あきらめてUSB接続でMacやLinuxに接続してみるも、どうやら独自規格のデバイスとして認識されるようで使えそうもない。

プリンターにする

諦めて唯一デバイスドライバが提供されているWindowsに接続してみたところ、USBクラスを変更する設定があるじゃん、ってなった。

通信 I/F の設定

これをベンダークラスからプリンタークラスに変更することで、無事プリンターとして認識されるようになった。変更中はどうやらROMを弄っているようで、緊張感ある時間が3分くらいつづいた。

変更後、macに接続してプリンターキューにデータを積んでみたところ、

taiseiue@lily infra % sudo lpadmin -p tmt70ii -E \ -v 'usb://EPSON/TM-T70II-JPN?serial=544443460114230000' \ -m raw 
lpadmin: RAWキューはmacOSでは現在サポートされていません。

いつからかRAWキューは使えなくなったらしい。

RaspberryPiをプリントサーバーにする

家に転がってたRaspberryPiをプリントサーバーにすることにした。

まず接続を確認

taiseiue@recipt:~ $ lsusb | grep -i epson
`Bus 003 Device 002: ID 04b8:0e12 Seiko Epson Corp. TM-T70II`

うまく行ってそう。

試しにCLIから印刷をやってみたところうまくいった。

printf '\x1b@Hello TM-T70II\n\n\n\x1dV\x00' | sudo tee /dev/usb/lp0 > /dev/null

Hello TM-T70II

それからはとんとん拍子で、ブラウザ越しに印刷するための画面を用意して、Node.jsで印刷するようにした。 ReceiptLineがNodeで動いているのでそのまま使わせてもらった。

レシート印刷くん

ただ一点、私のレシートプリンターは横幅が58mmだったようで、AIが言うには30mm幅でレンダリングしないといけないようだった。

幅が違うとこうなる。水平線が折り返されてしまっている。

いろいろ遊んでみる

我輩は猫である

ほかにもいろいろ出してみたけど、遊ぶのに夢中で写真を撮り忘れてしまった。 さっきのレシート印刷くんは公開APIになっているので、ここにPOSTを投げればいつでも誰でもレシートを印刷できる。友達(AIも)とか、Webhookとか無限の活用方法があるのでいろいろ遊んでいきたいと思う。

学祭に使う用の用紙はその前に尽きてしまいそうなのでロール紙は追加で発注することにした。

RubyKaigi 2026に行きました

id:taiseiueです。4/22~24に北海道は函館で開催されていた「RubyKaigi 2026」に参加しました。

rubykaigi.org

参加にあたっては金銭面だけでなく、飛行機やホテルの手配までSTORESさんにお世話になりました。ありがとうございます!

product.st.inc

函館までの道のり

大変だった。大阪空港発函館空港着で優雅なプランを考えていたところ欠航になり、大阪→新千歳→函館となかなかな旅程になってしまいました。

新千歳空港駅にあった北海道と本州のサイズ比較

Day1

いろいろ聴講していました。

RubyBox、ちょっと前まで名前空間と呼ばれていたやつですね。現在のコードが所属するBoxを取得するテクニックや上手にrequireする方法は目から鱗でした。タイトルも"Box Building"と"函館"がかかっていていいですね。

mruby on C#もよかったです。Kyoto.csを開催している手前、C#話題聞かねばと聴講しました。The state of C#/.NETのスライドがよかったです。C#もまだまだモダンです。

これはmatzとのツーショです。


懇親会にはマグロ解体ショーがありました。 こちらは解体される前のマグロです。

Day2

朝早起きをして函館朝市に行きました。これは海鮮丼(うにいくらまぐろカスタム)です。味噌汁からカニが出てきたのがびっくりポイントでした。

この日はブースラリーを周っていました。ブースラリーを周るとピンバッジがもらえました。メタルな五稜郭がなんともオシャレでいいですね。

この日は以下のセッションを聴講していました。

中でもFFIでの、"CよりRubyで書いたほうが速くなる"というのが印象的でした。そんなばかな....

お昼休みはSmartHRさん提供のワークショップでBoard43というマイコンと入出力機器のセットで遊んでいました。私はこういう、制約が強い環境でプログラミングをするのが好きなので時間を忘れてコードをこねていました。

これはブートローダー的なものを作って遊んでいる様子です。Board43はデフォルトでは/home/app.rbを起動するように出来ているため、ひとつのアプリケーションしか自動起動できないのですが、それをブートローダーとすることでファイルシステム内のファイルを選択して起動できるようにするというやつです。

画像だとちょっとわかりにくいですが、アプリケーションを0f0f0f.rbのようなファイル名で保存しておくと、その色を選択して起動できる、という仕掛けです。

その日の夜はSTORES CAFEというノンアルコールミートアップに参加していました。自分がまだ知らない世界や現場の話をいろいろと伺えて楽しかったです。

hey.connpass.com

その後はDay0にやりそこねた函館観光をしました。 こちらは100万ドルの夜景です。

Day3

この日は早起きして温泉に行きました。会場ほぼ向かいのホテル雨宮館さんです。

函館湯の川温泉・ホテル雨宮館 – 【公式】函館アリーナ徒歩1分。格安宿泊・サウナ・ペット同伴・無料駐車場100台完備。

普通に大浴場に入るとお湯の温度がかなり熱くてびっくりしてしまい、しばらくぬるめの隣の湯船で慣らしていました。湯船熱いですねという温泉コミュニケーションができました。

お風呂上がりの牛乳がおいしかったです。

この日は以下のセッションを聴講しました。

本筋とは関係ないですが正規表現エンジンのOnigumo、名前がかっこよくて好きです。Onigumo(とそれの前身にあたるOniguruma)はRubyのために開発されたものではないため、RubyによるRubyのための正規表現エンジンを開発している、といった話題でした。

KeynoteのSpinelも印象的でした。Spinelは面白い仕掛けで、Prismを使ってRubyをparseした後、そのASTからC言語のコードを生成し、C compilerに生成結果を渡すことでAOTを実現しているのです。一度rubyからCにトランスパイルするという発想は参考になりました。

また、お昼休みは書店にお邪魔していました。思わぬご縁でRuby超入門の著者さんに本をプレゼントしていただきました! igaiga555さんのサインとMatzのサイン両方が入った最強のRuby入門本でRuby入門していこうと思います。

その夜はRubyIlluminationsに参加しました。id:dominion525さんやいべりこさんにはお世話になりました!一緒に縦ノリできてよかったです。

おごもりさんに五稜郭イルミネーションを見せてもらったりもしていました。ゲーミング五稜郭シンバル欲しいすぎる!

Day4

ここからはおまけです。 飛行機まで若干余裕があったので、函館港をお散歩していました。 たまたま見かけたオルゴール堂に入るとオルゴールがいっぱい並んでいてすごかったです。

大き目のオルゴールをまじまじ見つめていると、店員さんが鳴らしてくださりました。オルゴールでありながら管楽器やパーカッションまで鳴っていました。調べてみると、これはボア・セレステというオルガン付きオルゴールだそうです。

kawaguchikomusicforest.jp

その後は空港に戻り、北海道に別れをつげる作業をしていました。

これは函館空港にあったパタパタ式表示版です。近畿だとまだ近鉄の駅にありますが、残り少ないそうなので撮ってみました。

帰りの飛行機はポケモンのロコンがテーマの機体でした。座席や機体、乗務員さんのエプロンまでロコン仕様でよかったです。

いかがでしたか

RubyKaigiの参加は去年に引き続き2回目ですが、去年セッションを聴講していたNamespaceのリリース後の話を聞けるなど、2回目にして"当事者感"が味わえて嬉しかったです。言語は生き物で、常に誰かが触りつづけている、そういう実感を改めて持てました。

また、多数のみなさんにお世話になりました。学生支援でお世話になったSTORESさんはもちろん、pixivさんやid:sushichan044さん、id:dominion525さん、igaiga555さん、いべりこさん、おごもりさんなどなど様々な方にお世話になりました。また来年、ないし関西Ruby会議でもよろしくお願いします!

ssh越しでもpbcopy,pbpasteできるようにする

世は大LLM時代。設定ファイルをLLMに食べさせて出力を貼りつける、なんてこともしばしば起きるようになった。

macにはpbcopy,pbpasteというコマンドがあって、pbpaste > config.confとかしてやるとクリップボードの中身がconfig.confに入るので、これをssh越しでも使えるようにしていきたい。

OSC52

世間にはOSC52というのがある。これは何かというと、ESC ] ... ESC \みたいな連続したシーケンスから成っていて、ssh越しでもOSに指令を与えたり、受けたりすることができるものだ。これを使って、pbcopyを実行したときにssh越しにクライアントOSにクリップボードの中身を渡せばいいし、pbpasteを実行したときはssh越しにクライアントOS にクリップボードの中身を要求すればいい。

この手のアプローチは結構有名で、詳細に書かれている先人の記事をあげておく。

zenn.dev

できたもの

できたものがこちら。 これをPATHを通しておくと、こんな風につかえる。

$ cat config.conf | pbcopy
$ pbpaste > config.conf

gist.github.com

便利ですね。

macOSを更新するとNix環境が使えなくなる

定期的に再発するのでメモ。

TL;DR

/etc/zshrcの先頭に以下の行を足してやるといい。

# Nix
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
  . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
# End Nix

序論

ある日(YAPC::Fukuoka 2025のDay2に)macOSをアップデートしたらいつも使ってるコマンドにパスが通らなくなった。 おやや?と思って調べてみるとNixで入れたコマンドにパスが通ってなさそう。

このときは何かのはずみでNix環境が壊れたか?と思いNixごと削除して再度インストールしてしのいだ。

本論

macOS26.3に更新したときも再発。 流石に毎回再インストールするのは面倒なので、原因を調査したところ、$NIXPROFILESが空になってることに気付いた。

調べているとなぜかbashではNixが使えていそうなので調べてみると、/etc/zshrcからNix関係の記述が消えている。

$ cat /etc/bashrc | grep nix
            if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
     . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
$ cat /etc/zshrc | grep nix

どうやらmacOSの更新をすると/etc/zshrcが元にもどってしまうようだ。

結論

macOSの更新後にNix環境が使えなくなったときはnix-daemonが実行されていないことがあるので、/etc/zshrcの先頭に以下の行を足してやるといい。

# Nix
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
  . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
# End Nix

MCPパワーでClaudeにCosenseを書いてもらう

スマホからCosense書きにくい問題

私は普段メモ用にCosenseを使っているが、スマホからCosenseを書くのは結構難しい。 上手いことインデントがかけられなかったり、カーソルの移動が難しかったりと、結構普段使うにはむずいところがある。 そこで、yosider/cosense-mcp-server: An MCP Server for Cosenseをインターネット越しに使えるようにすることで、スマホのClaudeからCosenseを読み書きできるようにする。

MCPサーバーの建立

CosenseにアクセスするためのMCPサーバーとして、yosider/cosense-mcp-serverを使う。

github.com

このMCPサーバーはローカル動作を前提としていて、stdioで通信するため、インターネット越しに使えるようにするためにはstdioをHTTPに載せるいい感じのプロキシを使うことになる。 この手のニーズは既にあるようで、今回はその中でもメジャーなsparfenyuk/mcp-proxyを使うことにする。

github.com

mcp-proxyの導入

Node.js、pnpm、Cloudflare Tunnelの導入が別途必要

$ pnpm install -g mcp-proxy

あとは、

$ COSENSE_PROJECT_NAME=your_project_name \
   COSENSE_SID=your_sid \
   mcp-proxy --port 8080 -- pnpm -s dlx @yosider/cosense-mcp-server

で動作する。

your_project_nameは操作対象のプロジェクト名(例えばhttps://scrapbox.io/taiseiue なら"taiseiue")、your_sidはCosenseのセッションIDで置換する。 セッションIDはChromeでCosenseを開いて、以下の画像のように開発者ツールから値を取得する。

sidの取得

systemdで管理する

毎回コマンドを叩くのは面倒なので、サービスにしてsystemdで管理するようにする。

/etc/systemd/system/cosense-mcp.serviceに以下のように書く。your_usernameとyour_project_name、your_sidは各自置換されたい。

[Unit]
Description=Cosense MCP Server (mcp-proxy)
After=network.target

[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username

Environment=COSENSE_PROJECT_NAME=your_project_name
Environment=COSENSE_SID=your_sid

ExecStart=mcp-proxy --port 8080 -- pnpm -s dlx @yosider/cosense-mcp-server

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

後はインストールする

$ sudo systemctl daemon-reload
# 起動する
$ sudo systemctl start cosense-mcp

# ログを眺める
$ sudo journalctl -u cosense-mcp -f
Feb 25 13:23:26 lily systemd[1]: cosense-mcp.service: Scheduled restart job, restart counter is at 25.
Feb 25 13:23:26 lily systemd[1]: Started cosense-mcp.service - Cosense MCP Server (mcp-proxy).
Feb 25 13:23:26 lily systemd[1]: cosense-mcp.service: Main process exited, code=exited, status=203/EXEC
Feb 25 13:23:26 lily systemd[1]: cosense-mcp.service: Failed with result 'exit-code'.

パスが通っていなさそうなので、/etc/systemd/system/cosense-mcp.serviceにPATHを追加する。

[Service]
+ Environment=PATH=/usr/local/bin:/usr/bin:/bin:/home/your_username/.local/share/pnpm:/home/your_username/.local/share/mcp-proxy

その後、

$ sudo systemctl daemon-reload
$ sudo systemctl start cosense-mcp

$ sudo journalctl -u cosense-mcp -f

これで動作したので最後に以下のようにOS起動時に自動起動させる。

$ sudo systemctl enable cosense-mcp

Cloudflare Tunnelで公開する

動かしたMCPサーバーをCloudflare Tunnelで公開する。タダ乗りされると嫌なのでCloudflare Accessで認証も行う。

Cloudflare Tunnelでの公開は各自されたい。Cloudflare ZeroTrust>ネットワーク>トンネルから行える。

Cluodflare Accessで認証を設定する。まずはサービス資格情報を作成する。ここで生成された認証情報がOAuthトークンとシークレットになる。

サービス資格情報を作成する

次にポリシーから、先ほど作成した認証情報で認証を行うポリシーを作成する。

ポリシーの作成

最後にAccessアプリケーションを、セルフホスト用テンプレートで作成する。

アプリケーションの作成

これでMCPサーバーの構築は完了。

ClaudeにMCPサーバーを接続する

ClaudeのカスタマイズからMCPサーバーを接続する。

MCPサーバーの追加

上手く接続できるとこのようになる。

接続後の様子

試してみる

Cosenseの中身をリストさせている

Skillsの設定

Cosense記法はMarkdownと違うが、なかなかAIはMarkdown記法を使いたがるので、記法をSkillsに入れるようにした。 以下のページをExport for AIしてそれを読ませることでCosense記法をマスターしてもらう。

scrapbox.io

最終的にはこういうSkillsになった。

cosence-notation-skill.md · GitHub

自分で触った箇所としては、以下のようにClaudeが作成したこと、人間が見ていないことを識別できるようにタグを作成させるようにした。

##必須タグ
Claudeがコンテンツを作成・編集する際は、**必ずページの末尾に以下のタグを追加すること**:

#author:claude #waiting-review

- このタグはClaudeが作成・編集したことを示し、レビュー待ちを意味する
- ページの2行目に単独で記述する
- 省略不可

試してみる

例えば外出先でCosenseに面白いジョーク集を作りたくなった時に以下のようにやってもらえる。

iPhoneのClaudeアプリで書いてもらっている様子

より実践的な例だと、今日の日記を書いておいてもらえる。

日記もとい日報を書いてもらっている様子

どちらもそこそこちゃんと書けている。日報については、書きかたも空気を読んでいてくれていい感じ。

感想

そこそこ便利だと思ったけど、自分のメモ帳に知らない人が追記しているみたいな感覚でやや不気味だと思った。 ページだけ作っておいて、「あれ結局どういうことやったん」とか聞く分には便利かも。