[{"data":1,"prerenderedAt":333},["ShallowReactive",2],{"$faOqcsUWYzEU_xfog9MdACPLLQL3qY_Kh1M-5grRD5T4":3,"$fWaqGm4OOwV-SURYnm7URAyn14Ovl84aMutobUOJ9bns":91,"$fxAUChxc1JE-CnqhDLcdvLNypd80-qgE7UNDBRh4_q8c":206},{"entry":4,"before":53},{"metadata":5,"sys":8,"fields":28},{"tags":6,"concepts":7},[],[],{"space":9,"id":14,"type":15,"createdAt":16,"updatedAt":16,"environment":17,"publishedVersion":21,"revision":22,"contentType":23,"locale":27},{"sys":10},{"type":11,"linkType":12,"id":13},"Link","Space","jmfsolylwbqz","65OMt4x9G2qTA4GZTvpN1G","Entry","2026-08-15T15:23:40.413Z",{"sys":18},{"id":19,"type":11,"linkType":20},"master","Environment",27,1,{"sys":24},{"type":11,"linkType":25,"id":26},"ContentType","blogPost","ja-JP",{"title":29,"slug":30,"category":31,"body":49,"description":50,"legacy":51,"enableAd":52,"enableCommentField":52},"[MX Keys] ゲームのスクリーンショットを撮りたいだけなのに、Shiftキーが入力されてしまう","mx-keys-print-screen",{"metadata":32,"sys":35,"fields":46},{"tags":33,"concepts":34},[],[],{"space":36,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":40,"publishedVersion":42,"revision":22,"contentType":43,"locale":27},{"sys":37},{"type":11,"linkType":12,"id":13},"5MKCmbhhcqboMXodYszCG6","2021-11-16T05:31:22.875Z",{"sys":41},{"id":19,"type":11,"linkType":20},3,{"sys":44},{"type":11,"linkType":25,"id":45},"category",{"name":47,"slug":48},"役立ち情報","useful","## 結論\n\nLogi Options+を開き、スクリーンショットキーに「アプリケーションを開く」アクションを割り当てます。そして、アプリケーションパスに以下のように入力します。\n\n```\nms-screenclip:\n```\n\n![image.png](https://images.ctfassets.net/jmfsolylwbqz/2kixvoed1KiRze9owCMlNv/4b1696033d5972df818903d38d4f724f/image.webp)\n\nこれでいつでも、キーに影響することなくSnipping Toolを呼び出せます。\n\n## 原因\n\nLogi Options+がデフォルトで提供している「画面の切り取り」アクションは、内部的に以前まではPrint Screenキーの押下を行っていたが、近頃「Win + Shift + S」のショートカットキーの押下によるものへ変更された。このせいで、ショートカットキーを構成しているShiftキーにゲームが反応してしまい、ダッシュやらスニークやらが起きてしまっていた。\n\n## ms-screenclipとは\n\nhttps://learn.microsoft.com/ja-jp/windows/apps/develop/launch/launch-screen-snipping\n\nSnipping Toolが提供しているURIスキームです。「非推奨」と書かれていますが、なぜか手元の環境では新しいスキームが機能しませんでした。一時的なバグかも？一応記事執筆時点では動きます。","",false,true,{"metadata":54,"sys":57,"fields":69},{"tags":55,"concepts":56},[],[],{"space":58,"id":60,"type":15,"createdAt":61,"updatedAt":62,"environment":63,"publishedVersion":65,"revision":66,"contentType":67,"locale":27},{"sys":59},{"type":11,"linkType":12,"id":13},"43SeLsLF422R4RGvtCH2y6","2026-06-28T13:08:24.808Z","2026-07-27T12:14:50.520Z",{"sys":64},{"id":19,"type":11,"linkType":20},109,5,{"sys":68},{"type":11,"linkType":25,"id":26},{"title":70,"slug":71,"category":72,"body":90,"description":50,"legacy":51,"enableAd":52,"enableCommentField":52},"Dart/Flutterの非同期の仕組みについて思うところをつらつらと","flutter-async-architecture",{"metadata":73,"sys":76,"fields":87},{"tags":74,"concepts":75},[],[],{"space":77,"id":79,"type":15,"createdAt":80,"updatedAt":81,"environment":82,"publishedVersion":84,"revision":42,"contentType":85,"locale":27},{"sys":78},{"type":11,"linkType":12,"id":13},"4QnljevVGe4bI4JNVdk2Zc","2021-05-02T15:11:20.089Z","2021-11-16T05:32:02.763Z",{"sys":83},{"id":19,"type":11,"linkType":20},17,{"sys":86},{"type":11,"linkType":25,"id":45},{"name":88,"slug":89},"どうでもいいこと","others","Dartのlintルールに「[discarded_futures](https://dart.dev/tools/linter-rules/discarded_futures)」「[unawaited_futures](https://dart.dev/tools/linter-rules/unawaited_futures)」というものがある。これらは元々、Futureをawaitしなかったことによる意図しないバグを防ぐ目的のルールで、意図的にFutureを捨てていることを`unawaited`関数でラップして明示するか、大人しくawaitするかのどちらかに強制できる。\n\nしかし、Flutter側の設計に目を向けると、少数のユースケースのためにFutureを戻り値に設定している関数が大量に存在する。その一例が`Navigator.push`。このルールに従おうとすると、画面遷移のための関数呼び出しの大半をunawaitedでラップする必要がある。バグを防ぐためのlintが、大量のコードノイズを発生させてしまう。そこで、2025年頃に「[@awaitNotRequired](https://api.flutter.dev/flutter/meta/awaitNotRequired-constant.html)」アノテーションがmetaパッケージに追加され、これがついている関数の戻り値のFutureは捨てても怒られなくなった。現在のFlutterプロジェクトではこれらの関数にこのアノテーションを付ける作業が行われている。しかし、これではawaitすべきユースケースとすべきでないユースケースが区別できず、苦肉の策感は否めない。\n\n私が思うに、それぞれのユースケースで関数を分けるべきだったと思う。例えば、voidを返す`Navigator.push`、Futureを返す`Navigator.pushReturning`というように。そうすれば、静的解析に余計な負荷をかけずに済むし、awaitすべき関数とそうでない関数を簡単に区別できる。\n\nただこれは大規模API変更になるので、今更受け入れられるかは微妙なところ。シグネチャーも二重で定義が必要になり、ボイラープレートが増える。今までの慣習や記事が古くなる。結構影響はデカい。探してもメソッド分割に関する議論は全く見当たらなかったが、Issueを出すかはかなり悩むところ。すでに追加**されてしまった**@awaitNotRequiredとの兼ね合いも（分割の方針を取るとこのアノテーションの存在意義が行方不明に）。\n\nということを、私のプロジェクトにこの2つのlintルールを追加してみて思ったところ。lintの方向性は正しいのにその周辺がクソなので、このプロジェクトでは結局元に戻そうと思う。",{"sys":92,"total":94,"skip":95,"limit":66,"items":96,"includes":192},{"type":93},"Array",31,0,[97,116,135,154,173],{"fields":98,"sys":113},{"title":99,"slug":100,"category":101},"IntelliJ IDEAをJujutsuのコンフリクト解決ツールとしてちゃんと使えるようにするプラグインを作ったよ","idea-mergex-plugin",{"metadata":102,"sys":105,"fields":112},{"tags":103,"concepts":104},[],[],{"space":106,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":108,"publishedVersion":42,"revision":22,"contentType":110,"locale":27},{"sys":107},{"type":11,"linkType":12,"id":13},{"sys":109},{"id":19,"type":11,"linkType":20},{"sys":111},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":114,"id":115,"type":15},"2026-06-05T01:09:11.677Z","73BxP4cAKyGEaY0iSdAFJB",{"fields":117,"sys":132},{"title":118,"slug":119,"category":120},"Jujutsuのマージコンフリクト解決ツールとして IntelliJ IDEA を使用する方法（macOS）","jujutsu-merge-idea",{"metadata":121,"sys":124,"fields":131},{"tags":122,"concepts":123},[],[],{"space":125,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":127,"publishedVersion":42,"revision":22,"contentType":129,"locale":27},{"sys":126},{"type":11,"linkType":12,"id":13},{"sys":128},{"id":19,"type":11,"linkType":20},{"sys":130},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":133,"id":134,"type":15},"2026-05-17T15:49:45.333Z","jBqOc4f2Q8xuAReMTNli2",{"fields":136,"sys":151},{"title":137,"slug":138,"category":139},"DartのSwitch式/文、when句、パターンマッチング周りのチートシート","dart-pattern-matching",{"metadata":140,"sys":143,"fields":150},{"tags":141,"concepts":142},[],[],{"space":144,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":146,"publishedVersion":42,"revision":22,"contentType":148,"locale":27},{"sys":145},{"type":11,"linkType":12,"id":13},{"sys":147},{"id":19,"type":11,"linkType":20},{"sys":149},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":152,"id":153,"type":15},"2026-01-15T15:27:29.616Z","5rj9AuEsebufNWtBTlTu6F",{"fields":155,"sys":170},{"title":156,"slug":157,"category":158},"【Dart/Flutter】とてもいい感じに末尾カンマを強制できるLintプラグインを作ったよ","better-require-trailing-commas",{"metadata":159,"sys":162,"fields":169},{"tags":160,"concepts":161},[],[],{"space":163,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":165,"publishedVersion":42,"revision":22,"contentType":167,"locale":27},{"sys":164},{"type":11,"linkType":12,"id":13},{"sys":166},{"id":19,"type":11,"linkType":20},{"sys":168},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":171,"id":172,"type":15},"2026-01-15T15:06:58.744Z","7DWX6Gej091IAM1nvGIaiw",{"fields":174,"sys":189},{"title":175,"slug":176,"category":177},"Crashlyticsのデバッグシンボルのアップロードを、CocoaPodsからSwiftPMに移行する","upload-crashlytics-debug-symbols-with-swiftpm",{"metadata":178,"sys":181,"fields":188},{"tags":179,"concepts":180},[],[],{"space":182,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":184,"publishedVersion":42,"revision":22,"contentType":186,"locale":27},{"sys":183},{"type":11,"linkType":12,"id":13},{"sys":185},{"id":19,"type":11,"linkType":20},{"sys":187},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":190,"id":191,"type":15},"2026-01-13T14:08:17.070Z","7hj5PFf8Y2yNv9MuY5Rxw6",{"Entry":193},[194],{"metadata":195,"sys":198,"fields":205},{"tags":196,"concepts":197},[],[],{"space":199,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":201,"publishedVersion":42,"revision":22,"contentType":203,"locale":27},{"sys":200},{"type":11,"linkType":12,"id":13},{"sys":202},{"id":19,"type":11,"linkType":20},{"sys":204},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"sys":207,"total":208,"skip":95,"limit":66,"items":209,"includes":295},{"type":93},107,[210,225,240,255,280],{"fields":211,"sys":224},{"title":70,"slug":71,"category":212},{"metadata":213,"sys":216,"fields":223},{"tags":214,"concepts":215},[],[],{"space":217,"id":79,"type":15,"createdAt":80,"updatedAt":81,"environment":219,"publishedVersion":84,"revision":42,"contentType":221,"locale":27},{"sys":218},{"type":11,"linkType":12,"id":13},{"sys":220},{"id":19,"type":11,"linkType":20},{"sys":222},{"type":11,"linkType":25,"id":45},{"name":88,"slug":89},{"createdAt":61,"id":60,"type":15},{"fields":226,"sys":239},{"title":99,"slug":100,"category":227},{"metadata":228,"sys":231,"fields":238},{"tags":229,"concepts":230},[],[],{"space":232,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":234,"publishedVersion":42,"revision":22,"contentType":236,"locale":27},{"sys":233},{"type":11,"linkType":12,"id":13},{"sys":235},{"id":19,"type":11,"linkType":20},{"sys":237},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":114,"id":115,"type":15},{"fields":241,"sys":254},{"title":118,"slug":119,"category":242},{"metadata":243,"sys":246,"fields":253},{"tags":244,"concepts":245},[],[],{"space":247,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":249,"publishedVersion":42,"revision":22,"contentType":251,"locale":27},{"sys":248},{"type":11,"linkType":12,"id":13},{"sys":250},{"id":19,"type":11,"linkType":20},{"sys":252},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":133,"id":134,"type":15},{"fields":256,"sys":277},{"title":257,"slug":258,"category":259},"【Submon】最小iOSバージョンをiOS 16へ引き上げます","submon-min-ios-16",{"metadata":260,"sys":263,"fields":274},{"tags":261,"concepts":262},[],[],{"space":264,"id":266,"type":15,"createdAt":267,"updatedAt":268,"environment":269,"publishedVersion":66,"revision":271,"contentType":272,"locale":27},{"sys":265},{"type":11,"linkType":12,"id":13},"1AZ6Df2460uf9EaWHYRZi2","2022-04-25T12:44:16.773Z","2022-04-28T14:13:15.068Z",{"sys":270},{"id":19,"type":11,"linkType":20},2,{"sys":273},{"type":11,"linkType":25,"id":45},{"name":275,"slug":276},"Submonのお知らせ","submon-info",{"createdAt":278,"id":279,"type":15},"2026-05-06T04:47:12.868Z","44OAk3fEMxgnCY5QzxPiDr",{"fields":281,"sys":294},{"title":137,"slug":138,"category":282},{"metadata":283,"sys":286,"fields":293},{"tags":284,"concepts":285},[],[],{"space":287,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":289,"publishedVersion":42,"revision":22,"contentType":291,"locale":27},{"sys":288},{"type":11,"linkType":12,"id":13},{"sys":290},{"id":19,"type":11,"linkType":20},{"sys":292},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},{"createdAt":152,"id":153,"type":15},{"Entry":296},[297,309,321],{"metadata":298,"sys":301,"fields":308},{"tags":299,"concepts":300},[],[],{"space":302,"id":266,"type":15,"createdAt":267,"updatedAt":268,"environment":304,"publishedVersion":66,"revision":271,"contentType":306,"locale":27},{"sys":303},{"type":11,"linkType":12,"id":13},{"sys":305},{"id":19,"type":11,"linkType":20},{"sys":307},{"type":11,"linkType":25,"id":45},{"name":275,"slug":276},{"metadata":310,"sys":313,"fields":320},{"tags":311,"concepts":312},[],[],{"space":314,"id":79,"type":15,"createdAt":80,"updatedAt":81,"environment":316,"publishedVersion":84,"revision":42,"contentType":318,"locale":27},{"sys":315},{"type":11,"linkType":12,"id":13},{"sys":317},{"id":19,"type":11,"linkType":20},{"sys":319},{"type":11,"linkType":25,"id":45},{"name":88,"slug":89},{"metadata":322,"sys":325,"fields":332},{"tags":323,"concepts":324},[],[],{"space":326,"id":38,"type":15,"createdAt":39,"updatedAt":39,"environment":328,"publishedVersion":42,"revision":22,"contentType":330,"locale":27},{"sys":327},{"type":11,"linkType":12,"id":13},{"sys":329},{"id":19,"type":11,"linkType":20},{"sys":331},{"type":11,"linkType":25,"id":45},{"name":47,"slug":48},1786807490778]