[{"data":1,"prerenderedAt":405},["ShallowReactive",2],{"post-2026-07-20":3},{"article":4,"tagArticleCount":316,"categoryesArticleCount":377},{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"category":11,"tags":14,"sumb":18,"sumb_alt":19,"createdAt":20,"updatedAt":20,"draft":7,"excerpt":21,"body":50,"_type":310,"_id":311,"_source":312,"_file":313,"_stem":314,"_extension":315},"\u002Fpost\u002F2026-07-20","post",false,"","ブログの編集をするのにVSCodeを使うのをやめた話","ブログ構築当初は記事書くのVSCodeでもいいか～と思っていたが、だんだんしんどくなってきて更新頻度が下がってきてしまっていた。",[12,13],"blog","dev",[15,16,17],"CMS","nuxt","Python","2026-07-20\u002F02.webp","writing blog","2026-07-20 22:01",{"type":22,"children":23},"root",[24,31,45],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":10},"text",{"type":25,"tag":26,"props":32,"children":33},{},[34,36,43],{"type":30,"value":35},"なんでかな？と思って思い返してみると、やはり",{"type":25,"tag":37,"props":38,"children":40},"code",{"className":39},[],[41],{"type":30,"value":42},"VSCode開くのめんどい",{"type":30,"value":44},"ってことかな。と。",{"type":25,"tag":26,"props":46,"children":47},{},[48],{"type":30,"value":49},"ということで、思い切ってVSCodeで記事を書くのをやめてみた。\nというお話。",{"type":22,"children":51,"toc":292},[52,56,66,70,76,81,86,91,97,102,134,147,152,157,162,167,172,179,184,189,194,199,204,210,215,220,225,229,234,247,252,257,262,267,272,277,282,287],{"type":25,"tag":26,"props":53,"children":54},{},[55],{"type":30,"value":10},{"type":25,"tag":26,"props":57,"children":58},{},[59,60,65],{"type":30,"value":35},{"type":25,"tag":37,"props":61,"children":63},{"className":62},[],[64],{"type":30,"value":42},{"type":30,"value":44},{"type":25,"tag":26,"props":67,"children":68},{},[69],{"type":30,"value":49},{"type":25,"tag":71,"props":72,"children":74},"h2",{"id":73},"変更前の構成",[75],{"type":30,"value":73},{"type":25,"tag":26,"props":77,"children":78},{},[79],{"type":30,"value":80},"構成っていうほどでもないんですが。",{"type":25,"tag":26,"props":82,"children":83},{},[84],{"type":30,"value":85},"NuxtContentsで構築したブログのPostフォルダをVSCodeで開き、Markdownを手打ちで編集していた。\nPushもVSCode上からできるし結構便利じゃん？みたいな。",{"type":25,"tag":26,"props":87,"children":88},{},[89],{"type":30,"value":90},"公開はAmazon CodeCommitにPushされたのをトリガーにCodeBuildでビルドしてS3にアップロードしている。\nのでランニングコストはほぼかかってない構成になってる。",{"type":25,"tag":92,"props":93,"children":95},"h3",{"id":94},"問題点",[96],{"type":30,"value":94},{"type":25,"tag":26,"props":98,"children":99},{},[100],{"type":30,"value":101},"問題点は以下の２点",{"type":25,"tag":103,"props":104,"children":105},"ol",{},[106,121],{"type":25,"tag":107,"props":108,"children":109},"li",{},[110,112],{"type":30,"value":111},"Frontmatter書くのがめんどい",{"type":25,"tag":113,"props":114,"children":115},"ul",{},[116],{"type":25,"tag":107,"props":117,"children":118},{},[119],{"type":30,"value":120},"記事の最初の部分に書く必要があるメタデータ的なアレ\n記法が決まってるので手打ちするのは結構めんどい",{"type":25,"tag":107,"props":122,"children":123},{},[124,126],{"type":30,"value":125},"画像の管理が超めんどい",{"type":25,"tag":113,"props":127,"children":128},{},[129],{"type":25,"tag":107,"props":130,"children":131},{},[132],{"type":30,"value":133},"VSCodeで画像を管理するのであたりまえ・・・\nフォルダに画像を入れた後は相対パスで記事中に参照の定義を書かないといけない。",{"type":25,"tag":26,"props":135,"children":136},{},[137,139,145],{"type":30,"value":138},"２点しかないじゃんって感じではあるが、",{"type":25,"tag":37,"props":140,"children":142},{"className":141},[],[143],{"type":30,"value":144},"記事を書く",{"type":30,"value":146},"という体験においては文章をどんどん打っていける快感みたいなのが重要で、挙げた２点はどちらもその文章を打っていくというところを致命的に中断させてしまう問題点である。\n中断っていうか、１つ目については記事のつくりはじめのところで、いきなり腰を重くさせてしまう要因でもあった。",{"type":25,"tag":71,"props":148,"children":150},{"id":149},"変更後の構成",[151],{"type":30,"value":149},{"type":25,"tag":26,"props":153,"children":154},{},[155],{"type":30,"value":156},"リポジトリにPushして自動的にビルドするとかのところは変えていなくて、記事を書くというところだけ楽にできるようにした。\n具体的には、PythonとFlaskを使ってちょっとしたWebアプリを作ってそこから編集できるようにした。",{"type":25,"tag":26,"props":158,"children":159},{},[160],{"type":30,"value":161},"DBとかあると管理が面倒なので、一覧系の機能とかタグ検索とかはPythonから直接フォルダをスキャンして実現している。\n現状は記事の数が少ないのでこれでいいかなと。\n今後記事が増えてきて動作が遅くなってきたら対策考えましょう。。。",{"type":25,"tag":26,"props":163,"children":164},{},[165],{"type":30,"value":166},"以下、各画面の紹介。\nデザインはGeminiがやったんで、あんま気にしないでください。。。",{"type":25,"tag":92,"props":168,"children":170},{"id":169},"記事一覧",[171],{"type":30,"value":169},{"type":25,"tag":173,"props":174,"children":178},"article-image",{"preset":175,"src":176,"alt":177},"article_image","2026-07-22\u002Fimage.webp","記事の一覧画面",[],{"type":25,"tag":26,"props":180,"children":181},{},[182],{"type":30,"value":183},"メインの画面。記事の一覧を表示する。\n公開ステータスとファイルの更新日が一応表示される。",{"type":25,"tag":26,"props":185,"children":186},{},[187],{"type":30,"value":188},"新規の時は右上のボタン、既存の記事は一覧を選択すれば記事の編集画面に遷移する。",{"type":25,"tag":92,"props":190,"children":192},{"id":191},"イメージライブラリ",[193],{"type":30,"value":191},{"type":25,"tag":173,"props":195,"children":198},{"preset":175,"src":196,"alt":197},"2026-07-22\u002Fimage_1.webp","イメージライブラリ画面",[],{"type":25,"tag":26,"props":200,"children":201},{},[202],{"type":30,"value":203},"画像の管理をする画面。\nとりあえずで作ったが、編集画面からでもアップロードできるので今のところは間違って上げた画像を削除する用の画面になってる。",{"type":25,"tag":92,"props":205,"children":207},{"id":206},"pushボタン",[208],{"type":30,"value":209},"Pushボタン",{"type":25,"tag":173,"props":211,"children":214},{"preset":175,"src":212,"alt":213},"2026-07-22\u002Fimage_2.webp","Pushボタン画面",[],{"type":25,"tag":26,"props":216,"children":217},{},[218],{"type":30,"value":219},"記事の完成後にPushするボタン\nコミットメッセージを自動でつけるか自分でつけるか一応選べる。\nまあ自動といっても、日付と「自動でコミットしました」みたいな一言がつくだけだけど。",{"type":25,"tag":92,"props":221,"children":223},{"id":222},"記事の編集画面",[224],{"type":30,"value":222},{"type":25,"tag":173,"props":226,"children":228},{"preset":175,"src":227,"alt":222},"2026-07-22\u002Fimage_3.webp",[],{"type":25,"tag":26,"props":230,"children":231},{},[232],{"type":30,"value":233},"一番力が入ってる画面。（アタリマエ）",{"type":25,"tag":26,"props":235,"children":236},{},[237,239,245],{"type":30,"value":238},"真ん中にMarkdownエディタが表示されるのと、右上のほうに普段使いそうなボタンを配置してある。\n",{"type":25,"tag":37,"props":240,"children":242},{"className":241},[],[243],{"type":30,"value":244},"Tags\u002FCateogries",{"type":30,"value":246},"ボタンはタグとカテゴリをほかの記事から引っ張ってきて今開いてる記事に適用できるボタン。\n問題点のところではFrontmatterで一括して書いちゃってたので言及してなかったけど、タグも結構負担だったんだよね。\n記述を統一しないと、タグとかで記事がまとまってくれないので・・・",{"type":25,"tag":26,"props":248,"children":249},{},[250],{"type":30,"value":251},"しかも、なんと、この画面、Ctrl+Sで記事を保存できます。\nめちゃ重要！！\n仮保存のためにイチイチ右上のボタンをマウスで押すってのも微妙なので・・・",{"type":25,"tag":71,"props":253,"children":255},{"id":254},"今後追加したい機能",[256],{"type":30,"value":254},{"type":25,"tag":92,"props":258,"children":260},{"id":259},"画像の整理機能",[261],{"type":30,"value":259},{"type":25,"tag":26,"props":263,"children":264},{},[265],{"type":30,"value":266},"ファイルのフォルダ間移動とかリネームとか。",{"type":25,"tag":92,"props":268,"children":270},{"id":269},"プロフィールの編集画面",[271],{"type":30,"value":269},{"type":25,"tag":26,"props":273,"children":274},{},[275],{"type":30,"value":276},"あんまり変えないだろうけど、今後はVSCodeで開く機会がへるので変えたいときに変えられるといいなって感じ。\n特にアイコンとかは頻繁に変えたいような気もする。",{"type":25,"tag":71,"props":278,"children":280},{"id":279},"まとめ",[281],{"type":30,"value":279},{"type":25,"tag":26,"props":283,"children":284},{},[285],{"type":30,"value":286},"ここまで書いててすでに楽しいので施策は成功！って気がする。",{"type":25,"tag":26,"props":288,"children":289},{},[290],{"type":30,"value":291},"改善案もどんどん出てくるのでモノづくり的な観点としてもいい感じですね。\nやっぱツール作るのたのしい。",{"title":8,"searchDepth":293,"depth":293,"links":294},2,[295,299,305,309],{"id":73,"depth":293,"text":73,"children":296},[297],{"id":94,"depth":298,"text":94},3,{"id":149,"depth":293,"text":149,"children":300},[301,302,303,304],{"id":169,"depth":298,"text":169},{"id":191,"depth":298,"text":191},{"id":206,"depth":298,"text":209},{"id":222,"depth":298,"text":222},{"id":254,"depth":293,"text":254,"children":306},[307,308],{"id":259,"depth":298,"text":259},{"id":269,"depth":298,"text":269},{"id":279,"depth":293,"text":279},"markdown","content:post:2026-07-20.md","content","post\u002F2026-07-20.md","post\u002F2026-07-20","md",[317,319,320,321,323,325,327,329,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376],{"tag":318,"count":298},"editor",{"tag":16,"count":298},{"tag":15,"count":293},{"tag":322,"count":293},"tws",{"tag":324,"count":293},"Ape",{"tag":326,"count":293},"iPad",{"tag":328,"count":293},"bestbuy",{"tag":330,"count":331},"PC",1,{"tag":333,"count":331},"Windows",{"tag":335,"count":331},"Radeon",{"tag":337,"count":331},"Android",{"tag":339,"count":331},"Xperia",{"tag":341,"count":331},"Sony",{"tag":343,"count":331},"dashi",{"tag":345,"count":331},"sony",{"tag":347,"count":331},"audio_technica",{"tag":349,"count":331},"yamaha",{"tag":351,"count":331},"radius",{"tag":353,"count":331},"NobleAudio",{"tag":355,"count":331},"FALCON2",{"tag":357,"count":331},"レシピ",{"tag":359,"count":331},"料理",{"tag":361,"count":331},"ソーラー",{"tag":363,"count":331},"妄想",{"tag":365,"count":331},"3Dプリンター",{"tag":367,"count":331},"ルーター",{"tag":369,"count":331},"OpenWrt",{"tag":371,"count":331},"Proxmox",{"tag":373,"count":331},"AWS",{"tag":375,"count":331},"Bedrock",{"tag":17,"count":331},[378,380,382,384,386,388,390,391,393,395,396,398,400,402,404],{"category":12,"count":379},17,{"category":381,"count":298},"旧blog",{"category":383,"count":293},"グルメ",{"category":385,"count":293},"audio",{"category":387,"count":293},"バイク",{"category":389,"count":293},"ものづくり",{"category":13,"count":293},{"category":392,"count":293},"工作",{"category":394,"count":331},"wordpress",{"category":330,"count":331},{"category":397,"count":331},"SmartPhone",{"category":399,"count":331},"DIY",{"category":401,"count":331},"tech",{"category":403,"count":331},"NW",{"category":373,"count":331},1784728467688]