[{"data":1,"prerenderedAt":1351},["ShallowReactive",2],{"category-開発・技術-1":3},{"items":4,"tagArticleCount":1275,"categoryesArticleCount":1336,"parPage":1350,"PageCount":402,"currentPage":1296,"selectedCategory":13,"selectedTag":-1},[5,425,747,874,1140],{"_path":6,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":10,"description":11,"category":12,"tags":14,"sumb":19,"sumb_alt":20,"createdAt":21,"updatedAt":21,"draft":8,"excerpt":22,"body":57,"_type":419,"_id":420,"_source":421,"_file":422,"_stem":423,"_extension":424},"\u002Fpost\u002F2026-07-20","post",false,"","ブログの編集をするのにVSCodeを使うのをやめた話","ブログ構築当初は記事書くのVSCodeでもいいか～と思っていたが、だんだんしんどくなってきて更新頻度が下がってきてしまっていた。",[13],"開発・技術",[15,16,17,18],"CMS","Nuxt","Python","VSCode","2026-07-20\u002F02.webp","writing blog","2026-07-20 22:01",{"type":23,"children":24},"root",[25,32,46],{"type":26,"tag":27,"props":28,"children":29},"element","p",{},[30],{"type":31,"value":11},"text",{"type":26,"tag":27,"props":33,"children":34},{},[35,37,44],{"type":31,"value":36},"なんでかな？と思って思い返してみると、やはり",{"type":26,"tag":38,"props":39,"children":41},"code",{"className":40},[],[42],{"type":31,"value":43},"VSCode開くのめんどい",{"type":31,"value":45},"ってことかな。と。",{"type":26,"tag":27,"props":47,"children":48},{},[49,51,55],{"type":31,"value":50},"ということで、思い切ってVSCodeで記事を書くのをやめてみた。",{"type":26,"tag":52,"props":53,"children":54},"br",{},[],{"type":31,"value":56},"\nというお話。",{"type":23,"children":58,"toc":401},[59,63,73,81,87,92,102,112,118,123,165,183,188,198,213,223,228,235,245,250,255,260,270,276,281,296,301,305,310,336,351,356,361,366,371,381,386,391],{"type":26,"tag":27,"props":60,"children":61},{},[62],{"type":31,"value":11},{"type":26,"tag":27,"props":64,"children":65},{},[66,67,72],{"type":31,"value":36},{"type":26,"tag":38,"props":68,"children":70},{"className":69},[],[71],{"type":31,"value":43},{"type":31,"value":45},{"type":26,"tag":27,"props":74,"children":75},{},[76,77,80],{"type":31,"value":50},{"type":26,"tag":52,"props":78,"children":79},{},[],{"type":31,"value":56},{"type":26,"tag":82,"props":83,"children":85},"h2",{"id":84},"変更前の構成",[86],{"type":31,"value":84},{"type":26,"tag":27,"props":88,"children":89},{},[90],{"type":31,"value":91},"構成っていうほどでもないんですが。",{"type":26,"tag":27,"props":93,"children":94},{},[95,97,100],{"type":31,"value":96},"NuxtContentsで構築したブログのPostフォルダをVSCodeで開き、Markdownを手打ちで編集していた。",{"type":26,"tag":52,"props":98,"children":99},{},[],{"type":31,"value":101},"\nPushもVSCode上からできるし結構便利じゃん？みたいな。",{"type":26,"tag":27,"props":103,"children":104},{},[105,107,110],{"type":31,"value":106},"公開はAmazon CodeCommitにPushされたのをトリガーにCodeBuildでビルドしてS3にアップロードしている。",{"type":26,"tag":52,"props":108,"children":109},{},[],{"type":31,"value":111},"\nのでランニングコストはほぼかかってない構成になってる。",{"type":26,"tag":113,"props":114,"children":116},"h3",{"id":115},"問題点",[117],{"type":31,"value":115},{"type":26,"tag":27,"props":119,"children":120},{},[121],{"type":31,"value":122},"問題点は以下の２点",{"type":26,"tag":124,"props":125,"children":126},"ol",{},[127,147],{"type":26,"tag":128,"props":129,"children":130},"li",{},[131,133],{"type":31,"value":132},"Frontmatter書くのがめんどい",{"type":26,"tag":134,"props":135,"children":136},"ul",{},[137],{"type":26,"tag":128,"props":138,"children":139},{},[140,142,145],{"type":31,"value":141},"記事の最初の部分に書く必要があるメタデータ的なアレ",{"type":26,"tag":52,"props":143,"children":144},{},[],{"type":31,"value":146},"\n記法が決まってるので手打ちするのは結構めんどい",{"type":26,"tag":128,"props":148,"children":149},{},[150,152],{"type":31,"value":151},"画像の管理が超めんどい",{"type":26,"tag":134,"props":153,"children":154},{},[155],{"type":26,"tag":128,"props":156,"children":157},{},[158,160,163],{"type":31,"value":159},"VSCodeで画像を管理するのであたりまえ・・・",{"type":26,"tag":52,"props":161,"children":162},{},[],{"type":31,"value":164},"\nフォルダに画像を入れた後は相対パスで記事中に参照の定義を書かないといけない。",{"type":26,"tag":27,"props":166,"children":167},{},[168,170,176,178,181],{"type":31,"value":169},"２点しかないじゃんって感じではあるが、",{"type":26,"tag":38,"props":171,"children":173},{"className":172},[],[174],{"type":31,"value":175},"記事を書く",{"type":31,"value":177},"という体験においては文章をどんどん打っていける快感みたいなのが重要で、挙げた２点はどちらもその文章を打っていくというところを致命的に中断させてしまう問題点である。",{"type":26,"tag":52,"props":179,"children":180},{},[],{"type":31,"value":182},"\n中断っていうか、１つ目については記事のつくりはじめのところで、いきなり腰を重くさせてしまう要因でもあった。",{"type":26,"tag":82,"props":184,"children":186},{"id":185},"変更後の構成",[187],{"type":31,"value":185},{"type":26,"tag":27,"props":189,"children":190},{},[191,193,196],{"type":31,"value":192},"リポジトリにPushして自動的にビルドするとかのところは変えていなくて、記事を書くというところだけ楽にできるようにした。",{"type":26,"tag":52,"props":194,"children":195},{},[],{"type":31,"value":197},"\n具体的には、PythonとFlaskを使ってちょっとしたWebアプリを作ってそこから編集できるようにした。",{"type":26,"tag":27,"props":199,"children":200},{},[201,203,206,208,211],{"type":31,"value":202},"DBとかあると管理が面倒なので、一覧系の機能とかタグ検索とかはPythonから直接フォルダをスキャンして実現している。",{"type":26,"tag":52,"props":204,"children":205},{},[],{"type":31,"value":207},"\n現状は記事の数が少ないのでこれでいいかなと。",{"type":26,"tag":52,"props":209,"children":210},{},[],{"type":31,"value":212},"\n今後記事が増えてきて動作が遅くなってきたら対策考えましょう。。。",{"type":26,"tag":27,"props":214,"children":215},{},[216,218,221],{"type":31,"value":217},"以下、各画面の紹介。",{"type":26,"tag":52,"props":219,"children":220},{},[],{"type":31,"value":222},"\nデザインはGeminiがやったんで、あんま気にしないでください。。。",{"type":26,"tag":113,"props":224,"children":226},{"id":225},"記事一覧",[227],{"type":31,"value":225},{"type":26,"tag":229,"props":230,"children":234},"article-image",{"preset":231,"src":232,"alt":233},"article_image","2026-07-22\u002Fimage.webp","記事の一覧画面",[],{"type":26,"tag":27,"props":236,"children":237},{},[238,240,243],{"type":31,"value":239},"メインの画面。記事の一覧を表示する。",{"type":26,"tag":52,"props":241,"children":242},{},[],{"type":31,"value":244},"\n公開ステータスとファイルの更新日が一応表示される。",{"type":26,"tag":27,"props":246,"children":247},{},[248],{"type":31,"value":249},"新規の時は右上のボタン、既存の記事は一覧を選択すれば記事の編集画面に遷移する。",{"type":26,"tag":113,"props":251,"children":253},{"id":252},"イメージライブラリ",[254],{"type":31,"value":252},{"type":26,"tag":229,"props":256,"children":259},{"preset":231,"src":257,"alt":258},"2026-07-22\u002Fimage_1.webp","イメージライブラリ画面",[],{"type":26,"tag":27,"props":261,"children":262},{},[263,265,268],{"type":31,"value":264},"画像の管理をする画面。",{"type":26,"tag":52,"props":266,"children":267},{},[],{"type":31,"value":269},"\nとりあえずで作ったが、編集画面からでもアップロードできるので今のところは間違って上げた画像を削除する用の画面になってる。",{"type":26,"tag":113,"props":271,"children":273},{"id":272},"pushボタン",[274],{"type":31,"value":275},"Pushボタン",{"type":26,"tag":229,"props":277,"children":280},{"preset":231,"src":278,"alt":279},"2026-07-22\u002Fimage_2.webp","Pushボタン画面",[],{"type":26,"tag":27,"props":282,"children":283},{},[284,286,289,291,294],{"type":31,"value":285},"記事の完成後にPushするボタン",{"type":26,"tag":52,"props":287,"children":288},{},[],{"type":31,"value":290},"\nコミットメッセージを自動でつけるか自分でつけるか一応選べる。",{"type":26,"tag":52,"props":292,"children":293},{},[],{"type":31,"value":295},"\nまあ自動といっても、日付と「自動でコミットしました」みたいな一言がつくだけだけど。",{"type":26,"tag":113,"props":297,"children":299},{"id":298},"記事の編集画面",[300],{"type":31,"value":298},{"type":26,"tag":229,"props":302,"children":304},{"preset":231,"src":303,"alt":298},"2026-07-22\u002Fimage_3.webp",[],{"type":26,"tag":27,"props":306,"children":307},{},[308],{"type":31,"value":309},"一番力が入ってる画面。（アタリマエ）",{"type":26,"tag":27,"props":311,"children":312},{},[313,315,318,324,326,329,331,334],{"type":31,"value":314},"真ん中にMarkdownエディタが表示されるのと、右上のほうに普段使いそうなボタンを配置してある。",{"type":26,"tag":52,"props":316,"children":317},{},[],{"type":26,"tag":38,"props":319,"children":321},{"className":320},[],[322],{"type":31,"value":323},"Tags\u002FCateogries",{"type":31,"value":325},"ボタンはタグとカテゴリをほかの記事から引っ張ってきて今開いてる記事に適用できるボタン。",{"type":26,"tag":52,"props":327,"children":328},{},[],{"type":31,"value":330},"\n問題点のところではFrontmatterで一括して書いちゃってたので言及してなかったけど、タグも結構負担だったんだよね。",{"type":26,"tag":52,"props":332,"children":333},{},[],{"type":31,"value":335},"\n記述を統一しないと、タグとかで記事がまとまってくれないので・・・",{"type":26,"tag":27,"props":337,"children":338},{},[339,341,344,346,349],{"type":31,"value":340},"しかも、なんと、この画面、Ctrl+Sで記事を保存できます。",{"type":26,"tag":52,"props":342,"children":343},{},[],{"type":31,"value":345},"\nめちゃ重要！！",{"type":26,"tag":52,"props":347,"children":348},{},[],{"type":31,"value":350},"\n仮保存のためにイチイチ右上のボタンをマウスで押すってのも微妙なので・・・",{"type":26,"tag":82,"props":352,"children":354},{"id":353},"今後追加したい機能",[355],{"type":31,"value":353},{"type":26,"tag":113,"props":357,"children":359},{"id":358},"画像の整理機能",[360],{"type":31,"value":358},{"type":26,"tag":27,"props":362,"children":363},{},[364],{"type":31,"value":365},"ファイルのフォルダ間移動とかリネームとか。",{"type":26,"tag":113,"props":367,"children":369},{"id":368},"プロフィールの編集画面",[370],{"type":31,"value":368},{"type":26,"tag":27,"props":372,"children":373},{},[374,376,379],{"type":31,"value":375},"あんまり変えないだろうけど、今後はVSCodeで開く機会がへるので変えたいときに変えられるといいなって感じ。",{"type":26,"tag":52,"props":377,"children":378},{},[],{"type":31,"value":380},"\n特にアイコンとかは頻繁に変えたいような気もする。",{"type":26,"tag":82,"props":382,"children":384},{"id":383},"まとめ",[385],{"type":31,"value":383},{"type":26,"tag":27,"props":387,"children":388},{},[389],{"type":31,"value":390},"ここまで書いててすでに楽しいので施策は成功！って気がする。",{"type":26,"tag":27,"props":392,"children":393},{},[394,396,399],{"type":31,"value":395},"改善案もどんどん出てくるのでモノづくり的な観点としてもいい感じですね。",{"type":26,"tag":52,"props":397,"children":398},{},[],{"type":31,"value":400},"\nやっぱツール作るのたのしい。",{"title":9,"searchDepth":402,"depth":402,"links":403},2,[404,408,414,418],{"id":84,"depth":402,"text":84,"children":405},[406],{"id":115,"depth":407,"text":115},3,{"id":185,"depth":402,"text":185,"children":409},[410,411,412,413],{"id":225,"depth":407,"text":225},{"id":252,"depth":407,"text":252},{"id":272,"depth":407,"text":275},{"id":298,"depth":407,"text":298},{"id":353,"depth":402,"text":353,"children":415},[416,417],{"id":358,"depth":407,"text":358},{"id":368,"depth":407,"text":368},{"id":383,"depth":402,"text":383},"markdown","content:post:2026-07-20.md","content","post\u002F2026-07-20.md","post\u002F2026-07-20","md",{"_path":426,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":427,"description":9,"category":428,"tags":429,"sumb":433,"sumb_alt":434,"sumb_fit":435,"createdAt":436,"updatedAt":436,"excerpt":437,"body":464,"_type":419,"_id":744,"_source":421,"_file":745,"_stem":746,"_extension":424},"\u002Fpost\u002F2024-12-08","ギャルがニュースをまとめてメールしてくれるやつを作った",[13],[430,431,432],"AWS","Bedrock","AI","2024-12-08\u002Fpose_galpeace_schoolgirl.png","no image image","outside","2024-12-07 23:30",{"type":23,"children":438},[439,444,454,459],{"type":26,"tag":82,"props":440,"children":442},{"id":441},"intro",[443],{"type":31,"value":441},{"type":26,"tag":27,"props":445,"children":446},{},[447,449,452],{"type":31,"value":448},"amazon nova 実装記念で何か作りたくなってしまった。",{"type":26,"tag":52,"props":450,"children":451},{},[],{"type":31,"value":453},"\n超安いらしい。",{"type":26,"tag":27,"props":455,"children":456},{},[457],{"type":31,"value":458},"めちゃくちゃ安いなら使い方に気を使わなくても気軽に使えるので今後のために触ってみたい感じもある。",{"type":26,"tag":27,"props":460,"children":461},{},[462],{"type":31,"value":463},"ということで簡単に何か作ってみることにする",{"type":23,"children":465,"toc":731},[466,470,478,482,486,491,506,511,516,521,531,537,547,557,563,568,581,586,592,602,612,617,622,628,641,651,661,666,671,676,686,692,697,702,717,721],{"type":26,"tag":82,"props":467,"children":468},{"id":441},[469],{"type":31,"value":441},{"type":26,"tag":27,"props":471,"children":472},{},[473,474,477],{"type":31,"value":448},{"type":26,"tag":52,"props":475,"children":476},{},[],{"type":31,"value":453},{"type":26,"tag":27,"props":479,"children":480},{},[481],{"type":31,"value":458},{"type":26,"tag":27,"props":483,"children":484},{},[485],{"type":31,"value":463},{"type":26,"tag":82,"props":487,"children":489},{"id":488},"作るモノのテーマ",[490],{"type":31,"value":488},{"type":26,"tag":27,"props":492,"children":493},{},[494,496,499,501,504],{"type":31,"value":495},"普段、ニュース記事を収集するためにRSSリーダーを愛用しているが、概要だけ読むとしても読むのが結構大変。",{"type":26,"tag":52,"props":497,"children":498},{},[],{"type":31,"value":500},"\nしかも、X等に夢中になってしまえばアプリを開くのを忘れてしまい、読み忘れてしまう。",{"type":26,"tag":52,"props":502,"children":503},{},[],{"type":31,"value":505},"\n（実際にRSSリーダーアプリを開いたら記事のところに３日前とか書いてあることがしばしば。。。）",{"type":26,"tag":27,"props":507,"children":508},{},[509],{"type":31,"value":510},"ということで、記事をAIに要約してメールで送ってもらおう！！",{"type":26,"tag":82,"props":512,"children":514},{"id":513},"今回作る仕組みの構想",[515],{"type":31,"value":513},{"type":26,"tag":229,"props":517,"children":520},{"preset":231,"src":518,"alt":519},"2024-12-08\u002Farchitect.png","architect.png",[],{"type":26,"tag":27,"props":522,"children":523},{},[524,526,529],{"type":31,"value":525},"今回はこんな感じ。",{"type":26,"tag":52,"props":527,"children":528},{},[],{"type":31,"value":530},"\n色々工夫する余地はあると思うが、今回はシンプルに作って使うことを目標として組む。",{"type":26,"tag":113,"props":532,"children":534},{"id":533},"lambdaについて",[535],{"type":31,"value":536},"Lambdaについて",{"type":26,"tag":27,"props":538,"children":539},{},[540,542,545],{"type":31,"value":541},"シンプルに処理はすべてLambdaに任せる。",{"type":26,"tag":52,"props":543,"children":544},{},[],{"type":31,"value":546},"\nPythonでサクッと作る。",{"type":26,"tag":27,"props":548,"children":549},{},[550,552,555],{"type":31,"value":551},"１日３回は情報が欲しいのでEventBridgeで定期実行させる。",{"type":26,"tag":52,"props":553,"children":554},{},[],{"type":31,"value":556},"\n諸般の事情からメールはLambdaから送ることができないので、SESを介して送る。",{"type":26,"tag":113,"props":558,"children":560},{"id":559},"dynamodbについて",[561],{"type":31,"value":562},"DynamoDBについて",{"type":26,"tag":27,"props":564,"children":565},{},[566],{"type":31,"value":567},"テーブルを２つ用意する。",{"type":26,"tag":134,"props":569,"children":570},{},[571,576],{"type":26,"tag":128,"props":572,"children":573},{},[574],{"type":31,"value":575},"RSSのURLを格納するためのテーブル",{"type":26,"tag":128,"props":577,"children":578},{},[579],{"type":31,"value":580},"過去に取得した記事を格納するためのテーブル",{"type":26,"tag":27,"props":582,"children":583},{},[584],{"type":31,"value":585},"どちらもシンプルに必要な項目だけ作った。",{"type":26,"tag":113,"props":587,"children":589},{"id":588},"bedrockについて",[590],{"type":31,"value":591},"Bedrockについて",{"type":26,"tag":27,"props":593,"children":594},{},[595,597,600],{"type":31,"value":596},"今回のかなめ。",{"type":26,"tag":52,"props":598,"children":599},{},[],{"type":31,"value":601},"\n実装されたばかりの最新モデルということで現在はバージニア北部リージョンにしかないっぽい。たぶん。",{"type":26,"tag":27,"props":603,"children":604},{},[605,607,610],{"type":31,"value":606},"センシティブな情報は扱わないので、適当にboto3でネット経由でアクセスする。",{"type":26,"tag":52,"props":608,"children":609},{},[],{"type":31,"value":611},"\nboto3経由だと関数とかもあって簡単。",{"type":26,"tag":27,"props":613,"children":614},{},[615],{"type":31,"value":616},"とりあえず、簡単に要約してもらうだけなので、ロール付けとキャラ付けの簡単なSystemPromptsを指定して、RSSから取得した記事の概要(description)をPromptsとして渡して要約してもらう。",{"type":26,"tag":27,"props":618,"children":619},{},[620],{"type":31,"value":621},"SystemPromptsは取り急ぎだったのでCopilotに書いてもらった。",{"type":26,"tag":113,"props":623,"children":625},{"id":624},"amazon-novaについて",[626],{"type":31,"value":627},"Amazon Novaについて",{"type":26,"tag":27,"props":629,"children":630},{},[631,633,639],{"type":31,"value":632},"今回はテキストしか扱わないので一番安い",{"type":26,"tag":38,"props":634,"children":636},{"className":635},[],[637],{"type":31,"value":638},"Amazon Nova Micro",{"type":31,"value":640},"にした。",{"type":26,"tag":27,"props":642,"children":643},{},[644,646,649],{"type":31,"value":645},"肝心のモデルの性能だが、結構いい感じ。",{"type":26,"tag":52,"props":647,"children":648},{},[],{"type":31,"value":650},"\n日本語性能は体感でCopilotとかGeminiくらいの性能はありそう。",{"type":26,"tag":27,"props":652,"children":653},{},[654,656,659],{"type":31,"value":655},"メールの整形まで任せてみたけど、レイアウトが入力内容次第で結構ブレるので今回はコードで整形することにしようと思う。",{"type":26,"tag":52,"props":657,"children":658},{},[],{"type":31,"value":660},"\nPromptsを工夫すれば整形も任せられそうな感じはあるけど、あんまそこに力入れても仕方ないので。。。",{"type":26,"tag":82,"props":662,"children":664},{"id":663},"出来上がったもの",[665],{"type":31,"value":663},{"type":26,"tag":27,"props":667,"children":668},{},[669],{"type":31,"value":670},"１日３回チェックして記事の追加があれば、ギャルがメールを送ってくれる。",{"type":26,"tag":229,"props":672,"children":675},{"preset":231,"src":673,"alt":674},"2024-12-08\u002Fmail_demo.png","mail_demo.png",[],{"type":26,"tag":27,"props":677,"children":678},{},[679,681,684],{"type":31,"value":680},"結局、テキスト量は結構あるが口語なので幾分読みやすい気がする。",{"type":26,"tag":52,"props":682,"children":683},{},[],{"type":31,"value":685},"\nしばらくはこれで運用してみよう。",{"type":26,"tag":82,"props":687,"children":689},{"id":688},"結局コストは",[690],{"type":31,"value":691},"結局コストは？",{"type":26,"tag":27,"props":693,"children":694},{},[695],{"type":31,"value":696},"こんな感じ。",{"type":26,"tag":229,"props":698,"children":701},{"preset":231,"src":699,"alt":700},"2024-12-08\u002Fbilling.png","billing.png",[],{"type":26,"tag":27,"props":703,"children":704},{},[705,707,710,712,715],{"type":31,"value":706},"inputトークンが1Ktokenあたり$0.000035",{"type":26,"tag":52,"props":708,"children":709},{},[],{"type":31,"value":711},"\noutputトークンが1Ktokenあたり$0.00014",{"type":26,"tag":52,"props":713,"children":714},{},[],{"type":31,"value":716},"\n他との比較はしてないが、この価格ならコストを全然気にしないで使ってもよさそう。",{"type":26,"tag":82,"props":718,"children":719},{"id":383},[720],{"type":31,"value":383},{"type":26,"tag":27,"props":722,"children":723},{},[724,726,729],{"type":31,"value":725},"思ったより安かったのと思ったより使えそうなモデルだったので、何かに活用したいって気になってきた。",{"type":26,"tag":52,"props":727,"children":728},{},[],{"type":31,"value":730},"\n今後何かあったらまた使ってみよう。",{"title":9,"searchDepth":402,"depth":402,"links":732},[733,734,735,741,742,743],{"id":441,"depth":402,"text":441},{"id":488,"depth":402,"text":488},{"id":513,"depth":402,"text":513,"children":736},[737,738,739,740],{"id":533,"depth":407,"text":536},{"id":559,"depth":407,"text":562},{"id":588,"depth":407,"text":591},{"id":624,"depth":407,"text":627},{"id":663,"depth":402,"text":663},{"id":688,"depth":402,"text":691},{"id":383,"depth":402,"text":383},"content:post:2024-12-08.md","post\u002F2024-12-08.md","post\u002F2024-12-08",{"_path":748,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":749,"description":9,"category":750,"tags":751,"sumb":754,"sumb_alt":434,"sumb_fit":435,"createdAt":755,"updatedAt":755,"excerpt":756,"body":773,"_type":419,"_id":871,"_source":421,"_file":872,"_stem":873,"_extension":424},"\u002Fpost\u002F2023-11-23","iPadでブログを書きたい　その2",[13],[752,753],"iPad","エディタ","2023-11-02\u002Ftxt.PNG","2023-11-23 20:30",{"type":23,"children":757},[758,763],{"type":26,"tag":82,"props":759,"children":761},{"id":760},"ipadでブログを書きたいその2",[762],{"type":31,"value":749},{"type":26,"tag":27,"props":764,"children":765},{},[766,768,771],{"type":31,"value":767},"前回の続き。",{"type":26,"tag":52,"props":769,"children":770},{},[],{"type":31,"value":772},"\nBuffer Editorが気になると言っていた件。",{"type":23,"children":774,"toc":863},[775,779,787,792,802,808,823,828,834,849,853],{"type":26,"tag":82,"props":776,"children":777},{"id":760},[778],{"type":31,"value":749},{"type":26,"tag":27,"props":780,"children":781},{},[782,783,786],{"type":31,"value":767},{"type":26,"tag":52,"props":784,"children":785},{},[],{"type":31,"value":772},{"type":26,"tag":82,"props":788,"children":790},{"id":789},"実際に書いてみる",[791],{"type":31,"value":789},{"type":26,"tag":27,"props":793,"children":794},{},[795,797,800],{"type":31,"value":796},"Buffer Editorを買って実際に書いてみる。",{"type":26,"tag":52,"props":798,"children":799},{},[],{"type":31,"value":801},"\nこの記事執筆時点で1500円でした。",{"type":26,"tag":113,"props":803,"children":805},{"id":804},"editorとして",[806],{"type":31,"value":807},"Editorとして",{"type":26,"tag":27,"props":809,"children":810},{},[811,813,816,818,821],{"type":31,"value":812},"フォントが20種類くらいから選べるのと、テーマも20種類くらいから選べるのでそれなりに普段使っている環境に近い画面を作れるのが良かった。",{"type":26,"tag":52,"props":814,"children":815},{},[],{"type":31,"value":817},"\n他はまあ普通というか期待通り。",{"type":26,"tag":52,"props":819,"children":820},{},[],{"type":31,"value":822},"\n普通がイチバンいいです。",{"type":26,"tag":27,"props":824,"children":825},{},[826],{"type":31,"value":827},"単純にコーディングとかテキストを扱う分には合格点。",{"type":26,"tag":113,"props":829,"children":831},{"id":830},"filemanager部分",[832],{"type":31,"value":833},"FileManager部分",{"type":26,"tag":27,"props":835,"children":836},{},[837,839,842,844,847],{"type":31,"value":838},"gitを接続して使ってみた。",{"type":26,"tag":52,"props":840,"children":841},{},[],{"type":31,"value":843},"\n操作感は可もなく不可もなくと言ったところだが、テキストファイル以外のファイルを扱いにくいのと、gitだと画面の操作方法が変わるのがかなり気になる。",{"type":26,"tag":52,"props":845,"children":846},{},[],{"type":31,"value":848},"\n画像ファイルはコピーすらできない？感じで今回の用途での常用は難しそう。",{"type":26,"tag":82,"props":850,"children":851},{"id":383},[852],{"type":31,"value":383},{"type":26,"tag":27,"props":854,"children":855},{},[856,858,861],{"type":31,"value":857},"コーディング目的ならかなりいいので買って損はなかったかなとは思う。",{"type":26,"tag":52,"props":859,"children":860},{},[],{"type":31,"value":862},"\n引き続き他のアプリや方法も検討してみよう・・・",{"title":9,"searchDepth":402,"depth":402,"links":864},[865,866,870],{"id":760,"depth":402,"text":749},{"id":789,"depth":402,"text":789,"children":867},[868,869],{"id":804,"depth":407,"text":807},{"id":830,"depth":407,"text":833},{"id":383,"depth":402,"text":383},"content:post:2023-11-23.md","post\u002F2023-11-23.md","post\u002F2023-11-23",{"_path":875,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":876,"description":9,"category":877,"tags":878,"sumb":754,"sumb_alt":434,"sumb_fit":435,"createdAt":879,"updatedAt":879,"excerpt":880,"body":897,"_type":419,"_id":1137,"_source":421,"_file":1138,"_stem":1139,"_extension":424},"\u002Fpost\u002F2023-11-02","iPadでブログを書きたい",[13],[752,753],"2023-11-02 20:40",{"type":23,"children":881},[882,887],{"type":26,"tag":82,"props":883,"children":885},{"id":884},"ipadでブログを書きたい",[886],{"type":31,"value":876},{"type":26,"tag":27,"props":888,"children":889},{},[890,892,895],{"type":31,"value":891},"Vueで構築してしまったが故にiPadとかスマホでブログを書けなくなってしまった。",{"type":26,"tag":52,"props":893,"children":894},{},[],{"type":31,"value":896},"\nデスクトップPCの電源をわざわざ入れるのも面倒なときもあるし、そもそもリビングでサクッと書きたいときもある。",{"type":23,"children":898,"toc":1127},[899,903,911,921,926,931,954,964,969,982,1000,1005,1020,1035,1040,1045,1069,1079,1084,1094,1113,1117],{"type":26,"tag":82,"props":900,"children":901},{"id":884},[902],{"type":31,"value":876},{"type":26,"tag":27,"props":904,"children":905},{},[906,907,910],{"type":31,"value":891},{"type":26,"tag":52,"props":908,"children":909},{},[],{"type":31,"value":896},{"type":26,"tag":27,"props":912,"children":913},{},[914,916,919],{"type":31,"value":915},"そういう時、今はノートPCを使って書いているが、だいぶ古いPCなので画面の解像度が低い。。。",{"type":26,"tag":52,"props":917,"children":918},{},[],{"type":31,"value":920},"\n他にたいした新しいノートPCを買うのも微妙なのでiPadで書きたい。",{"type":26,"tag":82,"props":922,"children":924},{"id":923},"要件を決める",[925],{"type":31,"value":923},{"type":26,"tag":27,"props":927,"children":928},{},[929],{"type":31,"value":930},"まずはアプリに求められる要件を決める",{"type":26,"tag":124,"props":932,"children":933},{},[934,939,944,949],{"type":26,"tag":128,"props":935,"children":936},{},[937],{"type":31,"value":938},"Git対応",{"type":26,"tag":128,"props":940,"children":941},{},[942],{"type":31,"value":943},"マークダウンのシンタックスハイライトに対応している",{"type":26,"tag":128,"props":945,"children":946},{},[947],{"type":31,"value":948},"できれば補完も効くと嬉しい",{"type":26,"tag":128,"props":950,"children":951},{},[952],{"type":31,"value":953},"内蔵ファイラーで画像も扱える",{"type":26,"tag":27,"props":955,"children":956},{},[957,959,962],{"type":31,"value":958},"この辺が必須の内容か。",{"type":26,"tag":52,"props":960,"children":961},{},[],{"type":31,"value":963},"\n（ざっくりVScode環境が欲しい感じではあるか・・・）",{"type":26,"tag":82,"props":965,"children":967},{"id":966},"いくつか候補を出してみる",[968],{"type":31,"value":966},{"type":26,"tag":27,"props":970,"children":971},{},[972,974,980],{"type":31,"value":973},"ちなみに、GitのリポジトリはGithubではないので",{"type":26,"tag":38,"props":975,"children":977},{"className":976},[],[978],{"type":31,"value":979},"Codespaces",{"type":31,"value":981},"は使えない。。。",{"type":26,"tag":134,"props":983,"children":984},{},[985,990,995],{"type":26,"tag":128,"props":986,"children":987},{},[988],{"type":31,"value":989},"LiquidLogic",{"type":26,"tag":128,"props":991,"children":992},{},[993],{"type":31,"value":994},"working copy + textastic",{"type":26,"tag":128,"props":996,"children":997},{},[998],{"type":31,"value":999},"Buffer Editor",{"type":26,"tag":113,"props":1001,"children":1003},{"id":1002},"liquidlogic",[1004],{"type":31,"value":989},{"type":26,"tag":27,"props":1006,"children":1007},{},[1008,1010,1013,1015,1018],{"type":31,"value":1009},"国産らしい",{"type":26,"tag":52,"props":1011,"children":1012},{},[],{"type":31,"value":1014},"\n建築関係向けのアプリらしいが、gitとかhtmlのシンタックスハイライト機能がついてる。",{"type":26,"tag":52,"props":1016,"children":1017},{},[],{"type":31,"value":1019},"\n年額1,000円、月額200円",{"type":26,"tag":27,"props":1021,"children":1022},{},[1023,1025,1028,1030,1033],{"type":31,"value":1024},"ちなみに記事はこのアプリで書いてる。",{"type":26,"tag":52,"props":1026,"children":1027},{},[],{"type":31,"value":1029},"\nファイラーの操作感がちょっと使いにくいけど使えないことはない。",{"type":26,"tag":52,"props":1031,"children":1032},{},[],{"type":31,"value":1034},"\n使ってるとUI上のボタンが消えることがあるので、その辺がイライラポイント。",{"type":26,"tag":27,"props":1036,"children":1037},{},[1038],{"type":31,"value":1039},"マークダウンのシンタックスハイライトが無いので、出来れば別のアプリに乗り換えたい。",{"type":26,"tag":113,"props":1041,"children":1043},{"id":1042},"working-copy-textastic",[1044],{"type":31,"value":994},{"type":26,"tag":27,"props":1046,"children":1047},{},[1048,1050,1053,1059,1061,1067],{"type":31,"value":1049},"結構みんな使ってる構成。",{"type":26,"tag":52,"props":1051,"children":1052},{},[],{"type":26,"tag":38,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":31,"value":1058},"working copy",{"type":31,"value":1060},"でgitの操作をして、ファイル編集は",{"type":26,"tag":38,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":31,"value":1066},"textastic",{"type":31,"value":1068},"でやる方式らしい。",{"type":26,"tag":27,"props":1070,"children":1071},{},[1072,1074,1077],{"type":31,"value":1073},"working copyが4000円、textasticが1200円。",{"type":26,"tag":52,"props":1075,"children":1076},{},[],{"type":31,"value":1078},"\nちょっとこれは高すぎるので却下だな。",{"type":26,"tag":113,"props":1080,"children":1082},{"id":1081},"buffer-editor",[1083],{"type":31,"value":999},{"type":26,"tag":27,"props":1085,"children":1086},{},[1087,1089,1092],{"type":31,"value":1088},"これも1200円くらいらしい。",{"type":26,"tag":52,"props":1090,"children":1091},{},[],{"type":31,"value":1093},"\nでも買い切り。安い。",{"type":26,"tag":27,"props":1095,"children":1096},{},[1097,1106,1108,1111],{"type":26,"tag":1098,"props":1099,"children":1103},"a",{"href":1100,"rel":1101},"https:\u002F\u002Fbuffereditor.com\u002F",[1102],"nofollow",[1104],{"type":31,"value":1105},"公式HP",{"type":31,"value":1107},"を見るとしっかりマークダウンも対応してるっぽい。",{"type":26,"tag":52,"props":1109,"children":1110},{},[],{"type":31,"value":1112},"\n次はこれを試してみるか。",{"type":26,"tag":82,"props":1114,"children":1115},{"id":383},[1116],{"type":31,"value":383},{"type":26,"tag":27,"props":1118,"children":1119},{},[1120,1122,1125],{"type":31,"value":1121},"フライングしてLiquidLogicを使ってみたが、理想とは違う結果であった。",{"type":26,"tag":52,"props":1123,"children":1124},{},[],{"type":31,"value":1126},"\nこんどBufferEditor使ってみるか・・・",{"title":9,"searchDepth":402,"depth":402,"links":1128},[1129,1130,1131,1136],{"id":884,"depth":402,"text":876},{"id":923,"depth":402,"text":923},{"id":966,"depth":402,"text":966,"children":1132},[1133,1134,1135],{"id":1002,"depth":407,"text":989},{"id":1042,"depth":407,"text":994},{"id":1081,"depth":407,"text":999},{"id":383,"depth":402,"text":383},"content:post:2023-11-02.md","post\u002F2023-11-02.md","post\u002F2023-11-02",{"_path":1141,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":1142,"description":9,"category":1143,"tags":1144,"sumb":1145,"sumb_alt":434,"createdAt":1146,"updatedAt":1146,"excerpt":1147,"body":1169,"_type":419,"_id":1272,"_source":421,"_file":1273,"_stem":1274,"_extension":424},"\u002Fpost\u002F2023-08-24","Aタグとnext-linkの使い方を間違えた話",[13],[16],"no-image-logo.png","2023-08-24 18:20",{"type":23,"children":1148},[1149,1154],{"type":26,"tag":82,"props":1150,"children":1152},{"id":1151},"何が起きたか",[1153],{"type":31,"value":1151},{"type":26,"tag":27,"props":1155,"children":1156},{},[1157,1159,1162,1164,1167],{"type":31,"value":1158},"このブログ、記事に貼り付けてある画像はnuxt-imageを使ってリサイズしている。",{"type":26,"tag":52,"props":1160,"children":1161},{},[],{"type":31,"value":1163},"\n記事を開いた時のロード時間を短くするためだ。",{"type":26,"tag":52,"props":1165,"children":1166},{},[],{"type":31,"value":1168},"\nただ、それだけでは等倍の画像を見れなくなってしまうので画像をクリックした時に等倍写真へ飛ぶようにリンクを張ってある。",{"type":23,"children":1170,"toc":1267},[1171,1175,1187,1202,1212,1217,1222,1232,1247,1252],{"type":26,"tag":82,"props":1172,"children":1173},{"id":1151},[1174],{"type":31,"value":1151},{"type":26,"tag":27,"props":1176,"children":1177},{},[1178,1179,1182,1183,1186],{"type":31,"value":1158},{"type":26,"tag":52,"props":1180,"children":1181},{},[],{"type":31,"value":1163},{"type":26,"tag":52,"props":1184,"children":1185},{},[],{"type":31,"value":1168},{"type":26,"tag":27,"props":1188,"children":1189},{},[1190,1192,1195,1197,1200],{"type":31,"value":1191},"そのため、画像をクリックしたときには画像ファイルが開かれるのが期待した動作なのだが、クリックするとなぜかnuxtのNotFoundページを開いてしまう。",{"type":26,"tag":52,"props":1193,"children":1194},{},[],{"type":31,"value":1196},"\nその時のブラウザのアドレスバーを見ると確かに画像のURLにはなっている。",{"type":26,"tag":52,"props":1198,"children":1199},{},[],{"type":31,"value":1201},"\nその証拠としてアドレスを直接打ち込んで遷移すると確かに画像が開かれる。",{"type":26,"tag":27,"props":1203,"children":1204},{},[1205,1207,1210],{"type":31,"value":1206},"しかも、NotFoundページでF5を押すとなぜか画像のページを開ける。",{"type":26,"tag":52,"props":1208,"children":1209},{},[],{"type":31,"value":1211},"\nアドレス直打ちと同じ挙動ということ？",{"type":26,"tag":27,"props":1213,"children":1214},{},[1215],{"type":31,"value":1216},"その後、色々調べてChromeの開発者ツールでログを追ってみたりしたが、問題の遷移時にはページをロードしてないらしいことがわかった以外収穫がなかった。",{"type":26,"tag":82,"props":1218,"children":1220},{"id":1219},"結局何が起きていたか",[1221],{"type":31,"value":1219},{"type":26,"tag":27,"props":1223,"children":1224},{},[1225,1227,1230],{"type":31,"value":1226},"色々なキーワードで調べていたところ、Generate時の動的ルーティングの話に辿り着いた。",{"type":26,"tag":52,"props":1228,"children":1229},{},[],{"type":31,"value":1231},"\nそういえば、nuxt-linkはrouter-linkの拡張なのでページ遷移扱いになるんだっけ。",{"type":26,"tag":27,"props":1233,"children":1234},{},[1235,1237,1240,1242,1245],{"type":31,"value":1236},"問題の画像を囲っているタグを確認したところ、Aタグではなくnuxt-linkになっていた。",{"type":26,"tag":52,"props":1238,"children":1239},{},[],{"type":31,"value":1241},"\nなるほどなるほど。",{"type":26,"tag":52,"props":1243,"children":1244},{},[],{"type":31,"value":1246},"\n遷移先のページがなかったのでNotFoundが出ていたのか。",{"type":26,"tag":82,"props":1248,"children":1250},{"id":1249},"解決",[1251],{"type":31,"value":1249},{"type":26,"tag":27,"props":1253,"children":1254},{},[1255,1257,1260,1262,1265],{"type":31,"value":1256},"というわけで問題の箇所でAタグを使うように変更して一件落着。",{"type":26,"tag":52,"props":1258,"children":1259},{},[],{"type":31,"value":1261},"\nファイルを直接貼り付けてダウンロードさせるような使い方の時も同じなのかな。",{"type":26,"tag":52,"props":1263,"children":1264},{},[],{"type":31,"value":1266},"\n詳細はわからないが、まあ想定通りに動くようになったのでよしとしよう。",{"title":9,"searchDepth":402,"depth":402,"links":1268},[1269,1270,1271],{"id":1151,"depth":402,"text":1151},{"id":1219,"depth":402,"text":1219},{"id":1249,"depth":402,"text":1249},"content:post:2023-08-24.md","post\u002F2023-08-24.md","post\u002F2023-08-24",[1276,1277,1279,1280,1282,1283,1285,1287,1289,1291,1292,1294,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1332,1333,1334,1335],{"tag":753,"count":407},{"tag":1278,"count":407},"旧ブログ",{"tag":16,"count":407},{"tag":1281,"count":402},"WordPress",{"tag":15,"count":402},{"tag":1284,"count":402},"Sony",{"tag":1286,"count":402},"グルメ",{"tag":1288,"count":402},"TWS",{"tag":1290,"count":402},"Ape",{"tag":752,"count":402},{"tag":1293,"count":402},"買ってよかったもの",{"tag":1295,"count":1296},"PC",1,{"tag":1298,"count":1296},"Windows",{"tag":1300,"count":1296},"Radeon",{"tag":1302,"count":1296},"Android",{"tag":1304,"count":1296},"Xperia",{"tag":1306,"count":1296},"スマホ",{"tag":1308,"count":1296},"Audio-Technica",{"tag":1310,"count":1296},"YAMAHA",{"tag":1312,"count":1296},"radius",{"tag":1314,"count":1296},"Noble Audio",{"tag":1316,"count":1296},"FALCON2",{"tag":1318,"count":1296},"レシピ",{"tag":1320,"count":1296},"ソーラー",{"tag":1322,"count":1296},"妄想シリーズ",{"tag":1324,"count":1296},"3Dプリンター",{"tag":1326,"count":1296},"ルーター",{"tag":1328,"count":1296},"OpenWrt",{"tag":1330,"count":1296},"Proxmox",{"tag":430,"count":1296},{"tag":431,"count":1296},{"tag":432,"count":1296},{"tag":17,"count":1296},{"tag":18,"count":1296},[1337,1339,1342,1344,1346,1348],{"category":13,"count":1338},8,{"category":1340,"count":1341},"ガジェット・オーディオ",4,{"category":1343,"count":1341},"ライフスタイル・雑記",{"category":1345,"count":1341},"ものづくり・DIY",{"category":1347,"count":402},"クルマ・バイク",{"category":1349,"count":1296},"インフラ・NW",5,1785332691760]