[{"data":1,"prerenderedAt":266},["ShallowReactive",2],{"article-2025-built-custom-keyboard":3,"articles-[]":120},{"id":4,"title":5,"alt":5,"body":6,"category":108,"cover":22,"createDate":109,"description":110,"extension":111,"homepage":112,"meta":113,"navigation":112,"path":114,"recommend":112,"seo":115,"showCover":112,"slug":116,"stem":117,"tag":118,"updated":109,"__hash__":119},"articles\u002Farticles\u002F2025\u002Fbuilt-custom-keyboard.md","キーボードを自作した",{"type":7,"value":8,"toc":99},"minimark",[9,13,16,23,27,30,33,36,39,42,45,48,51,60,63,66,69,72,75,78,81,84,87,90,93,96],[10,11,12],"p",{},"ずっと興味のあった自作キーボードに挑戦したので記録です。",[10,14,15],{},"作ったのはこちら。",[10,17,18],{},[19,20],"img",{"alt":21,"src":22},"20250309_built-custom-keyboard","https:\u002F\u002Fasset.hirameki.dev\u002Fimg%2Fblog%2Fjournal%2F2025%2F20250309_built-custom-keyboard%2F20250309_built-custom-keyboard_010.webp?alt=media",[24,25,26],"h2",{"id":26},"きっかけ",[10,28,29],{},"たまに X で流れてくる自作キーボードのポストを見てて、いつか自分も作ってみたいと思っていました。",[10,31,32],{},"自作キーボードを組み立てるためのパーツは専門店で買う必要があります。専門店は東京に遊舎工房さんなどがあります。",[10,34,35],{},"ですが東京に住んでない(飛行機に乗る必要がある)私は「パーツを買うただけに東京いくのは金銭的に厳しいし、初めての自作キーボードを通販で買うのも不安だな。。。」と二の足を踏んでいました。",[24,37,38],{"id":38},"しばらく経って",[10,40,41],{},"思い悩みながらもしばらく経った頃に別件で東京に行くことになり、いい機会ということで遊舎工房さんでパーツを買うことにしました。",[24,43,44],{"id":44},"買った",[10,46,47],{},"店員さんに相談しながらキットを選びました。やっぱり、初めては実店舗にして良かったです。",[10,49,50],{},"買ったキットはこちら。後、キーキャップを選んで購入しました。",[10,52,53],{},[54,55,59],"a",{"href":56,"rel":57},"https:\u002F\u002Fshop.yushakobo.jp\u002Fproducts\u002Fquick7",[58],"nofollow","Quick7",[10,61,62],{},"遊舎工房さんの帰り道の秋葉原で、はんだ付けセットも買って帰りました。",[24,64,65],{"id":65},"組み立て",[10,67,68],{},"学生時代以来にやったはんだ付けは、案の定苦戦しました。笑",[10,70,71],{},"ランプがうまく点かなかったり、手順を間違えてはんだ付けしたキーを全部取り外さなきゃいけなくなったりしました。",[10,73,74],{},"はんだの吸い取り線と、こて先クリーナーを後から買ったのですが、はじめから買えば良かったです。",[10,76,77],{},"苦戦しましたが、久しぶりのはんだ付けは楽しくもありました。",[10,79,80],{},"そして出来上がりました！",[10,82,83],{},"キーの設定は Remap で行いました。",[24,85,86],{"id":86},"専用アプリも作った",[10,88,89],{},"せっかくキーボード作ったので仕事で使いたいですよね？",[10,91,92],{},"でも今回作ったキーボードはフル入力できるわけじゃないしな。。。",[10,94,95],{},"と思っていたのですが、対応させるアプリを自分で作ってしまえば好きなように動かせるのでは？と思い立って自作キーボード用アプリも作りました。",[10,97,98],{},"その話はまた別の記事で書こうと思います。",{"title":100,"searchDepth":101,"depth":101,"links":102},"",2,[103,104,105,106,107],{"id":26,"depth":101,"text":26},{"id":38,"depth":101,"text":38},{"id":44,"depth":101,"text":44},{"id":65,"depth":101,"text":65},{"id":86,"depth":101,"text":86},"other","2025\u002F03\u002F09","ずっと興味のあった自作キーボードに挑戦した記録で、遊舎工房でキットやキーキャップを選び、秋葉原で工具を買い、久しぶりのはんだ付けに苦戦しながら完成させました。","md",true,{},"\u002Farticles\u002F2025\u002Fbuilt-custom-keyboard",{"title":5,"description":110},"built-custom-keyboard","articles\u002F2025\u002Fbuilt-custom-keyboard",[],"hh7ghpm1qBXQxFc7bObZbozmBf4Ry7fQ80diEsyFO4U",{"items":121,"total":265},[122,131,140,146,154,162,169,178,185,195,205,212,219,229,232,241,251,258],{"_path":123,"title":124,"description":125,"cover":126,"alt":124,"category":108,"categoryBasePath":127,"tags":128,"createDate":129,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2026\u002Fmy-app-stack\u002F","2年半のフルプラットフォーム開発について全部書く","2年半前、人生で一番追い詰められたプロジェクトが終わりました。少しだけ時間に余裕ができたので、個人で運用していたWebアプリをリプレイスすることにしました。そしてあれこれ試行錯誤していたら、2年半経っていました。やりたかった事を一通りやり切ることができたので、こだわり部分を紹介します。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_72_bold:フルプラットフォーム開発について全部書く,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fogp_my-web-app-stack_ztafxo.webp","\u002Farticles\u002Fcategory\u002Fother\u002F",[],"2026\u002F04\u002F08","ja",{"_path":132,"title":133,"description":134,"cover":135,"alt":135,"category":100,"categoryBasePath":136,"tags":137,"createDate":138,"homepage":139,"recommend":139,"showCover":139,"lang":130},"\u002Farticles\u002F2026\u002Fthe-goal\u002F","『ザ・ゴール ― 企業の究極の目的とは何か』を読んだ","「ザ・ゴール ― 企業の究極の目的とは何か」を読みました。",null,"\u002Farticles\u002Fcategory\u002F",[],"2026\u002F02\u002F10",false,{"_path":141,"title":142,"description":143,"cover":135,"alt":135,"category":100,"categoryBasePath":136,"tags":144,"createDate":145,"homepage":139,"recommend":139,"showCover":139,"lang":130},"\u002Farticles\u002F2026\u002Ftidy-first\u002F","『Tidy First? ―個人で実践する経験主義的ソフトウェア設計』を読んだ","「Tidy First? ―個人で実践する経験主義的ソフトウェア設計」を読んだ。",[],"2026\u002F01\u002F31",{"_path":147,"title":148,"description":100,"cover":149,"alt":148,"category":150,"categoryBasePath":151,"tags":152,"createDate":153,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fcapacitor\u002F","Vueでスマホアプリ開発【Capacitor】","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_title_cover_001_lu3vq4\u002Fl_title_cover_001_lu3vq4\u002Fl_text:MPLUS1p-Black.ttf_88_bold:Vue.jsで%0Aスマホアプリ%0A開発,co_rgb:374151,w_720,c_fit\u002Fv1712091289\u002Fthumbnail__003_prznvl.webp","vuejs","\u002Farticles\u002Fcategory\u002Fvuejs\u002F",[],"2025\u002F12\u002F27",{"_path":155,"title":156,"description":157,"cover":158,"alt":156,"category":108,"categoryBasePath":127,"tags":159,"createDate":160,"updated":161,"homepage":139,"recommend":139,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fthe-land-of-playful-fellows\u002F","紅白もちのひみつ『めっきらもっきら どおん どん』","奥さんに言われて「はっ」としました。もんもんびゃっこ達は赤いおもちを食べていて、かんたは白いおもち。これはなんらかの意味がこめられてるのでは？と思い考えてみました。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fv1712091289\u002Fthe-land-of-playful-fellows_vgkvsf",[],"2025\u002F12\u002F20","2025\u002F12\u002F22",{"_path":163,"title":164,"description":165,"cover":166,"alt":164,"category":108,"categoryBasePath":127,"tags":167,"createDate":168,"updated":168,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fpixel-astrophotography\u002F","星空写真をAndroid Pixelでキレイに撮る","キャンプ場での夜空はやっぱりキレイでした。星がよく見れます。肉眼で見れるこのキレイな星空を写真に残せたら嬉しいなーと思いながら、タイマーが終わるのを待ちます。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_title_cover_001_lu3vq4\u002Fl_title_cover_001_lu3vq4\u002Fl_text:MPLUS1p-Black.ttf_88_bold:星空写真を%0APixelで%0Aキレイに撮る,co_rgb:374151,w_720,c_fit\u002Fv1712091289\u002Fpixel-astrophotography",[],"2025\u002F09\u002F29",{"_path":170,"title":171,"description":172,"cover":173,"alt":171,"category":174,"categoryBasePath":175,"tags":176,"createDate":177,"updated":177,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fhosting-storybook\u002F","Storybookのダッシュボードを公開する","以前から Vue の UI ライブラリを Storybook を使って作っていました。その UI ライブラリの Storybook を静的サイトにビルドしてホスティングしてみました。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:Storybookの%0Aダッシュボードを%0A公開する,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png","storybook","\u002Farticles\u002Fcategory\u002Fstorybook\u002F",[],"2025\u002F05\u002F28",{"_path":179,"title":180,"description":181,"cover":182,"alt":180,"category":108,"categoryBasePath":127,"tags":183,"createDate":184,"updated":184,"homepage":139,"recommend":139,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fmemo\u002F","メモは脳の排水","紙、デジタルどちらでもなんでもメモに書き出します。書き出すことで考えが整理され、ネタ帳になってくれるので重宝しています。この「脳の排水」という言葉にグッときました。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:メモは脳の排水,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png",[],"2025\u002F05\u002F27",{"_path":186,"title":187,"description":188,"cover":189,"alt":187,"category":190,"categoryBasePath":191,"tags":192,"createDate":194,"updated":194,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fa2a-guide\u002F","A2A 試してみた","A2AとはAIエージェントとAIエージェントが連携するための規格です。Googleが2025年4月に発表しました。Googleのサンプルコードを動かしてみます。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:A2A 試してみた,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png","ai","\u002Farticles\u002Fcategory\u002Fai\u002F",[193],"AI","2025\u002F05\u002F01",{"_path":196,"title":197,"description":198,"cover":199,"alt":197,"category":200,"categoryBasePath":201,"tags":202,"createDate":203,"updated":204,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fdify-self-hosted-guide\u002F","Dify をセルフホストで立ち上げる","Dify をセルフホストで立ち上げる機会があったので、手順を紹介します。Dify（ディファイ）は、AIアプリを簡単に開発できるオープンソースのプラットフォームです。クラウド版とセルフホスト版があります。今回は Dify をセルフホストで立ち上げてみます。公式と同じ手順で実行する。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:Dify を%0Aセルフホストで%0A立ち上げる,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png","dify","\u002Farticles\u002Fcategory\u002Fdify\u002F",[],"2025\u002F04\u002F29","2025-04-29",{"_path":206,"title":207,"description":208,"cover":209,"alt":207,"category":108,"categoryBasePath":127,"tags":210,"createDate":211,"updated":211,"homepage":139,"recommend":139,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fphysical-bookstore\u002F","リアル書店の選書体験","今回で改めて書店の良さに気付けたのが良かったです。ただ、ネット通販や電子書籍には手軽に買えるなど別の良さがあると思ってます。なのでうまく使い分けていきたいです。","https:\u002F\u002Fasset.hirameki.dev\u002Fimg%2Fblog%2Fjournal%2F2025%2F20250425%2F20250425_010.webp?alt=media",[],"2025\u002F04\u002F25",{"_path":213,"title":214,"description":215,"cover":216,"alt":214,"category":190,"categoryBasePath":191,"tags":217,"createDate":218,"updated":218,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fcline-guide\u002F","Cline やってみた","Clineは自分自身でコマンドを実行できるようになっています。暴走しても被害がコンテナの中だけで済むようにDevContainersを使って今回試してみました。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:Cline%20やってみた,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png",[193],"2025\u002F04\u002F16",{"_path":220,"title":221,"description":222,"cover":223,"alt":221,"category":224,"categoryBasePath":225,"tags":226,"createDate":228,"updated":228,"homepage":112,"recommend":139,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fmy-oss-projects\u002F","今まで作った OSS プロジェクト","今まで、いくつか OSS プロジェクトを作ってきたので紹介します。番外編まで含めると全部で5つあります。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:今まで作った%0AOSS%20プロジェクト,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png","oss","\u002Farticles\u002Fcategory\u002Foss\u002F",[227],"OSS","2025\u002F04\u002F02",{"_path":230,"title":5,"description":110,"cover":22,"alt":5,"category":108,"categoryBasePath":127,"tags":231,"createDate":109,"updated":109,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fbuilt-custom-keyboard\u002F",[],{"_path":233,"title":234,"description":235,"cover":236,"alt":234,"category":237,"categoryBasePath":238,"tags":239,"createDate":240,"updated":240,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Fcloudflare-workers-cache-layer\u002F","Cloudflare Workers でキャッシュ層を作る","画像サーバーの前段に Cloudflare Workers でキャッシュ層を作ったら転送量が大幅に減ったので記録です。やりかたです。1. 以下のコードで Workers を作りカスタムドメインを当てる。2. ソースコードの URL を Workers に割り当てたドメインに変更する。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:Cloudflare Workers で%0Aキャッシュ層を%0A作る,co_rgb:fff,w_720,c_fit\u002Fv1712091289\u002Fcover_2025_rpwog8.png","web","\u002Farticles\u002Fcategory\u002Fweb\u002F",[],"2025\u002F02\u002F23",{"_path":242,"title":243,"description":244,"cover":245,"alt":243,"category":246,"categoryBasePath":247,"tags":248,"createDate":249,"updated":250,"homepage":112,"recommend":139,"showCover":112,"lang":130},"\u002Farticles\u002F2022\u002Flearn-programming\u002F","プログラミング勉強のコツを調べてみた","エラーに対する態度は3パターンあります。上達が早いのはもちろん3番目のパターンです。事前に知っておくことで、エラーに直面した時に少し落ち着いて対処できそうです。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_title_cover_001_lu3vq4\u002Fl_title_cover_001_lu3vq4\u002Fl_text:MPLUS1p-Black.ttf_88_bold:プログラミング%0A勉強のコツを%0A調べてみた,co_rgb:374151,w_720,c_fit\u002Fv1642574453\u002Falfons-morales-YLSwjSy7stw-unsplash_2_1_xnt6z7.png","programming","\u002Farticles\u002Fcategory\u002Fprogramming\u002F",[],"2022\u002F05\u002F23","2025\u002F02\u002F12",{"_path":252,"title":253,"description":254,"cover":255,"alt":253,"category":108,"categoryBasePath":127,"tags":256,"createDate":257,"updated":257,"homepage":112,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2025\u002Flearn-9-years\u002F","９年間、毎日プログラミングの勉強をしてる話","仕事から帰ってきて、ご飯食べたりお風呂に入って、一息ついたらパソコンにむかって12時まで作業する。初めはビジネス書とか経済の本を読んだりしてた。それから9年経った。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_title_cover_001_lu3vq4\u002Fl_title_cover_001_lu3vq4\u002Fl_text:MPLUS1p-Black.ttf_88_bold:９年間、毎日%0Aプログラミングの勉強をしてる話,co_rgb:374151,w_720,c_fit\u002Fv1712091289\u002Fthumbnail__001_tdrr4g.webp",[],"2025\u002F02\u002F10",{"_path":259,"title":260,"description":261,"cover":262,"alt":260,"category":108,"categoryBasePath":127,"tags":263,"createDate":264,"updated":264,"homepage":139,"recommend":112,"showCover":112,"lang":130},"\u002Farticles\u002F2021\u002Fstudy-5-years\u002F","5年間ほぼ毎日プログラミングの勉強をするためにやったこと","人生の節目で一時的に勉強してない時期もありました。ですが、それ以外のほとんどの期間で毎日プログラミングを勉強しています。楽しいので、あまり勉強と思っていませんが。","https:\u002F\u002Fimage.hirameki.dev\u002Ftakasqr\u002Fimage\u002Fupload\u002Fl_text:MPLUS1p-Black.ttf_88_bold:5年間ほぼ毎日%0Aプログラミングの%0A勉強をする為に%0Aやったこと,co_rgb:fff,w_720,c_fit\u002Fv1642574453\u002Faaron-burden-QJDzYT_K8Xg-unsplash_1_xaxykh.png",[],"2021\u002F08\u002F01",18,1776498755852]