tag:crieit.net,2005:https://crieit.net/tags/2D-RPG/feed 「2D-RPG」の記事 - Crieit Crieitでタグ「2D-RPG」に投稿された最近の記事 2023-09-28T19:20:42+09:00 https://crieit.net/tags/2D-RPG/feed tag:crieit.net,2005:PublicArticle/18517 2023-07-17T02:38:05+09:00 2023-09-28T19:20:42+09:00 https://crieit.net/posts/2D-RPG-2 2D RPG 制作ツールを作ろうぜ(^~^)? <その2> <h1 id="前の記事"><a href="#%E5%89%8D%E3%81%AE%E8%A8%98%E4%BA%8B">前の記事</a></h1> <p>📖 前回の記事: <a href="https://crieit.net/posts/2D-RPG">2D RPG 制作ツールを作ろうぜ(^~^)? <その1></a></p> <h1 id="📅 (2023-07-17 mon 海の日)ボタンのマウスホバーはだいたいでけた"><a href="#%F0%9F%93%85+%EF%BC%882023-07-17+mon+%E6%B5%B7%E3%81%AE%E6%97%A5%EF%BC%89%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%83%9E%E3%82%A6%E3%82%B9%E3%83%9B%E3%83%90%E3%83%BC%E3%81%AF%E3%81%A0%E3%81%84%E3%81%9F%E3%81%84%E3%81%A7%E3%81%91%E3%81%9F">📅 (2023-07-17 mon 海の日)ボタンのマウスホバーはだいたいでけた</a></h1> <p><a href="https://crieit.now.sh/upload_images/efd4a650ef0521a3bacaddd5fd70387464b42a30339d0.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/efd4a650ef0521a3bacaddd5fd70387464b42a30339d0.gif?mw=700" alt="202307__maui__17-0228--localization.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 MAUI は タップ仕様なんで マウスに対応してない。これでも ちょっとは マシにした方」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 今日は ここまでだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 せっかく 2つ目の記事に来たのに……」</p> <p>(Zzz Zzz Zzz Zzz)</p> <h2 id="ズームしろだぜ"><a href="#%E3%82%BA%E3%83%BC%E3%83%A0%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">ズームしろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 起きた」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 枠線が太くて タイルがよく見えない。タイルをでかく表示してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ズームか。<br /> 係数を ちゃんと正しく書けば いけるはず……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 行列演算するんじゃないか?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://social.msdn.microsoft.com/Forums/en-US/b2e908f0-f5ae-4478-9740-e985cbc4dee3/skiasharp-zoom?forum=xamarinlibraries">SkiaSharp + Zoom</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キャンバスがやってくれるのか、画像がやってくれるのか分からん」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 キャンバスの 横幅と 縦幅を変えるだけで ズームしてくれるんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ! そういうことか!」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッドは 画像として実装しているので、 ズームされると ばかでかい画像になるんだが」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドは 画像に対して かけるのではなく、<br /> 画面に かければいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうか!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面のスクロールと連携とれるかな?」</p> <h3 id="グリッドの実装を考えようぜ?"><a href="#%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E5%AE%9F%E8%A3%85%E3%82%92%E8%80%83%E3%81%88%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">グリッドの実装を考えようぜ?</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッドは 元画像のサイズとは関係なく 画像サイズも指定することにしたい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドの線には太さがあって 元の画像から 1px はみ出るけど、<br /> 1024 x 1024 pixels の画像にかけるグリッドが 1026 x 1026 pixels なの、気持ち悪くない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲームの実行時に合わせて最適化すると、開発環境は 割り食うが、<br /> ゲームの実行環境より、開発環境の方が 大幅にマシン性能が良いということを期待して、<br /> 開発環境は 割り食うことにしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/2e947fadaab544f62e2f39a7455cf67064b4fc0633d55.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2e947fadaab544f62e2f39a7455cf67064b4fc0633d55.png?mw=700" alt="202307__maui__17-1729--GridPhase-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 まず、 <code>グリッド全体</code> と呼んでいたものを、 <code>グリッド位相</code> に改名する」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 上側のメニュー、 <code>画像</code> の1行じゃなくて、<br /> <code>元画像</code> と <code>ビュー</code> の2段にしないと のちのち 混乱するんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/b8a46ea927e6ca3052dc476a3521176864b501ff45668.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8a46ea927e6ca3052dc476a3521176864b501ff45668.png?mw=700" alt="202307__maui__17-1754--WorkingImageSize-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 利用者としては 不要な情報だが、<br /> これがないと 開発中の わたしが混乱するから 付けておこう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Width と Height を変えて画像がデカくなるの 元画像を引き延ばすだけなら そうかもしれないが、<br /> いろいろ 加工したいので ズームは自力実装することにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/966874468b9c81e2d14d792a25f0476f64b50c6508aa2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/966874468b9c81e2d14d792a25f0476f64b50c6508aa2.png?mw=700" alt="202307__maui__17-1838--Zoom.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 数字を ちょこちょこ変更できる入力欄に すぐ反応するように ズーム機能を実装するの 大変だな。<br /> 要らん処理しないようにすることが」</p> <h1 id="📅 (2023-07-18 tue) 健康診断のため休み"><a href="#%F0%9F%93%85+%EF%BC%882023-07-18+tue%EF%BC%89+%E5%81%A5%E5%BA%B7%E8%A8%BA%E6%96%AD%E3%81%AE%E3%81%9F%E3%82%81%E4%BC%91%E3%81%BF">📅 (2023-07-18 tue) 健康診断のため休み</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 寝不足で 電車移動と 炎天下の徒歩で きつい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 せっかくの年休なのに お父んが ヘロヘロだ。<br /> 寝てるぐらいなら 風呂掃除でもしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユニットバスの床だけ 洗い流した。<br /> 全部きっちりやろうとすると つらいので これで終わり」</p> <h2 id="グリッドの画像サイズ"><a href="#%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E7%94%BB%E5%83%8F%E3%82%B5%E3%82%A4%E3%82%BA">グリッドの画像サイズ</a></h2> <p><a href="https://crieit.now.sh/upload_images/87e0efed897c66ca6ef088c39bfec3a464b61da98f6d5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/87e0efed897c66ca6ef088c39bfec3a464b61da98f6d5.png?mw=700" alt="202307__maui__18-1404--Grid.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 グリッドがなんか切れてない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッドも画像だからな。ズームをしたときに<br /> グリッドの画像サイズも変えてないので 切れてるんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 分かってるんだったら 直せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面上に グリッドの画像サイズを出そうかな。わたしがデバッグするために」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッドは なんかトリック・コード書いていて やりづらいな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 トリック無しで グリッドを再描画できないの?<br /> <code>Invalidate()</code> メソッドとか使えば 再描画できないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんらかのプロパティが変わってないと 再描画しないようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/07ec27f8a0471b56e05c8c1517c54af564b629e70377e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/07ec27f8a0471b56e05c8c1517c54af564b629e70377e.png?mw=700" alt="202307__maui__18-1457--GridError.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ズームに実数を入れると、ずれてしまうな。<br /> 計算式の端数の丸め方が 揃っていないのだろう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 for文で 横幅ずつ 横に移動しているところが int 型なの、これが怪しいな double 型へ変更しよう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 SkiaSharp のメソッドが float 型を受け取るようだから、 double 型ではなく、 float 型にしよ」</p> <p><a href="https://crieit.now.sh/upload_images/06057acdcd1b8dd52af86be05d02bf4864b661680e152.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/06057acdcd1b8dd52af86be05d02bf4864b661680e152.png?mw=700" alt="202307__maui__18-1853--TileCursorError.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドは ズームに対応したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 カーソルが ずれてるぜ。直せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/cd425b45e5b73cae01452c77d5e40b1964b6a83d71f2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cd425b45e5b73cae01452c77d5e40b1964b6a83d71f2c.png?mw=700" alt="202307__maui__18-2356--FloatFormat.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 テキストボックスの 小数点の桁数を何桁表示するかのフォーマットって 設定できないかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 そんなものは無いかもしれないな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/entry">Microsoft > 入力</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 表示用に整形したプロパティを別途用意するかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 書式指定子 わかんね」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings?redirectedfrom=MSDN">Microsoft > Standard numeric format strings</a></p> <p><a href="https://crieit.now.sh/upload_images/b789869df82cb32e6493d3e4baf1676564b6aebaab947.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b789869df82cb32e6493d3e4baf1676564b6aebaab947.png?mw=700" alt="202307__maui__19-0024--FloatFormat.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 "F1" にすれば 小数点以下1桁 になるみたいだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/52d71dc2809ad70e6b2c3bc26ea673c664b6b11c38546.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/52d71dc2809ad70e6b2c3bc26ea673c664b6b11c38546.png?mw=700" alt="202307__maui__19-0033--WIP-Zoom-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カーソルや、カラー・マップを ズームに対応させるの まだまだ かかりそう。<br /> 今日はもう寝る」</p> <h1 id="📅 (2023-07-19 wed) 野球のオールスター観てた"><a href="#%F0%9F%93%85+%EF%BC%882023-07-19+wed%EF%BC%89+%E9%87%8E%E7%90%83%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%AB%E3%82%B9%E3%82%BF%E3%83%BC%E8%A6%B3%E3%81%A6%E3%81%9F">📅 (2023-07-19 wed) 野球のオールスター観てた</a></h1> <p>休み</p> <h1 id="📅 (2023-07-20 thu) 野球のオールスター観てた"><a href="#%F0%9F%93%85+%EF%BC%882023-07-20+thu%EF%BC%89+%E9%87%8E%E7%90%83%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%AB%E3%82%B9%E3%82%BF%E3%83%BC%E8%A6%B3%E3%81%A6%E3%81%9F">📅 (2023-07-20 thu) 野球のオールスター観てた</a></h1> <p>休み</p> <h1 id="📅 (2023-07-21 fri) カラーマップもズームに対応しろだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-21+fri%EF%BC%89+%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%97%E3%82%82%E3%82%BA%E3%83%BC%E3%83%A0%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">📅 (2023-07-21 fri) カラーマップもズームに対応しろだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 作業用BGMなんか ないかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 植松伸夫の バトル1 を永遠に聞き続けなさい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=VQ0nLB4WIas">バトル1</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 RPGだ!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 原曲じゃないか…… アレンジがいいのに……」</p> <p><a href="https://crieit.now.sh/upload_images/34c68df5f651b70d538fe8efd1e41d0c64ba88ee28a08.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/34c68df5f651b70d538fe8efd1e41d0c64ba88ee28a08.png?mw=700" alt="202307_maui_21-2230--recordList-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この <code>List<TileRecord> RecordList</code> というのが タイル1個分のデータだが、<br /> ズーム後の表示サイズのようなものは 記録しないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そこで 例えば <code>List<TileViewModelRecord> RecordViewModelList</code> のように<br /> ズーム後の表示サイズも記録するように 拡張するのが 基本的な考え方だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6e2f151a2e3a7502c69ca13d3b9857d464ba8a56e4cdd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2f151a2e3a7502c69ca13d3b9857d464ba8a56e4cdd.png?mw=700" alt="202307_maui_21-2237--tileRecord-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>TileRecord</code> ってこういうモデルだが、 これとは別に <code>TileRecordViewModel</code> というビューモデルを作ることにしよう」</p> <p><a href="https://crieit.now.sh/upload_images/1fc5be594ce5afc9d3fa9e5e6195731c64ba909ca4b76.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1fc5be594ce5afc9d3fa9e5e6195731c64ba909ca4b76.png?mw=700" alt="202307_maui_21-2259--tileRecordViewModel-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 主な違いは、位置とサイズを、元データとズーム後の2つに分けて持つことだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f8f264f5aba1e3749426f59f20f0ac5764ba9c143efec.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f8f264f5aba1e3749426f59f20f0ac5764ba9c143efec.png?mw=700" alt="202307_maui_21-2351--tileSettingViewModel-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイル設定ファイルも ビューモデル バージョンを作っておこうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/3b491eff4e3325bb08480f489c0b091964bab7338717e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3b491eff4e3325bb08480f489c0b091964bab7338717e.png?mw=700" alt="202307_maui_22-0148--zoomAsFloat-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そして ズーム欄の数値を変更したタイミングで、<br /> カラー・マップの 色矩形の位置とサイズを 全部更新すればいいわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ズームの数値を変えたときに 起こることが<br /> タイルセット画像の伸縮と、グリッドの伸縮と、<br /> 切抜きカーソルや、画面上のオブジェクトの位置とサイズの変更と、<br /> やることが多いのよねえ」</p> <p><a href="https://crieit.now.sh/upload_images/4ff6bd3001e78df0f9c4f1059470e53a64babc4235457.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4ff6bd3001e78df0f9c4f1059470e53a64babc4235457.png?mw=700" alt="202307_maui_22-0211--zoomedColorMap.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カラーマップを拡大したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん、タイルセット画像を暗くしていたのが 効いてないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれま ほんとだぜ。なんでだろな 調べるか」</p> <p><a href="https://crieit.now.sh/upload_images/17106d5b465437dccef297cadea249f064babfff7f857.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/17106d5b465437dccef297cadea249f064babfff7f857.png?mw=700" alt="202307_maui_22-0226--zoomedColorMap.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ズームした時も 明度を下げるようにしたぜ」</p> <h2 id="入力もズームの縮尺に合わせろだぜ"><a href="#%E5%85%A5%E5%8A%9B%E3%82%82%E3%82%BA%E3%83%BC%E3%83%A0%E3%81%AE%E7%B8%AE%E5%B0%BA%E3%81%AB%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8D%E3%81%A0%E3%81%9C">入力もズームの縮尺に合わせろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん、マウスカーソルが指している位置と、切抜きカーソルが出てくる位置がずれているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 入力は ズームかかってないからな。そこも実装しないといけないか~」</p> <p><a href="https://crieit.now.sh/upload_images/edd41c943c871459fcad62d652f3a91864bacbbb5067e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/edd41c943c871459fcad62d652f3a91864bacbbb5067e.png?mw=700" alt="202307_maui_22-0316--zoomedCursor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 入力も ズームを考慮して 行えるようにしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d54b4cd78beefcc9932d3af2e6ffacde64bacc5ccdda7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d54b4cd78beefcc9932d3af2e6ffacde64bacc5ccdda7.png?mw=700" alt="202307_maui_22-0319--zoomedCursorError-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 ズームを変えても、切抜きカーソルが 置いてけぼりをくらってるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ズームの数字が変わったら、切抜きカーソルの矩形の位置とサイズも 再設定しないといけないな」</p> <p><a href="https://crieit.now.sh/upload_images/feaa3e7eaae0d99307ec42bc3f549ebc64bb5eec6c105.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/feaa3e7eaae0d99307ec42bc3f549ebc64bb5eec6c105.png?mw=700" alt="202307_maui_22-0422--zoomedCursor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カーソルも ズームに置いてけぼりされないようにしたぜ」</p> <h2 id="インターセクションが無いようにしましょう"><a href="#%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E7%84%A1%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86">インターセクションが無いようにしましょう</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 矩形が 重なりまくって 分けわかんないんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/a159f5fd02bfda991b205c20d8ad0d1864bb6adaaae52.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a159f5fd02bfda991b205c20d8ad0d1864bb6adaaae52.png?mw=700" alt="202307_maui_22-1435--noIntersection.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 つまり こういう状態になることを 強制する方法か」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 既存の登録タイルと重なっているときは タイルを追加できないようにすればいいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>既存のタイルと重なっている</strong> と、ユーザーにどうやって 気づかせるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 とりあえず 追加ボタンが押せなければいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 切抜きカーソルの位置を決めるために マウスを動かしている間、<br /> インターセクション(Intersection;重なり合った領域)があるかどうか 判定すればいいんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 交差の判定方法を調べて」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://blog.y-yuki.net/entry/2019/08/29/200000">矩形同士の交差</a></p> <p><a href="https://crieit.now.sh/upload_images/a3152154833608af519c5ef818ca8c3564bb8c9fa649f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a3152154833608af519c5ef818ca8c3564bb8c9fa649f.png?mw=700" alt="202307_maui_22-1658--rectangleIntersection-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 判定方法を実装」</p> <p><a href="https://crieit.now.sh/upload_images/59217521a2a8ae91b7647b4981d515c664bb8dace9a34.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59217521a2a8ae91b7647b4981d515c664bb8dace9a34.png?mw=700" alt="202307_maui_22-1703--hasIntersection-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 登録されているすべてのタイルと 比較すればいいわけだが、<br /> リストではなく、 <code>IEnumerator</code> 型を使うのが ひと工夫だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5e14b7ed4bb687f1dc0f56241962695b64bb8e7da0f56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5e14b7ed4bb687f1dc0f56241962695b64bb8e7da0f56.png?mw=700" alt="202307_maui_22-1707--viewModelIntersection-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このように ストリームで渡せるようにしておくと、<br /> ビューモデルも 同じアルゴリズムを使い回せるな」</p> <p><a href="https://crieit.now.sh/upload_images/95710ce502d90b65ef5a301d307fdd0464bb8f8bcf445.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/95710ce502d90b65ef5a301d307fdd0464bb8f8bcf445.png?mw=700" alt="202307_maui_22-1711--intersecting-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで交差中か 判定できるようになったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/68623cb89e2a03827a63039a96badc2664bb953320915.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/68623cb89e2a03827a63039a96badc2664bb953320915.png?mw=700" alt="202307_maui_22-1734--congruence-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 お父ん、コングルエンス(congruence ;合同)と インターセクション(Intersection;交差)は 区別してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 考え出すと お互いに部分的な交差、完全に覆っている交差、完全に覆われている交差、いろいろあるな。<br /> インターセクションから コングルエンスを除外するか、それとも インターセクションでありコングルエンスでもあることがあるか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 インターセクションを見つけることと、コングルエンスを見つけることは 時間が異なるんじゃない?<br /> 同じアルゴリズムで一緒にやろうとしたら 実行時間が最悪のケースにならない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあメソッドを分けるか」</p> <p><a href="https://crieit.now.sh/upload_images/4a20a5979804632d63ed340ba481635b64bbc0b60f5c4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4a20a5979804632d63ed340ba481635b64bbc0b60f5c4.png?mw=700" alt="202307_maui_22-2040--congruence.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 合同のときは 上書きできるように直したが、<br /> 今度は削除ボタンが効かなくなった。調べるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除されているものを 保存から除外してたから 保存されなかったんだ。<br /> 論理削除されているものも 保存するように直そう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それでも直らん」</p> <h2 id="ファイルの内容をチェックするプログラムを入れておくべきでは?"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%B9%E3%81%8D%E3%81%A7%E3%81%AF%EF%BC%9F">ファイルの内容をチェックするプログラムを入れておくべきでは?</a></h2> <p><a href="https://crieit.now.sh/upload_images/8c5e29f5f051945b43cdf0adaf2850e264bbc6432831a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c5e29f5f051945b43cdf0adaf2850e264bbc6432831a.png?mw=700" alt="202307_maui_22-2104--congruence-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 データの中に 合同の矩形が2つある!<br /> 片方を論理削除しても、もう片方が残ってる!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ファイルの内容をチェックするプログラムを入れておくべきでは?」</p> <p><a href="https://crieit.now.sh/upload_images/f7a931f50ba82418dd5e90fde947376f64bbccafa154f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f7a931f50ba82418dd5e90fde947376f64bbccafa154f.png?mw=700" alt="202307_maui_22-2132--validation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず デバッグモードで確認するようにした」</p> <p><a href="https://crieit.now.sh/upload_images/0c12b600870ddfa9af7cc0f9920d613c64bbcea793fcb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0c12b600870ddfa9af7cc0f9920d613c64bbcea793fcb.png?mw=700" alt="202307_maui_22-2140--Id-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ! Idが重複しまくってる!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Idの採番部を見直せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bb19a84999e705ac2b9b4893578254be64bbe14c3a5f9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bb19a84999e705ac2b9b4893578254be64bbe14c3a5f9.png?mw=700" alt="202307_maui_22-2300--fix-id.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Idの採番部を直したぜ」</p> <h2 id="Disable のボタンのスタイル直せないの?"><a href="#Disable+%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E7%9B%B4%E3%81%9B%E3%81%AA%E3%81%84%E3%81%AE%EF%BC%9F">Disable のボタンのスタイル直せないの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 不活性のボタンは 文字が黒い青いボタンになってるけど、<br /> グレーのボタンにできないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 スタイル いつの間にか おかしくなった 調べるか」</p> <p><a href="https://crieit.now.sh/upload_images/6efe601d2a7b39091da867aea930c60c64bbe27ff3705.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6efe601d2a7b39091da867aea930c60c64bbe27ff3705.png?mw=700" alt="202307_maui_22-2306--buttonStyle-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ここに指定している通りに 表示してくれたらいいのに……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 その上で <code>BackgroundColor</code> を指定しているのが ダメなんだろうかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/0a6b079c3db7194b98e4a04b5ae2bae464bbe3c1d7b79.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0a6b079c3db7194b98e4a04b5ae2bae464bbe3c1d7b79.png?mw=700" alt="202307_maui_22-2311--buttonStyleNormal-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Normal も設定したら 直った」</p> <h2 id="グリッドの色を白にしない?"><a href="#%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E8%89%B2%E3%82%92%E7%99%BD%E3%81%AB%E3%81%97%E3%81%AA%E3%81%84%EF%BC%9F">グリッドの色を白にしない?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドの色が赤なの主張が強いから 白にしない?」</p> <p><a href="https://crieit.now.sh/upload_images/ddc115bc1f417e803c4b799a18f7fb9964bbe8ebf36f8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ddc115bc1f417e803c4b799a18f7fb9964bbe8ebf36f8.png?mw=700" alt="202307_maui_22-2333--gridIsWhite.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カラーマップの色と 衝突してしまうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイルセット画像と同じだけ 明度を落とした白にすんのよ」</p> <p><a href="https://crieit.now.sh/upload_images/5098b48fdf11afcb3844d47efb9cff9a64bbe9b5f156a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5098b48fdf11afcb3844d47efb9cff9a64bbe9b5f156a.png?mw=700" alt="202307_maui_22-2337--gridIsGray.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 落ち着いた 目に優しい色になったぜ」</p> <h2 id="カラーマップの枠の色の青紫の明度を上げれないか?"><a href="#%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%97%E3%81%AE%E6%9E%A0%E3%81%AE%E8%89%B2%E3%81%AE%E9%9D%92%E7%B4%AB%E3%81%AE%E6%98%8E%E5%BA%A6%E3%82%92%E4%B8%8A%E3%81%92%E3%82%8C%E3%81%AA%E3%81%84%E3%81%8B%EF%BC%9F">カラーマップの枠の色の青紫の明度を上げれないか?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 青紫の明度が低いなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 SkiaSharp には RGBじゃなくて 色相と明度で指定する方法 無いの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 HSVか。有るかも知れないな。調べてみるか。有った」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/skiasharp.skcolor.fromhsv?view=skiasharp-2.88">SKColor.FromHsv(Single, Single, Single, Byte) Method</a></p> <p><a href="https://crieit.now.sh/upload_images/89cd37bb76a75a348d294047336be8e664bbf281ae56a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/89cd37bb76a75a348d294047336be8e664bbf281ae56a.png?mw=700" alt="202307_maui_23-0013--colorMap.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 目に優しくないな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ビビッドか、ストロングなの やめなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/9bf400ab3303e9a523382bc5d566117c64bbf39a39f72.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9bf400ab3303e9a523382bc5d566117c64bbf39a39f72.png?mw=700" alt="202307_maui_23-0019--light.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ ライトで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ここらへんで 決めましょう」</p> <h2 id="作業中の表示が邪魔じゃないか?"><a href="#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%8C%E9%82%AA%E9%AD%94%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%81%8B%EF%BC%9F">作業中の表示が邪魔じゃないか?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ここまで画面ができあがってくると、画面上に出ている <strong>作業中</strong> の表示は もう要らないんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コメントアウトの切替えで復活できるようには しておきたいな」</p> <p><a href="https://crieit.now.sh/upload_images/81fe2be5d48f4598f715fd5a5a82f82464bbfd6d49e0f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/81fe2be5d48f4598f715fd5a5a82f82464bbfd6d49e0f.png?mw=700" alt="202307_maui_23-0100--no-debug.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 デバッグ用のものを 非表示にしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ひとまず この画面は完成としましょう」</p> <h2 id="タイルセット画像選択画面を作れだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E7%94%BB%E5%83%8F%E9%81%B8%E6%8A%9E%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">タイルセット画像選択画面を作れだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 その画面に入る前に 本当は タイルセット画像を選ぶ画面が要るだろ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 フォルダーや ファイルの概念が分からない ツクラー種族や、スマホ種族を どうしてくれよう」</p> <p><a href="https://crieit.now.sh/upload_images/af5068fc4bed227a009c4bc5439b14f964bbffc72fd6f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/af5068fc4bed227a009c4bc5439b14f964bbffc72fd6f.png?mw=700" alt="202307_maui_23-0111--tileset-folder.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 このフォルダーに置け、と決めて置いたら いいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルセット画像というものが、ファイル名ぐらいでしか管理されてないことに<br /> 前時代的なものを感じるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Author で分けたくは ある」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 全ての <code>.png</code> 画像に、 <code>.toml</code> 設定ファイルを添えるかな?」</p> <p><a href="https://crieit.now.sh/upload_images/fcf9d06697988421aa7a4ff69e2e07d664bc0684ea8c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fcf9d06697988421aa7a4ff69e2e07d664bc0684ea8c3.png?mw=700" alt="202307_maui_23-0140--image-data.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これぐらいじゃ 全然足りないだろうけど」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画像フォルダーに <code>.toml</code> 入ってたら 邪魔じゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルの説明のファイルだから、ファイルの隣に有ってほしいんだぜ。<br /> 同じファイル・パスですぐ見つかる感じで」</p> <h2 id="ファイル名のリストを表示してみろだぜ"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8D%E3%81%A0%E3%81%9C">ファイル名のリストを表示してみろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 試しにファイル名のリストを表示してみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 といっても テーブル・ビューを使えばいいのか、<br /> コレクション・ビューを使えばいいのか、 リスト・ビューを使えばいいのか、<br /> さっぱり分からないが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 サンプルがあるそうだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://devlog.grapecity.co.jp/dotnet-maui-collectionview/">.NET MAUIのCollectionViewを試してみる</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui-samples">DotNet > maui-samples</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 これを見てみるかだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui-samples/tree/main/7.0/UserInterface/ControlGallery">https://github.com/dotnet/maui-samples/tree/main/7.0/UserInterface/ControlGallery</a></p> <p><a href="https://crieit.now.sh/upload_images/8c42b74a9b8f66de44b6570f78090dbe64bc384c682e4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c42b74a9b8f66de44b6570f78090dbe64bc384c682e4.png?mw=700" alt="202307_maui_23-0512--collectionView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが コレクション・ビュー らしいんだが、何がいいんだろなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/114a992b8c83925456287e6aee71a95264bc39d43dd10.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/114a992b8c83925456287e6aee71a95264bc39d43dd10.png?mw=700" alt="202307_maui_23-0512--listView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが リスト・ビュー らしいんだが、何がいいんだろなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/40db734690019a1bb2d134e0e1a0819664bc3cd9a8018.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40db734690019a1bb2d134e0e1a0819664bc3cd9a8018.png?mw=700" alt="202307_maui_23-0531--refreshView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが リフレッシュ・ビュー らしいんだが、何がいいんだろなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/e71c084469cd1979fc3191621b2bdfa664bc3d48317a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e71c084469cd1979fc3191621b2bdfa664bc3d48317a6.png?mw=700" alt="202307_maui_23-0533--swipeView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが スワイプ・ビュー らしいんだが、何がいいんだろなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/f30779f654104b9a220649bafc743d6164bc3daec83b9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f30779f654104b9a220649bafc743d6164bc3daec83b9.png?mw=700" alt="202307_maui_23-0535--tableViewForAForm.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが フォームが乗っているテーブル・ビュー らしいんだが、何がいいんだろなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/20ffebfb1aac79919642fc0f4261194b64bc3dfc47cd3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/20ffebfb1aac79919642fc0f4261194b64bc3dfc47cd3.png?mw=700" alt="202307_maui_23-0536--tableViewForAMenu.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが メニューになっているテーブル・ビュー らしいんだが、クリックすると画面遷移するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どれが いいんだろな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グーグルのイメージ検索結果みたいに 画像を並べるのがいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そういうのが コレクション・ビュー なのかな」</p> <p><a href="https://crieit.now.sh/upload_images/d959a741125693d1fb42de48a2d8b40164bcbc0b9a7b4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d959a741125693d1fb42de48a2d8b40164bcbc0b9a7b4.png?mw=700" alt="202307_maui_23-1433--collectionViewXaml-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ コレクション・ビューの XAML を見てみるか」</p> <pre><code class="xml">ItemsSource="{Binding Monkeys}" </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 <code>Monkeys</code> って何なの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MVVM 使ったサンプルなのかと思ったら MVVM 使ってねー」</p> <p><a href="https://crieit.now.sh/upload_images/2830c39a4e3c8ceda7ae00d7a0650ee464bcbea90728b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2830c39a4e3c8ceda7ae00d7a0650ee464bcbea90728b.png?mw=700" alt="202307_maui_23-1445--monkeyList-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ただの Monkey 型のリストだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Monkey 型は、 Name, Location, Details, ImageURL のプロパティを持っているぜ」</p> <h2 id="作業用BGMをかけようぜ?"><a href="#%E4%BD%9C%E6%A5%AD%E7%94%A8%EF%BC%A2%EF%BC%A7%EF%BC%AD%E3%82%92%E3%81%8B%E3%81%91%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">作業用BGMをかけようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 作業用BGMを掛けようぜ?<br /> YouTube に何かないかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それは 作業用BGMじゃなくて 違法アップロード動画なのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 この音楽データは 買ったことがあると思うぜ」</p> <p>📺 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=G5XHR6v6JAc">Rockman Arrange Album - iwao</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 また ROCKMAN だ。 お父んは 音楽の聞き分けは ROCKMAN かそうでないか ぐらいしか 耳が分からないんだ」</p> <h2 id="コレクション・ビューを調べようぜ?"><a href="#%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">コレクション・ビューを調べようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/fc170123741f8e1ac58b70396cfaf44764bcc5f17a4af.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fc170123741f8e1ac58b70396cfaf44764bcc5f17a4af.png?mw=700" alt="202307_maui_23-1516--monkeyClass-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Monkey クラスは ただのモデルだぜ」</p> <pre><code class="xml"> <DataTemplate> <Grid Padding="10"> <Grid.RowDefinitions> <RowDefinition Height="35" /> <RowDefinition Height="35" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="70" /> <ColumnDefinition Width="80" /> </Grid.ColumnDefinitions> <Image Grid.RowSpan="2" Source="{Binding ImageUrl}" Aspect="AspectFill" HeightRequest="60" WidthRequest="60" /> <Label Grid.Column="1" Text="{Binding Name}" FontAttributes="Bold" LineBreakMode="TailTruncation" /> <Label Grid.Row="1" Grid.Column="1" Text="{Binding Location}" LineBreakMode="TailTruncation" FontAttributes="Italic" VerticalOptions="End" /> </Grid> </DataTemplate> </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 じゃあ <code><DataTemplate></code> というのは ただのグリッド・レイアウトだから<br /> それ以外のところに コレクション・ビュー 独自のものがあるはずよ」</p> <pre><code class="xml">ItemsLayout="VerticalGrid, 2" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ここだけしか 独自のものが無いが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 <code>ItemsLayout</code> は ここにまとまってあるぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/collectionview/layout">CollectionView レイアウトの指定</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コレクション・ビューの使い方は分かった。使ってみよう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ Monkey クラスに当たるものを作ろう。<br /> <code>TilesetRecord</code> みたいな名前でいいかな」</p> <p><a href="https://crieit.now.sh/upload_images/1b4acb4ad591bdbad486338933c6d82e64bccc2e39449.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1b4acb4ad591bdbad486338933c6d82e64bccc2e39449.png?mw=700" alt="202307_maui_23-1543--tilesetRecord-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず 深く考えず <code>TilesetRecord</code> を作った」</p> <p><a href="https://crieit.now.sh/upload_images/26b0d46478a7367fa6aa495331b76a7764bcd2aea8040.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/26b0d46478a7367fa6aa495331b76a7764bcd2aea8040.png?mw=700" alt="202307_maui_23-1610--tilesetRecords-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リストも 仮の内容で 作っておこうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>internal</code> プロパティは XAMLから見えないのか。 <code>public</code> プロパティに変えよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 モデルのプロパティに <code>public</code> を強要するのは おかしい。<br /> 本来は ビューモデル にするべきでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MVVMのサンプルじゃないしなあ。<br /> MVVUでやるなら ビューモデルかな」</p> <p><a href="https://crieit.now.sh/upload_images/18d489ed85ca337dfe585e69002b152d64bcd65891225.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/18d489ed85ca337dfe585e69002b152d64bcd65891225.png?mw=700" alt="202307_maui_23-1626--collectionView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こういう見た目になった。 サムネイル画像が無いと 寂しい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 サムネイル画像を生成するプログラムを 先に書いたらいいんじゃない?」</p> <h2 id="テンポラリー・フォルダーをどこにするかだぜ?"><a href="#%E3%83%86%E3%83%B3%E3%83%9D%E3%83%A9%E3%83%AA%E3%83%BC%E3%83%BB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E3%81%A9%E3%81%93%E3%81%AB%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A0%E3%81%9C%EF%BC%9F">テンポラリー・フォルダーをどこにするかだぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/e1989d577b4321b3ade48c0772aa8d1c64bcd7ac8e6c5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e1989d577b4321b3ade48c0772aa8d1c64bcd7ac8e6c5.png?mw=700" alt="202307_maui_23-1632--temporaryFolder.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ユニティ・プロジェクトに 一時ファイルを入れたくないんで、<br /> ローカルPCのフォルダーに 著者名、作品名で フォルダー切った方がいいかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Windows べったりな発想だな。MAUI に テンポラリー・フォルダーの概念 無いのかだぜ?<br /> 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/70164497/how-can-i-save-temporary-file-in-net-maui">How can I save temporary file in .NET MAUI?</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/file-system-helpers?tabs=windows">File system helpers</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI の流儀では テンポラリー(Temporary;一時的な)と呼ばず キャッシュ(Cache;隠し場)って呼ぶんだな」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 C# で Windows のファイル・エクスプローラーを開く方法も調べとこう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/32395163/how-can-i-open-a-folder-in-windows-explorer">How can I open a folder in Windows Explorer?</a></p> <p><a href="https://crieit.now.sh/upload_images/f6c016e7378b72b60483b0b1218fa57964bcf68dd298c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f6c016e7378b72b60483b0b1218fa57964bcf68dd298c.png?mw=700" alt="202307_maui_23-1843--accessDenied.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 キャッシュ・ディレクトリーを開こうとしたら アクセスを拒否されたぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? 隠しフォルダーではないフォルダーからも アクセスを拒否されたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 MAUI で ファイル・エクスプローラーを開けることが イレギュラーなんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/a6ce4d2e16c6d7580e2a4f641008084964bcff9de2ac9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a6ce4d2e16c6d7580e2a4f641008084964bcff9de2ac9.png?mw=700" alt="202307_maui_23-1922--cacheDirectory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず キャッシュ・ディレクトリーの場所だけ示すことにした」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キャッシュ・ディレクトリーの下は どのように使うかといった流儀は あるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI より、 UWP を調べた方がいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 分からん。 とりあえず 勝手に使って、文句出たら 変えよう」</p> <p><a href="https://crieit.now.sh/upload_images/c02b0882ff588a40f75355a4d1cd7ef564bd04ed8912c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c02b0882ff588a40f75355a4d1cd7ef564bd04ed8912c.png?mw=700" alt="202307_maui_23-1945--longDirectoryName-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 170文字ぐらいあるが、だいたい 255文字しか入らないのに大丈夫か?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 まあ とりあえず それで」</p> <h1 id="📅 (2023-07-24 mon)フォルダーなの? ディレクトリーなの?"><a href="#%F0%9F%93%85+%EF%BC%882023-07-24+mon%EF%BC%89%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AA%E3%81%AE%EF%BC%9F%E3%80%80%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%83%BC%E3%81%AA%E3%81%AE%EF%BC%9F">📅 (2023-07-24 mon)フォルダーなの? ディレクトリーなの?</a></h1> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 フォルダーなの? ディレクトリーなの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どっちでもいい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んのソースコードでは <code>ディレクトリ</code> という単語は0件で、 <code>フォルダ</code> で統一されているぜ。<br /> しかし C# の入出力ライブラリーのプロパティ名は <code>Folder</code> ではなく <code>Directory</code> だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プログラマーは この表記ゆれを気にしないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルで連想する対になるものは フォルダーだぜ。<br /> ディレクトリーは 歴史的な名称だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ ネギラーメンは フォルダーで統一するかだぜ」</p> <h2 id="Tileset フォルダーなの? Tilesets フォルダーなの?"><a href="#Tileset+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AA%E3%81%AE%EF%BC%9F+Tilesets+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AA%E3%81%AE%EF%BC%9F">Tileset フォルダーなの? Tilesets フォルダーなの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Tileset フォルダーなの? Tilesets フォルダーなの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルセットが いくつか入っていることを期待するから <code>Tilesets</code> でフォルダーだぜ。<br /> うおお。 名前の付け直しだ」</p> <h2 id="タイルセットのサムネイル画像の仕様を決めようぜ?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E3%82%B5%E3%83%A0%E3%83%8D%E3%82%A4%E3%83%AB%E7%94%BB%E5%83%8F%E3%81%AE%E4%BB%95%E6%A7%98%E3%82%92%E6%B1%BA%E3%82%81%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">タイルセットのサムネイル画像の仕様を決めようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そもそも タイルセット画像って 小さいんだよな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 そのまま 並べりゃどうなの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 とりあえず、タイルセット画像を、そのまま複製して キャッシュ・フォルダーの下に置くプログラムを考えてみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/6eddf616ca327e07de7ef420671cfb1564be71ee22186.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6eddf616ca327e07de7ef420671cfb1564be71ee22186.png?mw=700" alt="202307_maui_24-2142--image-copy-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 前に似たプログラムを書いたので参考にしよう」</p> <p><a href="https://crieit.now.sh/upload_images/ccce1d3d194936ea99f94c50c6012d5464be76e0af206.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ccce1d3d194936ea99f94c50c6012d5464be76e0af206.png?mw=700" alt="202307_maui_24-2203--thumbnails.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルのコピーは できたが、<br /> サイズを調整したいぜ。 MAUI ではできないから、 SkiaSharp でやるかな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 SkiaSharp で作ったビットマップを保存する方法が分からん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://social.msdn.microsoft.com/Forums/en-US/25fe8438-8afb-4acf-9d68-09acc6846918/using-skiasharp-how-to-save-a-skbitmap-?forum=xamarinforms">Using SkiaSharp, how to save a SKBitmap ?</a></p> <p><a href="https://crieit.now.sh/upload_images/ff256391313ce4fab6a33da994ee7aae64be812c99e39.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff256391313ce4fab6a33da994ee7aae64be812c99e39.png?mw=700" alt="202307_maui_24-2247--resizeImage-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画像サイズの変更もでけた」</p> <h2 id="ファイル名は UUID にするか?"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AF+UUID+%E3%81%AB%E3%81%99%E3%82%8B%E3%81%8B%EF%BC%9F">ファイル名は UUID にするか?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 インターネット上の すべてのタイルセット画像のファイル名が 被らないようにする対策は してんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ガチでやるなら ファイル名は UUID にするか」</p> <p><a href="https://crieit.now.sh/upload_images/9af9cb3296d4a38852c53bbd8597ad9764be83071f786.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9af9cb3296d4a38852c53bbd8597ad9764be83071f786.png?mw=700" alt="202307_maui_24-2255--rename-file.png" /></a></p> <pre><code class="plaintext">"adventure_field" ----> "86A25699-E391-4D61-85A5-356BA8049881" "map-tileset-format-8x19.png" ----> "E7911DAD-15AC-44F4-A95D-74AB940A19FB" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こういう名称変更をするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 名前って 何だったんだろな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ローカルで通じればいいのが 名前よ」</p> <p><a href="https://crieit.now.sh/upload_images/1f5ceb28ccf9c3291675867eac7ceb6964be891476234.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1f5ceb28ccf9c3291675867eac7ceb6964be891476234.png?mw=700" alt="202307_maui_24-2321--uuidAndTitle.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 UUID と タイトルだけあれば いいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/926c3bff0c64c451a55215ed9458359664be8a2a9c05b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/926c3bff0c64c451a55215ed9458359664be8a2a9c05b.png?mw=700" alt="202307_maui_24-2326--tileTitle-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイル名も、 タイル タイトル に名前を変えたろ」</p> <p><a href="https://crieit.now.sh/upload_images/ac5330f87268476cca7fff2b5191221764be937d77033.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ac5330f87268476cca7fff2b5191221764be937d77033.png?mw=700" alt="202307_maui_25-0005--collectionView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サムネイル画像を出すところまでは できたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 やったな!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 やったわね!」</p> <h1 id="📅 (2023-07-25 tue)UUIDを勝手に付けてくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-25+tue%EF%BC%89UUID%E3%82%92%E5%8B%9D%E6%89%8B%E3%81%AB%E4%BB%98%E3%81%91%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-25 tue)UUIDを勝手に付けてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 UUID って、どうやって生成するんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 勝手にファイル名を UUID に置き換えてほしいよな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 C# は GUID という名前になってて、UUID とは別物らしいわよ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/8477664/how-can-i-generate-uuid-in-c-sharp">How can I generate UUID in C#</a></p> <pre><code class="csharp">String UUID = Guid.NewGuid().ToString(); </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで作れるらしい。試してみようぜ」</p> <pre><code class="plaintext">be6c25e9-2bca-40ba-84b4-b9f24bef6df3 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 小文字かあ。大文字にしてやるかな」</p> <pre><code class="plaintext">95DE5BEE-A51E-41D1-B068-C6F436603AD4 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 いいんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 📂 <code>Tilesets</code> フォルダーの下に 📄 <code>{名前}.png</code> 画像を放り込んでおけば、<br /> 名前が UUID じゃないとき UUID にしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんなことしていいのかな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 対応する TOML ファイルも勝手に作ってくれたら便利じゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画像ファイルを コピー貼り付けしたら、勝手に UUID 振られる 地獄のフォルダーになるぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 地獄のフォルダーなのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユーザーの知らない所で 元ファイルを変更すると ユーザーのストレスになるケースもあるから、<br /> <code>タイルセット一覧画面</code> で 『ファイルを変更しますか?』 か何かのメッセージを出してもいいかもしらん」</p> <p><a href="https://crieit.now.sh/upload_images/da1e1c01c723bb12da77084e602dc1ea64bfa5389a946.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/da1e1c01c723bb12da77084e602dc1ea64bfa5389a946.png?mw=700" alt="202307_maui_25-1933--test-images.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 うそ画像を 水増しして <code>Tilesets</code> フォルダーに放り込もう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ひどい……」</p> <p><a href="https://crieit.now.sh/upload_images/f7e9eb5b595c479375a8727cd8e7359464bfa9327aebe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f7e9eb5b595c479375a8727cd8e7359464bfa9327aebe.png?mw=700" alt="202307_maui_25-1950--collection-view.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな風に出てくるのか、嬉しくないな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 もっと 詰めて表示しなきゃ サムネイル画像を小さくした意味がなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/3021e00f8b005c21cc9bca7efc98e10b64bfb0dd3563e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3021e00f8b005c21cc9bca7efc98e10b64bfb0dd3563e.png?mw=700" alt="202307_maui_25-2023--horizontal.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ItemsLayout</code> 属性を <code>HorizontalList</code> にすると 1段になってしまうんだな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 UUID が横に長い!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ファイル名が画像に被ってない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 UUID は3行に折り曲げたろかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 UUID なんか表示しなくてよくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そういう考えもあるか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 Collection View には Flex Layout が無いらしいぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/1808">[Enhancement] WrapLayout support in the CollectionView #1808</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ どうすんだぜ?」</p> <h1 id="📅 (2023-07-26 wed)妥協しようぜ?"><a href="#%F0%9F%93%85+%EF%BC%882023-07-26+wed%EF%BC%89%E5%A6%A5%E5%8D%94%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">📅 (2023-07-26 wed)妥協しようぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI のパターンから外れると つらそうなので 妥協しようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 と思ったが <code>HorizontalGrid, 2</code> が機能しない。なぜだかは分からない」</p> <p><a href="https://crieit.now.sh/upload_images/9a32e21052cf480d5ef2c147a0ffa41564c0f90c52172.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9a32e21052cf480d5ef2c147a0ffa41564c0f90c52172.png?mw=700" alt="202307_maui_26-1943--VerticalGrid10.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>VerticalGrid, 10</code> 。 静止画だと できているように見えるが、<br /> ウィンドウを広げても ずっと 10列」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ウィンドウを広げるという概念は、 MAUI が大好きな Android アプリには無いのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI は デスクトップ・アプリ向けではないのよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ どうすんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 妥協しようと思ったが その妥協ラインでもダメだった 手詰まりだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 他のビューを調べろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/36add7dccbed490ab173526743000fee64c0ff332850b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/36add7dccbed490ab173526743000fee64c0ff332850b.png?mw=700" alt="202307_maui_26-2010--ListView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リスト・ビューは 縦長で、なんか選べそうな色が付いてるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面全体を使って サムネイルを並べる フラットなレイアウトは無いの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUIには無いぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 CollectionView の <code>VerticalGrid</code> というのは 縦長のスマホで何列にするか という意味なのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それでも <code>HorizontalGrid</code> が機能しない理由が分からない」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 縦でも 横でもなく ウィンドウ・サイズの面積を 最大限に使ってほしいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUIは デスクトップ・アプリ向けではないんで」</p> <h2 id="コレクション・ビューで進めようぜ?"><a href="#%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A7%E9%80%B2%E3%82%81%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">コレクション・ビューで進めようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ <code>VerticalGrid, 4</code> で進めようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/1216f2fc9f413736c9f000f237976d2e64c10303e17ad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1216f2fc9f413736c9f000f237976d2e64c10303e17ad.png?mw=700" alt="202307_maui_26-2026--CollectionView.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コレクション・ビューは 初期状態では 項目の選択はできないみたいだな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/collectionview/selection#single-selection">Single selection</a></p> <p><a href="https://crieit.now.sh/upload_images/cf10124aee4908f3b5f53ceb875b013c64c105b3d8fab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf10124aee4908f3b5f53ceb875b013c64c105b3d8fab.png?mw=700" alt="202307_maui_26-2037--SingleSelection.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんなUIが良いとは思わないが これで我慢するかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画像が切れてるわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どうして こんなに 欠陥だらけなのか……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 左上のタイルのサイズに 引きずられているのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんなん困るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/44f7d7d9ab45573bb51cee29c320fd2464c107f4013e0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/44f7d7d9ab45573bb51cee29c320fd2464c107f4013e0.png?mw=700" alt="202307_maui_26-2047--SizeRequest.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 固定サイズにするしかないか~」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ユーザーが ウィンドウサイズを変更するたび、<br /> 列数を変えることはできないの?」</p> <p><a href="https://crieit.now.sh/upload_images/075c2afbc08c207a0cebd34fad3f523064c1118fd1437.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/075c2afbc08c207a0cebd34fad3f523064c1118fd1437.png?mw=700" alt="202307_maui_26-2128--BindingItemsLayout.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コンテント・ページのサイズは取れるけど、<br /> コレクション・ビューの ItemsLayout プロパティに Binding した文字列が効いてないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 文字列ではないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>GridItemsLayout</code> クラスを使ってみるが、効かないなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 これを読みなさい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/7747">CollectionView does not update when changing ItemsLayout #7747</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/pull/14532">[Windows] Update CollectionView changing ItemsLayout #14532</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 これで できたという報告なんだが、わたしには 理解できないなあ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/pull/14532/commits/8097ff10dd15cd08045fb3b2195839b5bc1a87d1">[Windows] Update CollectionView changing ItemsLayout #14532</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/blob/main/src/Controls/samples/Controls.Sample/Pages/Controls/CollectionViewGalleries/AdaptiveCollectionView.xaml">AdaptiveCollectionView.xaml</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/blob/main/src/Controls/samples/Controls.Sample/Pages/Controls/CollectionViewGalleries/AdaptiveCollectionView.xaml.cs">AdaptiveCollectionView.xaml.cs<br /> </a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そのサンプルを動かせないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 クラス・ライブラリの出力タイプらしくて、動かないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/54dc7332980dd9c3bc796601c1f46c0664c12907ac548.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54dc7332980dd9c3bc796601c1f46c0664c12907ac548.png?mw=700" alt="202307_maui_26-2308--Rotate.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 回転したり 半透明にしたりすることはできるのに、<br /> 11列にするとか 8列にするとか、列数を変えることは 頑としてできない」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 要らんことは できるのに……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 直ってるらしいんだが、直ってないぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/8387">CollectionView with GridItemsLayout: Issues when changing Span #8387</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/pull/13137">[Windows] Notify changes in CollectionView Layouts #13137</a></p> <h2 id="MAUI のバージョンは?"><a href="#MAUI+%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AF%EF%BC%9F">MAUI のバージョンは?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI のバージョンって どうやってチェックできる?」</p> <p><a href="https://crieit.now.sh/upload_images/05fc89128dc6d093a27db3421d89e9d664c12d5b2b2c4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05fc89128dc6d093a27db3421d89e9d664c12d5b2b2c4.png?mw=700" alt="202307_maui_26-2327--mauiVersion.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これは 新しいのかだぜ? 古いのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 公式ページに何か書いてないかしら?」</p> <p><a href="https://crieit.now.sh/upload_images/9bbb9a980f67aa5de219170db3ea7c4a64c1316701536.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9bbb9a980f67aa5de219170db3ea7c4a64c1316701536.png?mw=700" alt="202307_maui_26-2344--bug.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マイクロソフトは 直ったと言い張り、わたしの環境では 直っていないので これは放置して次へ進むことにする」</p> <h1 id="📅 (2023-07-27 thu)ページを開くときに、ページの縦横幅を知ってることはできるの?"><a href="#%F0%9F%93%85+%EF%BC%882023-07-27+thu%EF%BC%89%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E9%96%8B%E3%81%8F%E3%81%A8%E3%81%8D%E3%81%AB%E3%80%81%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E7%B8%A6%E6%A8%AA%E5%B9%85%E3%82%92%E7%9F%A5%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%AE%EF%BC%9F">📅 (2023-07-27 thu)ページを開くときに、ページの縦横幅を知ってることはできるの?</a></h1> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ページを開いたときに ページの縦横幅を知ることができるなら、<br /> ページを開いた直後なら コレクション・ビューの列数を 調整することができるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 調べるか……。プログラマーの美徳の1つは 怠惰だしな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 怠惰のくせに しつこく粘るな」</p> <p><a href="https://crieit.now.sh/upload_images/d9a469e219957f3335d2c61320b9726164c24c8535837.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d9a469e219957f3335d2c61320b9726164c24c8535837.png?mw=700" alt="202307_maui_27-1951--viewModel-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 XAMLの中で ビューモデルを埋め込んでいたが、<br /> このビューモデルの中で ItemsLayout を初期化していて、その値を そのあと一切 上書きできないというのが<br /> 今回の不具合だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 XAMLの中に ビューモデルを埋め込むのを 止めろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/761557e4d2fd91b13a4877e5601e33a664c252a6460b2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/761557e4d2fd91b13a4877e5601e33a664c252a6460b2.png?mw=700" alt="202307_maui_27-2018--InitializeComponent.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>InitializeComponent()</code> の中で <code>ItemsLayout</code> の読込もしてるようなので、<br /> それより前に <code>ItemsLayout</code> をセットしないとな」</p> <p><a href="https://crieit.now.sh/upload_images/afdbeb53391d096e40ece637b0200a9064c254c473d06.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/afdbeb53391d096e40ece637b0200a9064c254c473d06.png?mw=700" alt="202307_maui_27-2027--pageWidth.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ページのコンストラクターでは、ページの横幅を取れないぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI は <code>InitializeComponent( )</code> の中で どうやって ページの横幅を算出するの?」</p> <pre><code class="plaintext">[TilesetListPage.xaml.cs TilesetListPage] this.WidthRequest: -1, this.MaximumWidthRequest: ∞, this.MinimumWidthRequest: -1, this.Width: -1 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 横幅は 持ってないみたいだなあ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 親ウィンドウのサイズは取れないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>this.GetParentWindow()</code> はヌルだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 このページに遷移してくる前に 横幅を渡せばいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面の遷移は自動化されていて、<br /> 遷移前に値を渡す方法は 分からないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そして ページのコンストラクターは 1回呼ばれると<br /> 画面遷移して戻ってきても 2回目のコンストラクターは呼び出されないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ページは破棄されてないんだ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グローバル変数を使えばいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/a33c348d126cb5d237d5577c4a9f8eec64c25f50d1e0b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a33c348d126cb5d237d5577c4a9f8eec64c25f50d1e0b.png?mw=700" alt="202307_maui_27-2112--navigatingFrom.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>NavigatingFrom</code> イベントハンドラで メイン・ページの横幅を取れたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b77981efb8a4c3705f5a319a910a032d64c2620b8fb21.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b77981efb8a4c3705f5a319a910a032d64c2620b8fb21.png?mw=700" alt="202307_maui_27-2124--navigatingFrom.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これは挫折。 マイクロソフトの仕様の前に 失望し、意志を曲げ、諦めよう」</p> <h2 id="タイルセットをクリックして、この前作った タイル切抜き画面へ 遷移してくれだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%97%E3%81%A6%E3%80%81%E3%81%93%E3%81%AE%E5%89%8D%E4%BD%9C%E3%81%A3%E3%81%9F%E3%80%80%E3%82%BF%E3%82%A4%E3%83%AB%E5%88%87%E6%8A%9C%E3%81%8D%E7%94%BB%E9%9D%A2%E3%81%B8%E3%80%80%E9%81%B7%E7%A7%BB%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">タイルセットをクリックして、この前作った タイル切抜き画面へ 遷移してくれだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ タイルセットをクリックして、この前作った タイル切抜き画面へ 遷移してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 クリックして すぐ画面遷移すると タイルセットのデータを見れないんで、<br /> タイルセットを選んだあと ボタンを押してから画面遷移するようにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/46ff2a320ad0afc030b083b8af0cca5e64c270e5aefa8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/46ff2a320ad0afc030b083b8af0cca5e64c270e5aefa8.png?mw=700" alt="202307_maui_27-2227--tileset-data.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイル名を UUID に変えてもらいたいんだが、<br /> ユーザーに どう説明して<br /> ファイル名を UUID に強制的に変えさすかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 『ファイル名をUUIDに変更する(言うことを聞け)』ボタンを置けだぜ」</p> <h2 id="UUID かどうかを判定"><a href="#UUID+%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E5%88%A4%E5%AE%9A">UUID かどうかを判定</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 UUIDになってるか、そうでないか 判定する方法が欲しいな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 これを読みなさい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/miriwo/items/8ea80aebd113edafebb0">UUIDをヒットさせる正規表現</a></p> <p><a href="https://crieit.now.sh/upload_images/2d13132c1911bbcb37e358de36922d6a64c27f23f34c0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2d13132c1911bbcb37e358de36922d6a64c27f23f34c0.png?mw=700" alt="202307_maui_27-2328--tileset-list.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず 画面レイアウトは こんな感じだとしようぜ?」</p> <h2 id="タイルセット・タイトルは ローカライズすんの?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%AF%E3%80%80%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BA%E3%81%99%E3%82%93%E3%81%AE%EF%BC%9F">タイルセット・タイトルは ローカライズすんの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイルセット・タイトルは ローカライズすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 1つのタイルセットに 200か国分の添付ファイルが付いてくるのとか 嫌だな……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 添付の TOML の中にロケールを詰め込んだらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 1つのファイルに 複数のロケールが入っているのは<br /> <strong>使わないものが必ず付いてくる</strong> という 効率が最悪のケースになるかも知らん。<br /> ロケールのフォルダーを作って そこに <code>.toml</code> ファイルを置いた方がマシか……?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 丁寧にいくなら それねえ」</p> <h1 id="📅 (2023-07-28 fri)タイルセットのロケールの仕組みを作れだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-28+fri%EF%BC%89%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-28 fri)タイルセットのロケールの仕組みを作れだぜ</a></h1> <pre><code class="plaintext">  C:\Users\むずでょ\Documents\Unity Projects   └── 📂 Negiramen Practice     └── 📂 Assets       └── 📂 Doujin Circle Negiramen         └── 📂 Negiramen Quest           └── 📂 Auto Generated             └── 📂 Images               └── 📂 Tilesets                 ├── 📄 86A25699-E391-4D61-85A5-356BA8049881.png                 └── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 今 こうなっているが……」</p> <pre><code class="plaintext">  C:\Users\むずでょ\Documents\Unity Projects   └── 📂 Negiramen Practice     └── 📂 Assets       └── 📂 Doujin Circle Negiramen         └── 📂 Negiramen Quest           └── 📂 Auto Generated             └── 📂 Images               └── 📂 Tilesets                 ├── 📂 Locales                 │  ├── 📂 ja-JP 👉               │  │  ├── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml                 │  └── 📂 en-US 👉               │    └── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml                 └── 📄 86A25699-E391-4D61-85A5-356BA8049881.png </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 こうなる想定かだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 どの言語にも差が無い共通の設定は <code>ja-JP</code> に入れるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 デフォルトが <code>ja-JP</code> だからな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>en-US</code> で編集したら <code>ja-JP</code> に保存されるみたいなことがあるの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 編集したのなら、すべての言語ファイルに更新を掛けないと おかしくないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 英語版にあって 日本語版にないと おかしな感じだしな」</p> <pre><code class="plaintext">  C:\Users\むずでょ\Documents\Unity Projects   └── 📂 Negiramen Practice     └── 📂 Assets       └── 📂 Doujin Circle Negiramen         └── 📂 Negiramen Quest           └── 📂 Auto Generated             └── 📂 Images               └── 📂 Tilesets                 ├── 📂 Locales                 │  ├── 📂 ja-JP                 │  │  ├── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml                 │  └── 📂 en-US                 │    └── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml                 ├── 📄 86A25699-E391-4D61-85A5-356BA8049881.png 👉               └── 📄 86A25699-E391-4D61-85A5-356BA8049881.toml </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 ベースとしての設定ファイルは、ロケールとは別に 要るのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Author</code> とか どうすんだぜ?<br /> Michael さんは <code>ja-JP</code> では ミカエルさんになるのかだぜ?<br /> ベースの設定ファイルには どっちが入ってる?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 最後に見たロケールで上書きしたらどう?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>ja-JP</code> から <code>en-US</code> に切り替えてから保存したら、<br /> <code>en-US</code> の設定ファイルが 日本語で上書きされるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 設定されていなければ 上書きしたらいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 要らんデータで 上書きされたくないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 全ての翻訳可能なプロパティは 個別にロケールを記憶しておけばどうだぜ?」</p> <pre><code class="toml">title = "冒険の荒野" title_locale = "ja-JP" author = "むずでょ" author_locale = "ja-JP" </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 こんな感じで」</p> <pre><code class="toml">[title] value = "冒険の荒野" locale = "ja-JP" [author] value = "むずでょ" locale = "ja-JP" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 TOML なら こうするかな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面を 英語で表示して、日本語入力したい人は どうすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんなことは するなと 言いたい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 素直に 設定されてないロケールで見たら 空欄が楽かなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 プレースホルダーに出すとかかな」</p> <p>ベース:</p> <pre><code class="toml">[global] uuid = "86A25699-E391-4D61-85A5-356BA8049881" extension = ".png" publish_date = 2023-06-26T00:00:00+09:00 [user_defined] </code></pre> <p>ロケールが <code>ja-JP</code>:</p> <pre><code class="toml">[local] title = "冒険の荒野" author = "むずでょ" [user_defined] # 自由に使える欄 </code></pre> <p>ロケールが <code>en-US</code>:</p> <pre><code class="toml">[local] title = "adventure field" author = "Muzudho" [user_defined] # Please feel free to use here. </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じで どうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 試しにやってみないと 分かんないわねぇ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 UUID ではないファイル名は どこにセットしたらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ <code>fileStem</code> というフィールドも増やすかだぜ」</p> <h1 id="📅 (2023-07-29 sat)TOMLファイルを読めるようにしようぜ?"><a href="#%F0%9F%93%85+%EF%BC%882023-07-29+sat%EF%BC%89TOML%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%82%81%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">📅 (2023-07-29 sat)TOMLファイルを読めるようにしようぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 打ち込むか」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、循環参照した。空間が成立してない」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 サークル名と、作品名は アプリケーションが始まる最初に入力しておかないと、<br /> 構成ファイルの場所を取得するために 構成ファイルを見る、という循環参照が起こるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 トップ・ページは 構成ファイルを読まなくても 表示できるようにしておかないといけないのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>構成ファイルの場所</strong> が先に在って、 <strong>構成ファイルそれ自体</strong> は後に在るのか」</p> <p><a href="https://crieit.now.sh/upload_images/aebe5d82ced43ab6a6a6b4c92f674bb464c43c873c169.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aebe5d82ced43ab6a6a6b4c92f674bb464c43c873c169.png?mw=700" alt="202307_maui_29-0708--config.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 今こんな感じだが、内部的に改修しよう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 すると構成画面に入る前に 毎回、サークル名と 作品名を 入力する必要が出てくるぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ユーザー名と パスワードみたいだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ 構成ファイルは サークル名とパスワードのペアを 覚えておけばいいのよ」</p> <pre><code class="toml">[[entry]] circle = "Doujin Circle Grayscale" work = "Negiramen Quest" [[entry]] circle = "Apple Banana Cherry" work = "Dragon Fruits" [[entry]] circle = "Shogi Club" work = "Furi Bisha" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 現在の <code>configuration.toml</code> ファイルは、 <code>Doujin Circle Grayscale/Negiramen Quest/project.toml</code> みたいな名前に変えるべきでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ まず ログイン画面から作るか」</p> <h2 id="ログイン画面を作ろうぜ?"><a href="#%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">ログイン画面を作ろうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/802359e2cc176acbe3e4b1d55210f99a64c4424c2bab5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/802359e2cc176acbe3e4b1d55210f99a64c4424c2bab5.png?mw=700" alt="202307_maui_29-0729--loginPageIdea.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 同じのを何度も入力したくは ないんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/808d7b1349da9af2d7640d07d9eaa6d764c44493746a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/808d7b1349da9af2d7640d07d9eaa6d764c44493746a6.png?mw=700" alt="202307_maui_29-0735--loginPageIdea2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リストから選べるように工夫だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 試しに作ってみてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ! だったら Unity の Assets フォルダーの場所も 入力しておいてほしいぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 今の構成ページを、ログイン・ページに変えたらいいんじゃない?」</p> <h2 id="メインページより先にログインページを出すには?"><a href="#%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%88%E3%82%8A%E5%85%88%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%87%BA%E3%81%99%E3%81%AB%E3%81%AF%EF%BC%9F">メインページより先にログインページを出すには?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 メインページより先にログインページを出すには どうやったらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/dad58c47b9af35c15301fa9e9c9c494c64c446876b1e4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dad58c47b9af35c15301fa9e9c9c494c64c446876b1e4.png?mw=700" alt="202307_maui_29-0750--AppShellXaml-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 試しに AppShell.xaml を いじったったらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/311eda52978d65ddeb7e9ea655b824cb64c447187a638.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/311eda52978d65ddeb7e9ea655b824cb64c447187a638.png?mw=700" alt="202307_maui_29-0753--Startup-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Ok! これでいける!」</p> <h2 id="Workspace フォルダーの名前を変えたい"><a href="#Workspace+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AE%E5%90%8D%E5%89%8D%E3%82%92%E5%A4%89%E3%81%88%E3%81%9F%E3%81%84">Workspace フォルダーの名前を変えたい</a></h2> <p><a href="https://crieit.now.sh/upload_images/35512c41ecbd758940ffb7f1451e0b0a64c44b01002fc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/35512c41ecbd758940ffb7f1451e0b0a64c44b01002fc.png?mw=700" alt="202307_maui_29-0810--Workspace.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この Workspace フォルダーへのパスを入力させるの、難しいな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 インストール時に勝手に設定してくれないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ユーザーを想定して 開発者がパスの設定をするのは大変だから ユーザーが設定してほしい」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 このフォルダーの中で作業するのではなく、開始時にデプロイする初期ファイルが入ってるだけだから<br /> フォルダーの名前も <code>Starter Kit</code> とかに変えたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ログイン後は 2度と使わないんじゃないの? このディレクトリー・パス」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Starter Kit</code> という名前にリネームしていくぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ、 <code>user_configuration.toml</code> というファイルは 現状、 <code>configuration.toml</code> で置き場所を設定できるようにしていたが、<br /> 大変なので <code>Starter Kit</code> フォルダーの直下に置くように 固定していい?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 設定できることは少ない方が ユーザー・サポートが楽になるぜ」</p> <h2 id="configuration.toml を改造したい"><a href="#configuration.toml+%E3%82%92%E6%94%B9%E9%80%A0%E3%81%97%E3%81%9F%E3%81%84">configuration.toml を改造したい</a></h2> <p><a href="https://crieit.now.sh/upload_images/c6fd35f76d71fbfbf5793ca248becd8564c46227bc603.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c6fd35f76d71fbfbf5793ca248becd8564c46227bc603.png?mw=700" alt="202307_maui_29-0949--ConfigurationToml.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 今 こんな感じだが、 <code>[profile]</code> テーブルを、 <code>[[entry]]</code> テーブル配列に変えるぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、 次回 どの設定で 再開するか 覚えておく必要があるぜ!」</p> <pre><code class="toml">[remember] # あたなのサークル名 your_circle_name = "Doujin Circle Negiramen" # あなたの作品名 your_work_name = "Negiramen Quest" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じのデータは やっぱり要るか?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 変えたり 戻したり だな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エントリーは ドロップ・ダウン・リストでいいかな。 50 件も 100 件もあるようなデータじゃないだろ」</p> <h2 id="やっぱりログイン画面は作ろうぜ?"><a href="#%E3%82%84%E3%81%A3%E3%81%B1%E3%82%8A%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%81%AF%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">やっぱりログイン画面は作ろうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/65c485094d9599b373e91a9b6eb792fa64c475144d237.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/65c485094d9599b373e91a9b6eb792fa64c475144d237.png?mw=700" alt="202307_maui_29-1108--starterKit.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 構成ページではなく、 別途 ログイン・ページが要ると思う。それも2ページ構成で」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 変更じゃなくて 機能追加だったのね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>LoginPage1</code> にすると <code>LoginPage1ViewModel</code> になるのが カッコ悪いから、<br /> <code>Login1Page</code> にして <code>Login1PageViewModel</code> になるようにする」</p> <p><a href="https://crieit.now.sh/upload_images/8e6e6fcd4e2f4b5fd06bfca97840d9ba64c48dc4077f9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8e6e6fcd4e2f4b5fd06bfca97840d9ba64c48dc4077f9.png?mw=700" alt="202307_maui_29-1255--login1page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これを整形したり 動きを付けたりしないといけない 大変だ……」</p> <h2 id="『君たちはどう生きるか?』"><a href="#%E3%80%8E%E5%90%9B%E3%81%9F%E3%81%A1%E3%81%AF%E3%81%A9%E3%81%86%E7%94%9F%E3%81%8D%E3%82%8B%E3%81%8B%EF%BC%9F%E3%80%8F">『君たちはどう生きるか?』</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 観てきた~」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 続きをしろだぜ」</p> <h2 id="ログイン画面の作成の続き"><a href="#%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%AE%E7%B6%9A%E3%81%8D">ログイン画面の作成の続き</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 つら……」</p> <h1 id="📅 (2023-07-30 sun)ログイン画面 はよ作れだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-30+sun%EF%BC%89%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%80%80%E3%81%AF%E3%82%88%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-30 sun)ログイン画面 はよ作れだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ログイン画面 はよ作れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面制作は つらい」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/df368437d4455bddbee75dc104609db264c5d37631e82.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/df368437d4455bddbee75dc104609db264c5d37631e82.png?mw=700" alt="202307_maui_30-1204--login1page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆👇 まず レイアウトから。 MAUI はバグ放置があって 思ったように レイアウトできない」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/6391">Picker width on Windows not filling container #6391</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 大企業でも 進捗は こんなものなのね」</p> <p><a href="https://crieit.now.sh/upload_images/06c41b70489dc99f9ed864dc425b0fed64c5d8d4d48a2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/06c41b70489dc99f9ed864dc425b0fed64c5d8d4d48a2.png?mw=700" alt="202307_maui_30-1228--login2page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 2ページ目のレイアウトは こんな感じで」</p> <h2 id="文字数のカウント"><a href="#%E6%96%87%E5%AD%97%E6%95%B0%E3%81%AE%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88">文字数のカウント</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 動きを付けろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a36109a94fd3c6853b524ed9d2d5101a64c5f05c08c31.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a36109a94fd3c6853b524ed9d2d5101a64c5f05c08c31.png?mw=700" alt="202307_maui_30-1408--numberOfCharacters.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 文字数のカウントは付けたが、すでに登録されているかどうかで<br /> 新規作成か 続きからかを分けるところ 作るの めんどくさいな」</p> <h2 id="エントリー・リストを出す"><a href="#%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC%E3%83%BB%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E5%87%BA%E3%81%99">エントリー・リストを出す</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1つ1つ解消していきなさい。まず リストを出してみなさい」</p> <pre><code class="xaml"> <Picker Grid.Row="1" Grid.Column="2" VerticalOptions="Center" HorizontalOptions="StartAndExpand" WidthRequest="300" ItemsSource="{Binding EntryList}" SelectedItem="{Binding SelectedEntry}" ItemDisplayBinding="{Binding PresentableTextAsStr}"/> </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ItemDisplayBinding</code> 属性に リストの要素のメソッド名を入れれば 表示文字列になってくれるのか」</p> <p><a href="https://crieit.now.sh/upload_images/e95759244092495f537ab7dc2563a46864c6076b781be.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e95759244092495f537ab7dc2563a46864c6076b781be.png?mw=700" alt="202307_maui_30-1544--entryList.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サークル名と 作品名を 構成ファイルから取ってくるようにしたぜ」</p> <h2 id="リストから選んで、テキストボックスへ入れる"><a href="#%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E9%81%B8%E3%82%93%E3%81%A7%E3%80%81%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%B8%E5%85%A5%E3%82%8C%E3%82%8B">リストから選んで、テキストボックスへ入れる</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それを選んだたら 隣のテキストボックスへ入れろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8776c3152dbe70b4f87111772be0bc5164c614520ab22.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8776c3152dbe70b4f87111772be0bc5164c614520ab22.png?mw=700" alt="202307_maui_30-1641--choicePicker.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 隣のテキストボックスに入るようにしたぜ」</p> <h2 id="レイアウトを調整"><a href="#%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%82%92%E8%AA%BF%E6%95%B4">レイアウトを調整</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 文字数がサークル名を、 使える文字が作品名を指しているように 誤解を与えるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 レイアウトの設計は 本当に大変」</p> <p><a href="https://crieit.now.sh/upload_images/3b96e66d6869be4a488e3576cd3db1ed64c61bd39c446.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3b96e66d6869be4a488e3576cd3db1ed64c61bd39c446.png?mw=700" alt="202307_maui_30-1712--table.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/22a068adb7e8fb90473f5f963cbde1f664c61bdc2563a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/22a068adb7e8fb90473f5f963cbde1f664c61bdc2563a.png?mw=700" alt="202307_maui_30-1713--table-en.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 翻訳時に 伸縮変わるんで」</p> <h2 id="続きから始めるボタン"><a href="#%E7%B6%9A%E3%81%8D%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3">続きから始めるボタン</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 入力したサークル名と 作品名が 既存のときは 次へボタンではなく、<br /> 続きから始めるボタンが出ろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e9f80b56e63c770543b30af5eddfb6db64c62cfb5730f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e9f80b56e63c770543b30af5eddfb6db64c62cfb5730f.png?mw=700" alt="202307_maui_30-1827--continue.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <strong>続きから</strong> ボタンは 出るようにしたぜ」</p> <h2 id="次へボタン"><a href="#%E6%AC%A1%E3%81%B8%E3%83%9C%E3%82%BF%E3%83%B3">次へボタン</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 次は <strong>次へ</strong> ボタンを作れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/3504451a8e7954d7cb04a38da2bc06d964c631377f586.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3504451a8e7954d7cb04a38da2bc06d964c631377f586.png?mw=700" alt="202307_maui_30-1836--nextButton.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 作ったぜ」</p> <h2 id="サークル名、作品名に使える文字"><a href="#%E3%82%B5%E3%83%BC%E3%82%AF%E3%83%AB%E5%90%8D%E3%80%81%E4%BD%9C%E5%93%81%E5%90%8D%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%E6%96%87%E5%AD%97">サークル名、作品名に使える文字</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 サークル名、作品名は フォルダ―名に使うのに、<br /> このままだと 長い名前を入力されるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 フォルダー名に使うサークル名 という日本語で2回 名 が出てくるのが煩わしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ サークル名 じゃなくて サークル・フォルダー だろ」</p> <p><a href="https://crieit.now.sh/upload_images/f2b24ac134d26c15a916fae15c6d5f1e64c635dc7ffdb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f2b24ac134d26c15a916fae15c6d5f1e64c635dc7ffdb.png?mw=700" alt="202307_maui_30-1904--folderName.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 フォルダー名を入れろ、という主張を強めたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 推奨する使える文字じゃなくて、アスキー・コードで縛った方がいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 別に うまく使ってくれりゃ いいんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 あとで困る使い方を 自由にする人が ほとんどなのに」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 バリデーション・チェックは無しで」</p> <h2 id="テキストボックスへ、前回使った値を入れましょう"><a href="#%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%B8%E3%80%81%E5%89%8D%E5%9B%9E%E4%BD%BF%E3%81%A3%E3%81%9F%E5%80%A4%E3%82%92%E5%85%A5%E3%82%8C%E3%81%BE%E3%81%97%E3%82%87%E3%81%86">テキストボックスへ、前回使った値を入れましょう</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 何度も サークル・フォルダ名、作品フォルダ名を入力するのが 手間だから<br /> 前回使った値を 最初から入れておくようにしましょう」</p> <p><a href="https://crieit.now.sh/upload_images/cea0b1b8e1aa4e88ac6174d469e92d9f64c645f2c0bbf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cea0b1b8e1aa4e88ac6174d469e92d9f64c645f2c0bbf.png?mw=700" alt="202307_maui_30-2013--remember.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 構成ファイルから 初期値を読み取るのは作ったぜ。<br /> 構成ファイルに保存する方は まだだけど」</p> <h2 id="新規作成のケースを作ってくれだぜ"><a href="#%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90%E3%81%AE%E3%82%B1%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">新規作成のケースを作ってくれだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 新規作成のケースを作ってくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ページの <code>Loaded</code> イベント・ハンドラーって 1回実行されたら ページは破棄されていないのか、<br /> 2回来訪しても 呼び出されないんだな」</p> <h1 id="📅 (2023-07-31 mon)ログイン画面 はよ作れだぜ(2日目)"><a href="#%F0%9F%93%85+%EF%BC%882023-07-31+mon%EF%BC%89%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%80%80%E3%81%AF%E3%82%88%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C%EF%BC%88%EF%BC%92%E6%97%A5%E7%9B%AE%EF%BC%89">📅 (2023-07-31 mon)ログイン画面 はよ作れだぜ(2日目)</a></h1> <p><a href="https://crieit.now.sh/upload_images/84a93c3c96194ae2608eff9897f6ba7d64c772ab45cf6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/84a93c3c96194ae2608eff9897f6ba7d64c772ab45cf6.png?mw=700" alt="202307_maui_31-1734--setup-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ページを最初に読みこんだときと、ページに再び訪れたタイミングで<br /> ピッカーの中身を入れ替えればいいんだぜ」</p> <h2 id="ピッカーの項目に削除ボタンを置けないの?"><a href="#%E3%83%94%E3%83%83%E3%82%AB%E3%83%BC%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E5%89%8A%E9%99%A4%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E7%BD%AE%E3%81%91%E3%81%AA%E3%81%84%E3%81%AE%EF%BC%9F">ピッカーの項目に削除ボタンを置けないの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/cdc442a3a7f5548a3e615648d01057a364c773f922d06.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cdc442a3a7f5548a3e615648d01057a364c773f922d06.png?mw=700" alt="202307_maui_31-1740--picker-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 項目多くなったら ウザいわよね。<br /> リストの項目に 削除ボタンを付けれないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 その削除ボタンは、リストから項目を削除するボタンなのか、<br /> それとも プロジェクトを丸ごと消すボタンなのか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 リスト上から消すボタンよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 非表示の意味で 眼玉マークの方がいいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 一度 非表示にしたものは、どこから 再表示できるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 昔のRPGの皮袋みたいに 要らない道具は 皮袋に詰め込めば<br /> 預かりもの屋に テレポーテーションすればいいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 その意図を アイコン1つで説明するのは 難しいな……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 預かりもの屋も 作らないといけないしな。 いったん保留かな」</p> <h2 id="ConfigurationEntry を ProjectIdentifier へ名称変更"><a href="#ConfigurationEntry+%E3%82%92+ProjectIdentifier+%E3%81%B8%E5%90%8D%E7%A7%B0%E5%A4%89%E6%9B%B4">ConfigurationEntry を ProjectIdentifier へ名称変更</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あのピッカーの項目は、構成のエントリーというより、プロジェクトの識別子だよな」</p> <pre><code class="toml">[[project]] # あなたのサークル・フォルダ名 id.your_circle_folder_name = "" # あなたの作品フォルダ名 id.your_work_folder_name = "" # Unity の 📂 `Assets` フォルダ―へのパス unity_assets_folder = "" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 意味を強調するなら こうしたいところ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 構造的にネストしなくても、コメントで十分では?」</p> <pre><code class="toml">[[project]] # (Id)あなたのサークル・フォルダ名 your_circle_folder_name = "" # (Id)あなたの作品フォルダ名 your_work_folder_name = "" # Unity の 📂 `Assets` フォルダ―へのパス unity_assets_folder = "" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ こう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>unity_assets_folder</code> は プロジェクトの構成ファイルが 持つべきで、<br /> ネギラーメンの構成ファイルが持っては いけないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それもそう。じゃあ プロジェクト構成ファイルを作るか~」</p> <h2 id="remember を current に変えたい"><a href="#remember+%E3%82%92+current+%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F%E3%81%84">remember を current に変えたい</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 変数の整合性を きつくしたいので、<br /> テキスト・ボックスに入れた値が 現在の設定だ、という風にするぜ」</p> <h1 id="📅 (2023-08-01 tue)まだログイン画面 できてないのかだぜ?(3日目)"><a href="#%F0%9F%93%85+%EF%BC%882023-08-01+tue%EF%BC%89%E3%81%BE%E3%81%A0%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2%E3%80%80%E3%81%A7%E3%81%8D%E3%81%A6%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%E3%81%A0%E3%81%9C%EF%BC%9F%EF%BC%88%EF%BC%93%E6%97%A5%E7%9B%AE%EF%BC%89">📅 (2023-08-01 tue)まだログイン画面 できてないのかだぜ?(3日目)</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 まだログイン画面 できてないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 もう つらい」</p> <p><a href="https://crieit.now.sh/upload_images/8b61f17a4b865228dc973fb216663b0a64c8d31e0c1e8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8b61f17a4b865228dc973fb216663b0a64c8d31e0c1e8.png?mw=700" alt="202308_maui_01-1839--projectIdList.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このリストは 構成ファイルに記憶するのではなく、<br /> ディレクトリ階層を 探索するだけで良かったのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ディレクトリを探索できない権限のケースもあるから、<br /> 構成ファイルに記録するプログラムは 有るっちゃ有るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面作りの何に時間がかかんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 作ってみたあとに気づく設計が成立してない矛盾と、<br /> 押されたくないボタンが押せてしまう状態の管理漏れ、<br /> そしてバリデーション・チェックが通らなかったときの表示だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ほっとくと 都合の悪い入力を通してしまうしな」</p> <p><a href="https://crieit.now.sh/upload_images/a3c910fbc32430d8d3cf1df171b956b864c8ebe2c40d0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a3c910fbc32430d8d3cf1df171b956b864c8ebe2c40d0.png?mw=700" alt="202308_maui_01-2026--login1page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/43ad2ddb768cc867561e61b1ce00772164c8ec4e139ff.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/43ad2ddb768cc867561e61b1ce00772164c8ec4e139ff.png?mw=700" alt="202308_maui_01-2027--login2page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず こんなもんで勘弁しろだぜ。<br /> 入力チェックは パス」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 入力欄は 縦に並んでいる方が ふつうじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 もっともだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bf0de710521fee7f29f6cbfce556c68f64c8f508747e5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bf0de710521fee7f29f6cbfce556c68f64c8f508747e5.png?mw=700" alt="202308_maui_01-2104--login1page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これでどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 良くなったわね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 しかし、 あなたのサークル・フォルダ名って何だろな? と、ユーザーは思わないかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 思うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/77476cbcedfd2289699cdab49cb94b2864c8f7c37a2bb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/77476cbcedfd2289699cdab49cb94b2864c8f7c37a2bb.png?mw=700" alt="202308_maui_01-2116--login1page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あなたのサークル・フォルダ名のテキストボックスの右端に ×ボタンが付いているんだが、<br /> わたしが付けたわけじゃないし、取り除く方法も分からないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 仕方ない。ほっといて 次へ進めだぜ」</p> <h2 id="ログインページから始まるように、 MainPage をログインページにしようぜ?"><a href="#%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8B%E3%82%89%E5%A7%8B%E3%81%BE%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%80%81+MainPage+%E3%82%92%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">ログインページから始まるように、 MainPage をログインページにしようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ログインページから始まるように、 MainPage をログインページにしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんで 最初のページの名前が <code>MainPage</code> なんだぜ やめてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 まあ プログラムは昔から <code>main</code> から始まるけど」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 差替えたぜ。これで ひとまず ログイン・ページは終わりだぜ」</p> <h1 id="📅 (2023-08-02 wed)初回ログイン時にスターターキットをユニティのAssetsフォルダーへコピーするようにしよう"><a href="#%F0%9F%93%85+%EF%BC%882023-08-02+wed%EF%BC%89%E5%88%9D%E5%9B%9E%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%99%82%E3%81%AB%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%AD%E3%83%83%E3%83%88%E3%82%92%E3%83%A6%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AEAssets%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%B8%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%82%88%E3%81%86">📅 (2023-08-02 wed)初回ログイン時にスターターキットをユニティのAssetsフォルダーへコピーするようにしよう</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 まだ終わってなかった」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 サークル・フォルダ名、作品フォルダ名を作ったあとは、初回ログイン時に<br /> スターターキットをユニティのAssetsフォルダーへコピーするようにしよう」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 とりあえず 実装した。不具合があるかどうかは知らん」</p> <h2 id="タイルセット一覧画面にインポート・ボタンを付けようぜ?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7%E7%94%BB%E9%9D%A2%E3%81%AB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%83%BB%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E4%BB%98%E3%81%91%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">タイルセット一覧画面にインポート・ボタンを付けようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイルセット一覧画面にインポート・ボタンを付けようぜ??」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ドラッグ&ドロップの方がいいかも知れないが、<br /> とりあえず インポートボタンは要るかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4a9c7dc3b1dc99d31684432d9cf7532664ca3998e40ae.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4a9c7dc3b1dc99d31684432d9cf7532664ca3998e40ae.png?mw=700" alt="202308_maui_02-2007--importBtn-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 インポート・ボタンは こんなんでいいかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 こんなでかいボタン、噴飯ものだが MAUI だから仕方ない。良いんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ファイル・ピッカーの説明が 何言ってるか分からないな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/platform-integration/storage/file-picker?tabs=windows">Microsoft > ファイル ピッカー</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 サンプル・プログラムに ファイル・ピッカーがないか 調べてみるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/jfversluis/MauiFilePickerSample">jfversluis > MauiFilePickerSample</a></p> <h1 id="📅 (2023-08-03 thu)疲れたので寝た"><a href="#%F0%9F%93%85+%EF%BC%882023-08-03+thu%EF%BC%89%E7%96%B2%E3%82%8C%E3%81%9F%E3%81%AE%E3%81%A7%E5%AF%9D%E3%81%9F">📅 (2023-08-03 thu)疲れたので寝た</a></h1> <p>Zzz</p> <h1 id="📅 (2023-08-04 fri)インポート画面の練習をしよう"><a href="#%F0%9F%93%85+%EF%BC%882023-08-04+fri%EF%BC%89%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E7%94%BB%E9%9D%A2%E3%81%AE%E7%B7%B4%E7%BF%92%E3%82%92%E3%81%97%E3%82%88%E3%81%86">📅 (2023-08-04 fri)インポート画面の練習をしよう</a></h1> <p><a href="https://crieit.now.sh/upload_images/d237db0b43f7a893373fcf780203440764ccd07270013.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d237db0b43f7a893373fcf780203440764ccd07270013.png?mw=700" alt="202308_maui_04-1917--filePickerSample.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 前述のサンプルは 動くぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1d22f3ffbaf75490d2f1db9276bffaf664ccd120a2adb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d22f3ffbaf75490d2f1db9276bffaf664ccd120a2adb.png?mw=700" alt="202308_maui_04-1920--filePickerCode-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コードはこれを真似すれば 良さそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイル・ピッカーは コントロールではなく、ただの関数なんだな」</p> <h2 id="ドラッグ&ドロップ"><a href="#%E3%83%89%E3%83%A9%E3%83%83%E3%82%B0%EF%BC%86%E3%83%89%E3%83%AD%E3%83%83%E3%83%97">ドラッグ&ドロップ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイル・ピッカーに取り掛かる前に コントロールの色々なことが分からないので 本番に組み込む前に 練習したいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 リポジトリ―を作っておいたぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/MAUI-Control-Practice">Muzudho > MAUI-Control-Practice</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 画像ファイルを ネギラーメンに ドラッグ アンド ドロップ できるかな?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/gestures/drag-and-drop">Microsoft > ドラッグ アンド ドロップ ジェスチャを認識する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 <code>Square</code> クラスなんか どこにあるのか?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.controls.shapes?view=net-maui-7.0">Microsoft > Microsoft.Maui.Controls.Shapes Namespace</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Rectangle で十分じゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI の Rectangle は、 XAML の Rectangle 要素なんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/85d26164aba5067202145c1a1d738c3664ccd943ebcad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/85d26164aba5067202145c1a1d738c3664ccd943ebcad.png?mw=700" alt="202308_maui_04-1955--DragAndDrop.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 矩形を ドラッグ&ドロップ しようとしたら こんな見た目になるのか」</p> <p><a href="https://crieit.now.sh/upload_images/1551bf606ba0383840c72b08edfe8c7e64ccdce80cbd5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1551bf606ba0383840c72b08edfe8c7e64ccdce80cbd5.png?mw=700" alt="202308_maui_04-2010--Drag.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ドラッグ・イベントの仕事は、 禁止マークとか コピー・マークとか 表示するところにありそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/7aceafb63df49c40ed115ae3b5fda20064ccde26b1960.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7aceafb63df49c40ed115ae3b5fda20064ccde26b1960.png?mw=700" alt="202308_maui_04-2015--Xaml-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 XAML は こう書いて」</p> <p><a href="https://crieit.now.sh/upload_images/4b3d8fb879b19214cf2b22e19c104d2964ccdec9a63d1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4b3d8fb879b19214cf2b22e19c104d2964ccdec9a63d1.png?mw=700" alt="202308_maui_04-2017--CodeBehind-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コード・ビハインドは こう書けば良さそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Windowsのファイル・エクスプローラー上の画像ファイルを MAUIへドラッグ&ドロップできるの?」</p> <p><a href="https://crieit.now.sh/upload_images/ccf87c1cadcdb67a48666b16634d77bb64ccdff39ecd0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ccf87c1cadcdb67a48666b16634d77bb64ccdff39ecd0.png?mw=700" alt="202308_maui_04-2024--DragImageFile.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 できそうな見た目をしているが、ドロップすると 強制終了するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6bbab9883f9f6738c26f8dfc0ef704e164cce0b7899d8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6bbab9883f9f6738c26f8dfc0ef704e164cce0b7899d8.png?mw=700" alt="202308_maui_04-2027--error.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 エラーの理由は ヌルにできないパラメーターに ヌルを入れたかららしいが、<br /> 分けわからん」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 MAUI にデスクトップ・アプリケーションの機能が無いのは 鉄板の話題らしい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/discussions/7508">Does MAUI support file drag and drop to other application (Windows, Linux, macOS)? #7508</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ MAUI は WPF より先に廃止するかもしれないな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ファイル・ピッカーで しのぎましょう」</p> <h2 id="アラート"><a href="#%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88">アラート</a></h2> <p><a href="https://crieit.now.sh/upload_images/ed05e90ff9b34e53412b6c2a18e715f364ccf6b320f46.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ed05e90ff9b34e53412b6c2a18e715f364ccf6b320f46.png?mw=700" alt="202308_maui_04-2157--choice-file.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 うーん、ファイルのフル・パスは取れるのか。<br /> この ダイアログボックスみたいなの 現代では アラートと呼ぶらしいが、<br /> キャンセル・ボタンも出せるだろうか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ポップアップはなぜ XAML じゃないのか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/pop-ups">ポップアップの表示</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 いろいろ あるっちゃ あるのか」</p> <p><a href="https://crieit.now.sh/upload_images/1d7e3fa65de92cd9d8407590be14c50a64cd06316e53b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d7e3fa65de92cd9d8407590be14c50a64cd06316e53b.png?mw=700" alt="202308_maui_04-2306--alert.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず こんなんでいいか……」</p> <h2 id="ファイルのコピー"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC">ファイルのコピー</a></h2> <p><a href="https://crieit.now.sh/upload_images/d95a6b674a68191818fccc10f13975e664cd086427e07.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d95a6b674a68191818fccc10f13975e664cd086427e07.png?mw=700" alt="202308_maui_04-2316--copyFile-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ひとまず 上図のような ファイル・コピーをやってみるかだぜ」</p> <pre><code class="csharp"> System.IO.File.Copy( sourceFileName: result.FullPath, destFileName: tilesetPngLocation.Path.AsStr); </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルのコピーだけなら これでいけるはず」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Windows の API 使ってるの、いいのか知らんけど」</p> <p><a href="https://crieit.now.sh/upload_images/298abbe4c24c155db1eeca239c712c1d64cd0aa236fe4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/298abbe4c24c155db1eeca239c712c1d64cd0aa236fe4.png?mw=700" alt="202308_maui_04-2326--copyFile-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルのコピーはでけたけど、コレクション・ビューにも追加しないと 画面に出てこないな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 コレクション・ビューに入れるのではなく、<br /> アイテム・ソースに入れるんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうか」</p> <p><a href="https://crieit.now.sh/upload_images/c4373428cc0cffd29db3f157725e6a2364cd1e8cbace3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c4373428cc0cffd29db3f157725e6a2364cd1e8cbace3.png?mw=700" alt="202308_maui_05-0051--import-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 インポートで 画像を放り込んだった」</p> <h2 id="ファイルの削除"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%89%8A%E9%99%A4">ファイルの削除</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 要らんもの 放り込まれたら 削除したいんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 削除ボタンを どこに置くかという レイアウトも困るよな」</p> <p><a href="https://crieit.now.sh/upload_images/8106e54b9e16de45156a05abf67eeb2a64cd231c5ac49.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8106e54b9e16de45156a05abf67eeb2a64cd231c5ac49.png?mw=700" alt="202308_maui_05-0110--removeBtn.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 左下に赤いボタンを置くというのは どうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 危ないから間違って押したくないボタンなのに、主張が激しくて むしろ目が そっちに行くんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 頻繁に マウスカーソルが近づくとこに 削除ボタンを置いては いけないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/2d78f572b5d9e3bfb488ece8341d0ac964cd27221c3d7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2d78f572b5d9e3bfb488ece8341d0ac964cd27221c3d7.png?mw=700" alt="202308_maui_05-0127--paleViolotRed.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 右上に ペール・バイオレット・レッド のボタンを置くというのは どうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ロケールのピッカーの真下なのが気になるけど、ちょっと ずらしたら どう?」</p> <p><a href="https://crieit.now.sh/upload_images/09910719b4f8821d67ed55e5e21ea26864cd28214eebd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/09910719b4f8821d67ed55e5e21ea26864cd28214eebd.png?mw=700" alt="202308_maui_05-0132--deleteBtn.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 おかしくないか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 誤クリック防止よ」</p> <h2 id="ボタンのスタイル"><a href="#%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB">ボタンのスタイル</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、この ペール・バイオレット・レッド のボタン、<br /> 不活性にしても グレーにならねーっ!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 背景色を指定しているからな」</p> <p><a href="https://crieit.now.sh/upload_images/2856912165bb029c019bf201eed2a7ef64cd2bd005eb8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2856912165bb029c019bf201eed2a7ef64cd2bd005eb8.png?mw=700" alt="202308_maui_05-0147--buttonStyle-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このボタンのスタイル、 削除ボタンだけ 別のを使うようにできないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>x:Name</code> 属性を使って なんとかならないかしらねえ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 <code>x:Key</code> というのが あるそうだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/styles/xaml">XAML を使用してアプリのスタイルを設定する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 でけた」</p> <h2 id="キュー構造だから、任意の場所の要素を削除できねー"><a href="#%E3%82%AD%E3%83%A5%E3%83%BC%E6%A7%8B%E9%80%A0%E3%81%A0%E3%81%8B%E3%82%89%E3%80%81%E4%BB%BB%E6%84%8F%E3%81%AE%E5%A0%B4%E6%89%80%E3%81%AE%E8%A6%81%E7%B4%A0%E3%82%92%E5%89%8A%E9%99%A4%E3%81%A7%E3%81%8D%E3%81%AD%E3%83%BC">キュー構造だから、任意の場所の要素を削除できねー</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キュー構造だから、任意の場所の要素を削除できねー」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 前から入れて、後ろから出すしか できないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 なんで キューなんかにしたのよ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コンカレント処理に強ければ なんでもいいと思ったんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>ConcurrentBag</code> にしよかな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 <code>ConcurrentBag</code> も要素を削除できないのか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/3029818/how-to-remove-a-single-specific-object-from-a-concurrentbag">How to remove a single, specific object from a ConcurrentBag?</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 非同期処理をしているときには どんなコレクションが使えるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/faaed6043ec972dcd9a68adad366e9bf64cd3d8b28804.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/faaed6043ec972dcd9a68adad366e9bf64cd3d8b28804.png?mw=700" alt="202308_maui_05-0302--importAndDelete.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 連続読込は ConcurrentBag、 UI は同期のコレクションに変えた。<br /> インポートと タイルセット削除は でけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 疲れたので 今日は ここまで」</p> <h1 id="📅 (2023-08-05 sat)たいとる1"><a href="#%F0%9F%93%85+%EF%BC%882023-08-05+sat%EF%BC%89%E3%81%9F%E3%81%84%E3%81%A8%E3%82%8B%EF%BC%91">📅 (2023-08-05 sat)たいとる1</a></h1> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>たいとる1</code> って何なの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルセットのタイトルを入れたいところだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 入れなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 PNG画像があって、TOMLファイルが無いといったペアがあるとき、<br /> TOMLファイルを自動生成する機能が要るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その機能を付けなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイミングとしては、インポート、タイルセット削除、ファイルのリネームの3か所だな」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/fbb45c3876ab54aa62962c269d88f77264cdde1f5296b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fbb45c3876ab54aa62962c269d88f77264cdde1f5296b.png?mw=700" alt="202308_maui_05-1428--tilesetGlobalConfig.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 万国共通の構成ファイルの方は 自動生成するようにしたが、<br /> 画像のタイトルは ロケール別の構成ファイルの方に入れる仕様だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ロケール別の構成ファイルも 早よ作れだぜ」</p> <h2 id="ロケール用のフォルダーを作ろうぜ?"><a href="#%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB%E7%94%A8%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">ロケール用のフォルダーを作ろうぜ?</a></h2> <pre><code class="plaintext">cultureInfo: DisplayName: 日本語 (日本), EnglishName: Japanese (Japan), Name: ja-JP, NativeName: 日本語 (日本), IetfLanguageTag: ja-JP, TwoLetterISOLanguageName: ja, ToString(): ja-JP cultureInfo: DisplayName: 英語 (アメリカ合衆国), EnglishName: English (United States), Name: en-US, NativeName: English (United States), IetfLanguageTag: en-US, TwoLetterISOLanguageName: en, ToString(): en-US cultureInfo: DisplayName: 中国語 (簡体字), EnglishName: Chinese (Simplified), Name: zh-Hans, NativeName: 中文(简体), IetfLanguageTag: zh-Hans, TwoLetterISOLanguageName: zh, ToString(): zh-Hans </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画面のピッカーには <code>NativeName</code> で表示した方がいいのかな……?」</p> <p><a href="https://crieit.now.sh/upload_images/e48e6444c8902db407fb272a348880d764cdf32fc8618.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e48e6444c8902db407fb272a348880d764cdf32fc8618.png?mw=700" alt="202308_maui_05-1558--NativeName.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>NativeName</code> の方が かっこいいな こっちにしよ」</p> <p><a href="https://crieit.now.sh/upload_images/15c750fce282f349c9f65edefb424e7264ce02e829524.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/15c750fce282f349c9f65edefb424e7264ce02e829524.png?mw=700" alt="202308_maui_05-1705--TilesetLocalConfig.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ひとまず ロケール用のフォルダーと、空のファイルを作成……」</p> <h2 id="コレクション・ビューの選択中の色"><a href="#%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AE%E9%81%B8%E6%8A%9E%E4%B8%AD%E3%81%AE%E8%89%B2">コレクション・ビューの選択中の色</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コレクション・ビューの選択中の色、グレーで見にくいな!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 スタイル 見たけど さっぱり分からん。後回し。ダークモード消したった」</p> <h2 id="タイルセット削除ボタンの位置"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E5%89%8A%E9%99%A4%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E4%BD%8D%E7%BD%AE">タイルセット削除ボタンの位置</a></h2> <p><a href="https://crieit.now.sh/upload_images/3db68693fbf1a13ab7592ef34e7de8d864ce0af39cc56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3db68693fbf1a13ab7592ef34e7de8d864ce0af39cc56.png?mw=700" alt="202308_maui_05-1739--TilesetDeleteBtn.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイルセット削除ボタンの位置を 左下に戻したった」</p> <h2 id="プレースホルダ―のロケール設定を分けたいぜ"><a href="#%E3%83%97%E3%83%AC%E3%83%BC%E3%82%B9%E3%83%9B%E3%83%AB%E3%83%80%E2%80%95%E3%81%AE%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%82%92%E5%88%86%E3%81%91%E3%81%9F%E3%81%84%E3%81%9C">プレースホルダ―のロケール設定を分けたいぜ</a></h2> <pre><code class="toml">[global] uuid = "6FBD83F1-D2A3-45EE-AFC5-411CD6E50144" extension = ".toml" [local_placeholder] title = "適当に作った画像" author = "むずでょ" [user_defined] </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイルセット・グローバル構成ファイルに <code>local_placeholder</code> という項目が欲しいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 最初に思っていなかった いろんなものを 盛り込むなあ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 英語で設定されていて、日本語で設定されていないとき、<br /> 英語の設定を プレースホルダーで表示してくれてもいいじゃないか、というものだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 第1言語、第2言語を選べるようにすりゃいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 フーム、大改造は嫌なんで 後回しにするか」</p> <h2 id="タイルセットのタイトル"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB">タイルセットのタイトル</a></h2> <p><a href="https://crieit.now.sh/upload_images/abd33f51c5e1433c223b48cdff5c5eb364ce1dcc4439d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/abd33f51c5e1433c223b48cdff5c5eb364ce1dcc4439d.png?mw=700" alt="202308_maui_05-1859--TilesetTitle.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 まず 日本語で対応を進めていこう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 画面から タイトルを変更できるようにしてくれだぜ」</p> <h2 id="エントリー(テキストボックス)で1文字入力するたびにビュー・モデルが更新されるのつらい"><a href="#%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC%EF%BC%88%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%EF%BC%89%E3%81%A7%EF%BC%91%E6%96%87%E5%AD%97%E5%85%A5%E5%8A%9B%E3%81%99%E3%82%8B%E3%81%9F%E3%81%B3%E3%81%AB%E3%83%93%E3%83%A5%E3%83%BC%E3%83%BB%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%A4%E3%82%89%E3%81%84">エントリー(テキストボックス)で1文字入力するたびにビュー・モデルが更新されるのつらい</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エントリー(テキストボックス)で1文字入力するたびにビュー・モデルが更新されるのつらい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それが MVVM なんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 このサイトは 細かく書いてるが 知りたい情報はあるかな?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.devexpress.com/MAUI/DevExpress.Maui.Editors.TextEditBase.Text">TextEditBase.Text Property</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 <code>Completed</code> というイベントハンドラがあるのでは?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/entry">Microsoft > 入力</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それを使うように変えていくか~」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんだこれ エンター・キー 押さないと <code>Completed</code> しないじゃないか。<br /> エンター・キー押さなかったら どうする?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エントリーで タブ・キー押したら タブが入るし」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI の不具合なんだから、<strong>エンター・キーを押せ</strong> という運用でやるしかなくない?」</p> <h2 id="画面を移動するボタンと、それ以外の機能があるボタン"><a href="#%E7%94%BB%E9%9D%A2%E3%82%92%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A8%E3%80%81%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%8C%E3%81%82%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3">画面を移動するボタンと、それ以外の機能があるボタン</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面の移動も、 データの編集も 同じボタンの形状なの 分かりづらいんだが」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そんなもんだろ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面遷移も スライドするトランジションが入るやつと、<br /> トランジションが無いやつもあるし」</p> <pre><code class="csharp"> // await contentPage.Navigation.PushAsync(new ConfigurationPage()); // var shellNavigationState = new ShellNavigationState("//MapExplorerPage"); await Shell.Current.GoToAsync(shellNavigationState); </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 やり方が2つあるのも 分けわかんないわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>Navigation</code> を使うやつは、戻るボタンが勝手に付くのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 わざわざ <code>ShellNavigationState</code> を使うやり方って メリット無いの?」</p> <h2 id="日本語と 英語で 別々にタイトルを付けれる機能"><a href="#%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%A8%E3%80%80%E8%8B%B1%E8%AA%9E%E3%81%A7%E3%80%80%E5%88%A5%E3%80%85%E3%81%AB%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92%E4%BB%98%E3%81%91%E3%82%8C%E3%82%8B%E6%A9%9F%E8%83%BD">日本語と 英語で 別々にタイトルを付けれる機能</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 日本語と 英語で 別々にタイトルを付けれる機能の実装を進めるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fbced500be8f0555a4b00072d6dd459f64ce6e9d18385.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fbced500be8f0555a4b00072d6dd459f64ce6e9d18385.gif?mw=700" alt="202308__maui__06-0034--localization-downsize2.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 付けた」</p> <h2 id="アンドゥとリドゥ"><a href="#%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%81%A8%E3%83%AA%E3%83%89%E3%82%A5">アンドゥとリドゥ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そろそろ アンドゥと リドゥができないことに 突っ込まれそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Command Pattern を自力実装するのか、それとも MAUI に何か便利なフレームワークがあるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 他人が作ってくれてるけど、自力実装すりゃ いーんじゃねーの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/nossey/items/c59910558d5501f03ad0">C#でUndo/Redoを実装した</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MVVMは アンドゥに従ってくれんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 全ての操作には、逆向きの操作も用意しておく必要があるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 テキストボックスの文字を1つ消したのも戻せるレベルで ヒストリーを作んの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エントリー(テキストボックス)には アンドゥ・リドゥ機能がもう付いていたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ MAUI に元から付いている アンドゥ・リドゥ機能と、<br /> お父んが作る アンドゥ・リドゥ機能は ぶつからないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そこらへん どうすんだろな?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いきなり バイナリで作ると バグ取りが難しいだろうから、<br /> ヒストリーは TOMLファイルで書き出すかな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 削除したリソースや、 上書きで加工してしまったリソースとか 出てくると思うが<br /> 復元する方法は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ネギラーメンは リソースは編集しないぜ。<br /> リソースを組み立てるだけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 インポートした素材は 削除も 上書きもされないという前提に立っているのね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ネギラーメンから 素材を削除するときは、アンドゥもできません、ということにするんだぜ」</p> <h1 id="📅 (2023-08-06 sun)アンドゥ・リドゥ機能を作れだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-08-06+sun%EF%BC%89%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-08-06 sun)アンドゥ・リドゥ機能を作れだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥ機能を作れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eced50158e1543811a537a2f5002b09664cf0b5da767c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eced50158e1543811a537a2f5002b09664cf0b5da767c.png?mw=700" alt="202308_maui_06-1152--Done-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コンピューター将棋と同じだぜ。 全ての操作には、進むと 戻るが あるんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b4b3caeb34f9c7c450b0e45a8456888a64cf0d1c9d3c4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b4b3caeb34f9c7c450b0e45a8456888a64cf0d1c9d3c4.png?mw=700" alt="202308_maui_06-1201--History-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 履歴管理機能も 便利機能を付けなければ 芯は これだけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/7b4da01e8824b99d89ebdaf0f94c7abc64cf10b91cc4e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b4da01e8824b99d89ebdaf0f94c7abc64cf10b91cc4e.png?mw=700" alt="202308_maui_06-1216--EventHandler-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 イベントハンドラの内、自動ではなく、ユーザーの操作によって呼び出されるものが<br /> ヒストリーの記録対象になるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ 試しに ズームを ヒストリカルにしなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/e053ab0d78aa219040d6bd7945d1eafc64cf11f641740.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e053ab0d78aa219040d6bd7945d1eafc64cf11f641740.png?mw=700" alt="202308_maui_06-1221--Redo-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ヒストリカルにしていないということは、<br /> リドゥの方向のプログラムしか 書かれていないということだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面の更新しか 書いてなくない? ズームの数字が いくつから いくつへ変更したか書いてないわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コード・ビハインドだからな」</p> <p><a href="https://crieit.now.sh/upload_images/e50cabb8fd3965441c338b531452251864cf1e63b02b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e50cabb8fd3965441c338b531452251864cf1e63b02b8.png?mw=700" alt="202308_maui_06-1315--Zoom.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ズームして何が起こるかは ビュー・モデルの方に書いてある」</p> <p><a href="https://crieit.now.sh/upload_images/ad70323f0257024d839d8540142d204464cf1f3aea353.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad70323f0257024d839d8540142d204464cf1f3aea353.png?mw=700" alt="202308_maui_06-1318--ZoomChange-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ズームすると、画像を作り直したり、グリッドを作り直したり、<br /> 切抜きカーソルを描き直したり、カラーマップを描き直したり、<br /> 広範囲に影響があるようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ズームの変更と、ズームの変更によって起こる事象を切り分けてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/db3b8995061475c572c158c85dbcd69f64cf2cbd2922a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/db3b8995061475c572c158c85dbcd69f64cf2cbd2922a.png?mw=700" alt="202308_maui_06-1415--ZoomProcessing-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>IDone</code> インターフェースは <code>IProcessing</code> インターフェースに名称変更、<br /> <code>Redo</code> メソッドも <code>Do</code> に名称変更。そして実装」</p> <p><a href="https://crieit.now.sh/upload_images/05df4970d2bdfbb0042de5f80ce0040a64cf2e6914f9c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05df4970d2bdfbb0042de5f80ce0040a64cf2e6914f9c.png?mw=700" alt="202308_maui_06-1422--ZoomRecursive-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>History</code> クラスも <code>Done</code> メソッドを止め、 <code>Do</code> メソッドに変更、中で <code>Processing</code> クラスの <code>Do</code> メソッドを呼び出している」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あと、コードの書き方が下手で 無駄に再帰してるから 書き直したい」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 MAUI には キーボード操作のイベントハンドラが無いじゃないか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/selfstudy/items/d0f9520d3b40f8946d36">.NET MAUIでのCtrl+Enterなどのキーイベントハンドリングの難しさ</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 スマホに キーボードは付いていませんからね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>[Ctrl] + [Z]</code> の操作をカスタマイズできないのかだぜ、クソじゃないか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI は 意固地にも 画面上のボタンを押せ、ということかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それが <strong>クロスプラットフォームの真実</strong> なのでしょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ♪<br /> 真理は 避けられず<br /> 真実は 踏み込んだ者にしか知られず<br /> 真相は 勝手なものである」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んの前で 真実に触れるなだぜ」</p> <h2 id="アンドゥ・リドゥ ボタンを置こうぜ?"><a href="#%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E3%80%80%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E7%BD%AE%E3%81%93%E3%81%86%E3%81%9C%EF%BC%9F">アンドゥ・リドゥ ボタンを置こうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥ ボタンを置こうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Unicode には アンドゥ・リドゥに適した絵文字は無いようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>アンドゥ</code>、 <code>リドゥ</code> と書かれたボタンが 画面上に置いてあるのも 邪魔ねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 日本語なのに <code>Undo</code>、 <code>Redo</code> というボタンを画面に配置するのも 負けた気になるしな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 画像ボタンは作れないのか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 機能はあるみたいなんで、頑張って 絵 を描くか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/imagebutton">ImageButton</a></p> <p><a href="https://crieit.now.sh/upload_images/a328de6484934a7e4aece14b5b4cded564cf39226f259.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a328de6484934a7e4aece14b5b4cded564cf39226f259.png?mw=700" alt="202308_maui_06-1508--Buttons-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 置くとこないし、右上でどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 やっつけ わらう」</p> <p><a href="https://crieit.now.sh/upload_images/86086f787c441f82d0fbee3e27eeabc064cf3c2f8d193.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/86086f787c441f82d0fbee3e27eeabc064cf3c2f8d193.png?mw=700" alt="202308_maui_06-1521--UndoRedo-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 機能を実装するには、これだけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 バグが起きたわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 えっ!?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 アンドゥ したら、その操作が ドゥ されてるわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 アンドゥ中は ヒストリーのドゥを通っても そのドゥは 無視する必要があるのか」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 状態遷移を管理して 修正したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 リドゥが 1回しかできないんだけど?」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 将来リストの中身を全部捨ててるところも 状態管理の内側に入れて直した」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 完了リストが0件のときは アンドゥ・ボタンを押せないようにしてくれだぜ。<br /> 将来リストが0件のときは リドゥ・ボタンを押せないようにしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 アンドゥ、リドゥは 完了リスト、将来リスト間の移動が終わってから実行しないと<br /> 画面更新時に 反映が後手後手になるのか。直して 実装した」</p> <p><a href="https://crieit.now.sh/upload_images/c3c70c1344fd8e8c757a793921bd2eba64cf43ee55345.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c3c70c1344fd8e8c757a793921bd2eba64cf43ee55345.gif?mw=700" alt="202308__maui__06-1554--undoRedo.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ズームだけ アンドゥ・リドゥに対応したぜ」</p> <h2 id="マップ切抜き画面、前に開いたときの内容が残ってる"><a href="#%E3%83%9E%E3%83%83%E3%83%97%E5%88%87%E6%8A%9C%E3%81%8D%E7%94%BB%E9%9D%A2%E3%80%81%E5%89%8D%E3%81%AB%E9%96%8B%E3%81%84%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%8C%E6%AE%8B%E3%81%A3%E3%81%A6%E3%82%8B">マップ切抜き画面、前に開いたときの内容が残ってる</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん、バグがあるぜ。<br /> マップ切抜き画面、前に開いたときの内容が残ってる」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キャッシュされてるよな。<br /> 破棄して 新規作成してほしいんだが」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 キャッシュを止めてもらう方法がないか 調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/shell/pages">.NET MAUI シェル ページ</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 MAUI が更新されてないという情報が よく見つかるな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/7354">Call Dispose() on Page and ViewModel when the page is popped if they implement IDisposable #7354</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面遷移が 進んでいるのか、 戻っているのか フレームワークに情報を与える方法が無いのだから<br /> キャッシュを削除していいのか、 キャッシュを残すべきか、判別できないんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 C# で メモリ管理を自力実装することになるとは……」</p> <h2 id="グラフィック・ビューを、ビュー・モデルから Invalidate する方法が無い"><a href="#%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E3%80%81%E3%83%93%E3%83%A5%E3%83%BC%E3%83%BB%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8B%E3%82%89+Invalidate+%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%8C%E7%84%A1%E3%81%84">グラフィック・ビューを、ビュー・モデルから Invalidate する方法が無い</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グラフィック・ビューを、ビュー・モデルから Invalidate する方法が無いぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a4e44f578acb15b4867bd865d6f3372a64cf506fae002.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a4e44f578acb15b4867bd865d6f3372a64cf506fae002.png?mw=700" alt="202308_maui_06-1647--Invalidate-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そら、ビュー・モデルは ビューに指図しないしな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 横幅を振動させるトリック・コードを書くかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 そのトリック、偶数回 振動させると 元に戻って使えないという弱点があるのよね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 縦に振動すれば 回避できるが……」</p> <p><a href="https://crieit.now.sh/upload_images/a0a53d329864ab1a5e8b7782352112a864cf542fd3c0f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a0a53d329864ab1a5e8b7782352112a864cf542fd3c0f.png?mw=700" alt="202308_maui_06-1704--Dirty-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 試しに <code>Dirty</code> フラグを付けてみるか。このフラグが立ったら再描画されるといいんだが」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、 <code>Drawing</code> の方でフラグを下ろしても、 ビューモデルの方のフラグは下ろされてないから<br /> 1度フラグを立てると 立ちっぱなしで プロパティ・チェンジしないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Byte 型値にして 永遠に足し続ければどうか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/30f43668b83057434f2702db86d52dc164cf5cc715135.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/30f43668b83057434f2702db86d52dc164cf5cc715135.png?mw=700" alt="202308_maui_06-1741--Drawable-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 束縛変数に 変更通知をバンバン送っても 再描画は走らないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>Drawable</code> ではなく、 <code>GraphicsView</code> に変更通知を送る必要があるのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 他の人は 苦労してないんじゃないの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74144361/binding-from-view-to-graphicsview-property-in-net-maui">Binding from view to GraphicsView property in .NET MAUI</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そのようなコードは動かない。 仕方ないので トリックコードを使う」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 フレームワークに不具合があると、トリックコードが増えていくの わらう」</p> <h2 id="全部の操作に Do と Undo を用意しろだぜ"><a href="#%E5%85%A8%E9%83%A8%E3%81%AE%E6%93%8D%E4%BD%9C%E3%81%AB+Do+%E3%81%A8+Undo+%E3%82%92%E7%94%A8%E6%84%8F%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">全部の操作に Do と Undo を用意しろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 全部の操作に Do と Undo を用意しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 アンドゥによる削除は 完全削除で、<br /> 手動操作による削除は 論理削除なのな。<br /> これは 非対称でいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 論理削除フラグを 下げるだけで 元データが復活するのだから、<br /> 削除のアンドゥには 向いてるのに」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 追加のアンドゥには向いてるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 追加のアンドゥで 論理削除されたデータを残すとして、<br /> リドゥするのは 論理削除の解除ではなくて 上書きなんで、<br /> 追加のリドゥの役には立たないぜ」</p> <h2 id="論理削除してるのにデータが見えるバグ"><a href="#%E8%AB%96%E7%90%86%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E8%A6%8B%E3%81%88%E3%82%8B%E3%83%90%E3%82%B0">論理削除してるのにデータが見えるバグ</a></h2> <p><a href="https://crieit.now.sh/upload_images/c9860cf4ccd980c9bcbf1d175bdc8af964cfabfe23792.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c9860cf4ccd980c9bcbf1d175bdc8af964cfabfe23792.png?mw=700" alt="202308_maui_06-2319--LogicalDelete.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 論理削除してるのにデータが見える」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 直せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そこに無いとき、選択アイテムを無しで上書きしないといけないんだが、<br /> それをやってない気がするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>切抜きカーソル</strong> と <strong>選択タイル</strong> は別の概念なのに プロパティを使い回している気がするな。<br /> これを直すのは 大がかりなので、また今度だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>上書きボタンをクリックして保存する</strong> という操作も止めたい。<br /> テキストボックスに入力したら そのまま保存してほしい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥを考え出すと 設計に変更が生じるな」</p> <h1 id="📅 (2023-08-07 mon)アンドゥ・リドゥ機能を早よ作れだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-08-07+mon%EF%BC%89%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E6%A9%9F%E8%83%BD%E3%82%92%E6%97%A9%E3%82%88%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-08-07 mon)アンドゥ・リドゥ機能を早よ作れだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥ機能を早よ作れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 アンドゥ・リドゥ機能は もう付いていて、<br /> 既存のプログラムを すべて それに対応していくという作業なんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それを早よしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 既存のプログラムの不出来なところを直さないと そこへ進めないぜ」</p> <h1 id="📅 (2023-08-08 tue)アンドゥ・リドゥ機能を早よ作れだぜ(3日目)"><a href="#%F0%9F%93%85+%EF%BC%882023-08-08+tue%EF%BC%89%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E6%A9%9F%E8%83%BD%E3%82%92%E6%97%A9%E3%82%88%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C%EF%BC%88%EF%BC%93%E6%97%A5%E7%9B%AE%EF%BC%89">📅 (2023-08-08 tue)アンドゥ・リドゥ機能を早よ作れだぜ(3日目)</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥ機能を早よ作れだぜ。3日目だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 既存のコードを アンドゥ・リドゥ に対応するために、事前のコードの整理整頓中だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プログラムがヘタクソで すぐに アンドゥ・リドゥ に置き換えられないのねえ」</p> <h2 id="1つのボタンで 追加/上書き の2つの機能を切り替えて使うの、やめたい"><a href="#%EF%BC%91%E3%81%A4%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A7%E3%80%80%E8%BF%BD%E5%8A%A0%EF%BC%8F%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%80%80%E3%81%AE%EF%BC%92%E3%81%A4%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%A6%E4%BD%BF%E3%81%86%E3%81%AE%E3%80%81%E3%82%84%E3%82%81%E3%81%9F%E3%81%84">1つのボタンで 追加/上書き の2つの機能を切り替えて使うの、やめたい</a></h2> <p><a href="https://crieit.now.sh/upload_images/4bfbd64aba8397db3c60be53fa6ce99e64d20cc74d4ac.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4bfbd64aba8397db3c60be53fa6ce99e64d20cc74d4ac.png?mw=700" alt="202308_maui_08-1830--OverwriteButton-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 1つのボタンで 追加/上書き の2つの機能を切り替えて使うの、やめたい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 アンドゥするには 追加をアンドゥするのか 上書きをアンドゥするのか はっきりしたいわねえ」<br /> <a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 リドゥは同じ処理なのに、アンドゥは別の処理になるから 分けたいのか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 作りながら 方針転換していくのねえ」</p> <h2 id="TilesetSettings を TilesetDatatable へ名称変更"><a href="#TilesetSettings+%E3%82%92+TilesetDatatable+%E3%81%B8%E5%90%8D%E7%A7%B0%E5%A4%89%E6%9B%B4">TilesetSettings を TilesetDatatable へ名称変更</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルセットに 設定ファイル3つもあって 名前が似ていてややこしいので、<br /> CSV ファイルに対応するクラスは <code>TilesetDatatable</code> に名称変更するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 調整ばっかりだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <h2 id="上書きボタンやっぱ要る"><a href="#%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%84%E3%81%A3%E3%81%B1%E8%A6%81%E3%82%8B">上書きボタンやっぱ要る</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、 やっぱ 上書きボタン 要るぜ 戻す」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 迷走してるわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 上書きボタンは 名前を変えて 復元ボタンにするぜ。<br /> 論理削除フラグを解除するのに使うんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 本当に必要な最小限の機能を 洗い出したか?」</p> <p><a href="https://crieit.now.sh/upload_images/daee7aa7345154b0b662ef4acefffe0264d251cf13154.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/daee7aa7345154b0b662ef4acefffe0264d251cf13154.png?mw=700" alt="202308_maui_08-2331--Restore.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 例えば 復元は こんなケースで使う」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マーカーが無い所で タイル・タイトル入力できるの おかしくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 状況を調べて テキストボックスを不活性にするの わりと大変な作業」</p> <h2 id="論理削除フラグが False になってる"><a href="#%E8%AB%96%E7%90%86%E5%89%8A%E9%99%A4%E3%83%95%E3%83%A9%E3%82%B0%E3%81%8C+False+%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%8B">論理削除フラグが False になってる</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 見えないマーカーがあるんだが、論理削除フラグが False になってるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>IsNone</code> フラグと、 <code>LogicalDelete</code> フラグの2つがあるのが ダメなのでは?<br /> どちらか片方にしたら どうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 やってみるかだぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除済みの跡地を クリックしても 選択できなくなったぜ。<br /> だから 復元ボタンも 活性化しなくなったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除されてない 何もないところなら 選択できるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 カーソルが無いということと、カーソルが論理削除されているということは 何が違うの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除されているカーソルは 有る はずだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そこは 分けるのか……」</p> <h1 id="📅 (2023-08-09 wed)寝てた"><a href="#%F0%9F%93%85+%EF%BC%882023-08-09+wed%EF%BC%89%E5%AF%9D%E3%81%A6%E3%81%9F">📅 (2023-08-09 wed)寝てた</a></h1> <p>Zzz</p> <h1 id="📅 (2023-08-10 thu)アンドゥ・リドゥ機能を早よ作れだぜ(5日目)"><a href="#%F0%9F%93%85+%EF%BC%882023-08-10+thu%EF%BC%89%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E6%A9%9F%E8%83%BD%E3%82%92%E6%97%A9%E3%82%88%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C%EF%BC%88%EF%BC%95%E6%97%A5%E7%9B%AE%EF%BC%89">📅 (2023-08-10 thu)アンドゥ・リドゥ機能を早よ作れだぜ(5日目)</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アンドゥ・リドゥ機能を早よ作れだぜ。5日目だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除フラグのできが悪くてな。見直しだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f9dad432e926a89cf3b7c9b8f9bf546a64d4b13401a48.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f9dad432e926a89cf3b7c9b8f9bf546a64d4b13401a48.png?mw=700" alt="202308_maui_10-1841--LogicalDelete-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルでは論理削除フラグが立ってるのに、<br /> デバッグ出力では下りてるから、それがなぜなのかを調査するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/717392c5b8cc8ba7b57d3b34f145c97664d4b499ea708.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/717392c5b8cc8ba7b57d3b34f145c97664d4b499ea708.png?mw=700" alt="202308_maui_10-1856--LogicalDelete-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルから読み込んだときは 論理削除フラグは立ってるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 途中で下ろしたのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/596f91e7ddf4e5854ce8bff799174ace64d4b59e54988.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/596f91e7ddf4e5854ce8bff799174ace64d4b59e54988.png?mw=700" alt="202308_maui_10-1900--LogicalDelete-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 途中で タイトルも消えて、論理削除フラグも下ろしてるな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そんなことは やめろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/54ea2f7b9d1f4e933f50a235f57a383764d4bc8be2723.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54ea2f7b9d1f4e933f50a235f57a383764d4bc8be2723.png?mw=700" alt="202308_maui_10-1929--LogicalDelete-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ログにコードの場所を付けてみた。<br /> タイルを選んだときに タイトルと、論理削除を読み取ってないのかな?]</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタ カタ カタ カタ)</p> <h2 id="壊れた"><a href="#%E5%A3%8A%E3%82%8C%E3%81%9F">壊れた</a></h2> <p><a href="https://crieit.now.sh/upload_images/4d0cab70d61016b8963dada83af9a4a064d4df4d7e120.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4d0cab70d61016b8963dada83af9a4a064d4df4d7e120.png?mw=700" alt="202308_maui_10-2159--Broken.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんだか分からないが 壊れたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/3cfef72fbe33cb978893c1712ada060f64d4e789a8d23.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3cfef72fbe33cb978893c1712ada060f64d4e789a8d23.png?mw=700" alt="202308_maui_10-2234--BrokenXName.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>x:Name</code> を認識しなくなったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 PCを再起動したら直った。何だったんだ……?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんか エラー出るけど 無視して実行したら 動くな、不気味だな」</p> <h2 id="8月下旬の予定"><a href="#%EF%BC%98%E6%9C%88%E4%B8%8B%E6%97%AC%E3%81%AE%E4%BA%88%E5%AE%9A">8月下旬の予定</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 横幅を 奇数、偶数 振動させてるトリックコードを止めて、<br /> オフセット 0, 1 を切り替える変数を別途用意したい。これは8月下旬にしよう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 また 範囲指定するとき Working の方を使っているが、<br /> 全部 Source の方を使うように変更したい。<br /> Working は変数にしないようにしたい。これも8月下旬にしよう」</p> <h1 id="📅 (2023-08-21 mon)ドーナツUI にしようぜ?"><a href="#%F0%9F%93%85+%EF%BC%882023-08-21+mon%EF%BC%89%E3%83%89%E3%83%BC%E3%83%8A%E3%83%84UI+%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">📅 (2023-08-21 mon)ドーナツUI にしようぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 四方をぐるっと 青い領域で囲みたい」</p> <p><a href="https://crieit.now.sh/upload_images/2edea73551e7b33eed4248d2c6013d0064e27f2a03aa8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2edea73551e7b33eed4248d2c6013d0064e27f2a03aa8.png?mw=700" alt="202308_maui_21-0600--Current.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 現状こうなわけだが」</p> <p><a href="https://crieit.now.sh/upload_images/42b2b541b254ed69513f1099c9ccf60b64e284bba5a97.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/42b2b541b254ed69513f1099c9ccf60b64e284bba5a97.png?mw=700" alt="202308_maui_21-0624--Donut.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 3重グリッドにするわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 作業領域が狭いなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI のテキストボックスが でかすぎんのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 なんで フォントがこんなに大きいのか分からん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/fonts">.NET MAUI のフォント</a></p> <p><a href="https://crieit.now.sh/upload_images/9e49bb9e9b692132cc4749fb31df3a9864e288ebd45a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9e49bb9e9b692132cc4749fb31df3a9864e288ebd45a9.png?mw=700" alt="202308_maui_21-0642--MenuSize.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ルビ振る領域も考えると ドーナツは これだけ広くなる。<br /> 4K ディスプレイ推奨だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ それで進めてくれだぜ」</p> <h2 id="ホーム画面もドーナツUI にしようぜ?"><a href="#%E3%83%9B%E3%83%BC%E3%83%A0%E7%94%BB%E9%9D%A2%E3%82%82%E3%83%89%E3%83%BC%E3%83%8A%E3%83%84UI+%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">ホーム画面もドーナツUI にしようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/aed822fc02d410ec5d1eab3cf733b80764e28c4d62a93.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aed822fc02d410ec5d1eab3cf733b80764e28c4d62a93.png?mw=700" alt="202308_maui_21-0656--Home.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ホーム画面も 四方をぐるっと 青い領域で囲みたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d49477e1a6c64e518c819f345a3aa8ec64e28e48e0f84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d49477e1a6c64e518c819f345a3aa8ec64e28e48e0f84.png?mw=700" alt="202308_maui_21-0705--DonutUI.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ドーナツUI にするとこう」</p> <h2 id="タイルセット一覧画面もドーナツUI にしようぜ?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%BB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7%E7%94%BB%E9%9D%A2%E3%82%82%E3%83%89%E3%83%BC%E3%83%8A%E3%83%84UI+%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">タイルセット一覧画面もドーナツUI にしようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/ba433bd0a737a8d22e4383b6704e3bce64e28eeac66af.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ba433bd0a737a8d22e4383b6704e3bce64e28eeac66af.png?mw=700" alt="202308_maui_21-0708--TilesetList.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイルセット一覧画面も 四方をぐるっと 青い領域で囲みたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4b3693da668179578574fd2343238ce064e292cbb6da0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4b3693da668179578574fd2343238ce064e292cbb6da0.png?mw=700" alt="202308_maui_21-0724--TilesetListDonutUI.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こうなるぜ」</p> <h2 id="タイル切抜き画面もドーナツUI にしようぜ?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E5%88%87%E6%8A%9C%E3%81%8D%E7%94%BB%E9%9D%A2%E3%82%82%E3%83%89%E3%83%BC%E3%83%8A%E3%83%84UI+%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">タイル切抜き画面もドーナツUI にしようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/976f6a53fdfe478354d08063929c5da164e2931338db1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/976f6a53fdfe478354d08063929c5da164e2931338db1.png?mw=700" alt="202308_maui_21-0725--TileCrop.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイル切抜き画面も 四方をぐるっと 青い領域で囲みたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b751ab70b789dcc0cadfb6796619000264e29c12594cf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b751ab70b789dcc0cadfb6796619000264e29c12594cf.png?mw=700" alt="202308_maui_21-0803--Donut.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ひとまず こう。朝はここまで」</p> <h1 id="📅 (2023-08-22 tue)アンドゥ・リドゥをやってたのよ"><a href="#%F0%9F%93%85+%EF%BC%882023-08-22+tue%EF%BC%89%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%83%BB%E3%83%AA%E3%83%89%E3%82%A5%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%9F%E3%81%AE%E3%82%88">📅 (2023-08-22 tue)アンドゥ・リドゥをやってたのよ</a></h1> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 アンドゥ・リドゥを 形にしないと 次に進まなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 その前に タイル切抜き画面の トリック・コードが足引っ張ってるので<br /> それの改修だぜ」</p> <h2 id="View Model がでかくなりすぎる"><a href="#View+Model+%E3%81%8C%E3%81%A7%E3%81%8B%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%99%E3%81%8E%E3%82%8B">View Model がでかくなりすぎる</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ビューモデルがでかくなりすぎる。<br /> <code>View Inner Models</code> というフォルダーを作って中身を分けることにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>View History</code> というフォルダーも作る」</p> <h1 id="📅 (2023-08-23 wed)寝てただけ"><a href="#%F0%9F%93%85+%EF%BC%882023-08-23+wed%EF%BC%89%E5%AF%9D%E3%81%A6%E3%81%9F%E3%81%A0%E3%81%91">📅 (2023-08-23 wed)寝てただけ</a></h1> <p>Zzz</p> <h1 id="📅 (2023-08-24 thu)コード掃除"><a href="#%F0%9F%93%85+%EF%BC%882023-08-24+thu%EF%BC%89%E3%82%B3%E3%83%BC%E3%83%89%E6%8E%83%E9%99%A4">📅 (2023-08-24 thu)コード掃除</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コード掃除」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ビュー・モデルは 透過メソッドばっかりでも 良い気がしてきたな……」</p> <h1 id="📅 (2023-08-25 fri)コード掃除"><a href="#%F0%9F%93%85+%EF%BC%882023-08-25+fri%EF%BC%89%E3%82%B3%E3%83%BC%E3%83%89%E6%8E%83%E9%99%A4">📅 (2023-08-25 fri)コード掃除</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コード掃除」</p> <h1 id="📅 この間 サボり"><a href="#%F0%9F%93%85+%E3%81%93%E3%81%AE%E9%96%93%E3%80%80%E3%82%B5%E3%83%9C%E3%82%8A">📅 この間 サボり</a></h1> <p>……。</p> <h1 id="📅 (2023-09-20 wed)ナビゲーションの作り直し"><a href="#%F0%9F%93%85+%EF%BC%882023-09-20+wed%EF%BC%89%E3%83%8A%E3%83%93%E3%82%B2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E7%9B%B4%E3%81%97">📅 (2023-09-20 wed)ナビゲーションの作り直し</a></h1> <p><a href="https://crieit.now.sh/upload_images/896645149c41ee2f36caa4cd5b5bce9a6509ebdb8bd6b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/896645149c41ee2f36caa4cd5b5bce9a6509ebdb8bd6b.png?mw=700" alt="202309_negiramen_20-0342--Donut.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 パンくずリストは大変なので廃止した」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 1か月近くサボっていたな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その間に阪神タイガースが優勝したわよ」</p> <p><a href="https://crieit.now.sh/upload_images/9626fe64ce61ebc162a83a7b8fa177f26509ec5fc70c7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9626fe64ce61ebc162a83a7b8fa177f26509ec5fc70c7.png?mw=700" alt="202309_negiramen_20-0345--DeleteDeleteLogical.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 また、スクリーンショットからは見えないが、論理削除といった機能を 廃止した。<br /> 論理削除はデバッグを助けるが、論理削除自体のメンテナンスが大変だから嫌になった」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そういえば Unity が料金体系変更で ひと騒動やってるらしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Godot への乗り換えも考えないと いけなくなるのかしらねえ?」</p> <h2 id="アンドゥ、リドゥのバグをマシにした"><a href="#%E3%82%A2%E3%83%B3%E3%83%89%E3%82%A5%E3%80%81%E3%83%AA%E3%83%89%E3%82%A5%E3%81%AE%E3%83%90%E3%82%B0%E3%82%92%E3%83%9E%E3%82%B7%E3%81%AB%E3%81%97%E3%81%9F">アンドゥ、リドゥのバグをマシにした</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 論理削除をやめたから、壊れていたアンドゥ、リドゥの動きが、マシになったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル切抜き画面は、そんなもんでいいだろ」</p> <h1 id="📅 (2023-09-21 thu)~(2023-09-27 wed)この間サボり"><a href="#%F0%9F%93%85+%EF%BC%882023-09-21+thu%EF%BC%89%EF%BD%9E%EF%BC%882023-09-27+wed%EF%BC%89%E3%81%93%E3%81%AE%E9%96%93%E3%82%B5%E3%83%9C%E3%82%8A">📅 (2023-09-21 thu)~(2023-09-27 wed)この間サボり</a></h1> <p>…</p> <h1 id="📅(2023-09-27 thu)Godot へ改宗する"><a href="#%F0%9F%93%85%EF%BC%882023-09-27+thu%EF%BC%89Godot+%E3%81%B8%E6%94%B9%E5%AE%97%E3%81%99%E3%82%8B">📅(2023-09-27 thu)Godot へ改宗する</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 わたしは Unity からイチ抜けた をし、 Godot へ改宗するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そうか」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 次の記事はもう始まってるわよ」</p> <h1 id="次の記事へ"><a href="#%E6%AC%A1%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%B8">次の記事へ</a></h1> <p>📖 <a href="https://crieit.net/posts/Godot-65115761b6a17">Godot って何だぜ(^~^)?</a></p> <p>.</p> むずでょ tag:crieit.net,2005:PublicArticle/18484 2023-06-24T19:36:39+09:00 2023-07-17T02:39:22+09:00 https://crieit.net/posts/2D-RPG 2D RPG 制作ツールを作ろうぜ(^~^)? <h1 id="📅 2023-06-25 はじめに"><a href="#%F0%9F%93%85+2023-06-25+%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">📅 2023-06-25 はじめに</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 2D RPG 制作ツールを作ろうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんで お父んが そんなこと しなければならないのか?<br /> 働けだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 思いついたら やるんでしょ。<br /> そこらへんの 凡人と同じよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 それより 作業用BGM かけようぜ? 気分を盛り上げないとな」</p> <p>💿 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=YQOFjkWvRBs">Rockman ロックマン 11 [OST] Full Album</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それは作業用BGMではなく、違法アップロード動画なのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/cc54f960e67d5e17ae1e70b9125f4df26496c502e9f26.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cc54f960e67d5e17ae1e70b9125f4df26496c502e9f26.jpg?mw=700" alt="202306__photo__24--Rockman11.jpg" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サイドPCを Ubuntu に差し替えたんで Steam を久しぶりに動かしてみたら、動いたんで驚いたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 えっ? RPG制作ツールを作るのに 作業用BGMが ロックマン11 でいいのかだぜ??」</p> <h2 id="MAUI を調べろだぜ"><a href="#MAUI+%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8D%E3%81%A0%E3%81%9C">MAUI を調べろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 企画と アーキテクチャーを 長々と 説明しても あれなんで……<br /> MAUI を調べようぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/kashin777/items/eae43a555dc28867926f">.NET MAUI (環境構築からHallo, World!~Windowsアプリ編~)</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 プラン全部 飛ばしたな。もう作業か」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 あんたのお父ん ノー・プランよ。<br /> ウォーター・フォール・モデルの下流工程の <strong>実装</strong> という狭い範囲でしか仕事できないんだから。<br /> あと 事務と経理」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それって 羨ましがられるらしいぜ。 いーな、コードばかりやってて、と」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんか 知らん間に Windows の <strong>開発者モード</strong> というのが オフ にされているらしく、<br /> これを オン にして ビルド」</p> <p><a href="https://crieit.now.sh/upload_images/ae92a352bfab9fac23739915bb9d06776496c3c428262.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ae92a352bfab9fac23739915bb9d06776496c3c428262.png?mw=700" alt="202306_maui_24-1920--hello-world.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これが MAUI を実行した画面か~。 なんなんだろうな これ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 何も分からん。 ロードマップもない」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Click me</code> を押したら ボタンを押した回数が出てくるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 こっから ツールを組み立てていくの、気が遠くなるわね~」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイトル画面なんか作らずに メニューがさっさと出てきたら 良くね?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んがよく選ぶのは 家系二郎ラーメン、 塩ラーメン、 レモンサワー」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 今日は ネギ・ラーメン にしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 メニューって、そのメニューなの?」</p> <p><a href="https://crieit.now.sh/upload_images/85d448436de2ee8bdbebbd35fea8fda76496c7fe11a46.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/85d448436de2ee8bdbebbd35fea8fda76496c7fe11a46.png?mw=700" alt="202306_maui_24-1939--negiramen.png" /></a></p> <p>👆 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/2D-RPG-Negiramen">2D-RPG-Negiramen</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 リポジトリ―は 作っておいたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ネギ・ラーメンは リポジトリ―の名前じゃなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/b97b87e7de3c8c7a2dac34effe6936076496ca3cbaf3c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b97b87e7de3c8c7a2dac34effe6936076496ca3cbaf3c.png?mw=700" alt="202306_maui_24-1941--title image.png" /></a></p> <p>使用フォント: 📖 <a target="_blank" rel="nofollow noopener" href="https://tanukifont.com/tanuki-permanent-marker/">たぬき油性マジック</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じの ファースト・ビュー でどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 縦スクロール・バーは 付けておいてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 いいのか よくないのか 分かんないから さっさと作って 動かしてみましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 アラートが出てきたぜ。ここ読めだって」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/get-started/first-app?tabs=vswin&pivots=devices-android">Build your first app</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 わたしが やりたいことを 説明してくれるのではなく、<br /> マイクロソフトが 説明したいことを 説明してくるので つらいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面にボタンを置きなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 どこを読めばいいのか 分からない、ドキュメントとの戦いだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/tutorials/notes-app/?tutorial-step=2">Customize the app shell</a></p> <p><a href="https://crieit.now.sh/upload_images/0b1909f16a43d7eeb0c51e447a7a95736496d217ce30b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0b1909f16a43d7eeb0c51e447a7a95736496d217ce30b.png?mw=700" alt="202306_maui_24-2022--title-menu.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 様々な概念が分からなかったが作った、とりあえず これで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ とりあえず マップを作る画面に進みなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ??」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面遷移って どうやって やるんだ……??」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これでも読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/kashin777/items/2f1abcba9c8fa02b592c">.NET MAUI (いろんな画面遷移)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 うーん?」</p> <p><a href="https://crieit.now.sh/upload_images/5839fb5ceef097452e77a24b23b1adea6496d6e4a003c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5839fb5ceef097452e77a24b23b1adea6496d6e4a003c.png?mw=700" alt="202306_maui_24-2042--app-shell-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>AppShell.xml</code> というのを 何か設定しないといけない?」</p> <p><a href="https://crieit.now.sh/upload_images/19cac8b8101b30e6e92873b6df50f5826496d9100dd5c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/19cac8b8101b30e6e92873b6df50f5826496d9100dd5c.png?mw=700" alt="202306_maui_24-2051--create-map-page-view.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず 画面遷移は できたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 どうやって HOMEに戻るんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 パンくずリスト が有ったらいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 パンくずリストのような機能は用意されているのではなく、自力で作らないといけないらしいぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74757711/net-maui-tabs-with-breadcrumb-navigation">.NET Maui Tabs with Breadcrumb Navigation</a></p> <p><a href="https://crieit.now.sh/upload_images/04929fb38a8472e03c6b2e32ff5a7f876496de48a2b44.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/04929fb38a8472e03c6b2e32ff5a7f876496de48a2b44.png?mw=700" alt="202306_maui_24-2114--breadcrumb-list.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 作り方 分からんので とりあえず ボタンとラベルで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ次は 戦闘を作る画面に進みなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/f724f2677c0c038e726424f9db3a20016496e0772c32d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f724f2677c0c038e726424f9db3a20016496e0772c32d.png?mw=700" alt="202306_maui_24-2123--create-battle-view-page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 同様だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 残りも 以下同様で やってくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 つら」</p> <p><a href="https://crieit.now.sh/upload_images/330a545ed654f0592934639f69ffcf376496f7bfeb6bd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/330a545ed654f0592934639f69ffcf376496f7bfeb6bd.png?mw=700" alt="202306_maui_24-2302--xaml-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>.xaml</code> ファイル増えてきて 邪魔なんだけど、置き場フォルダーは どう作るのが ベストプラクティス なんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/todu/items/699e5a6abd936421309f">MAUI(WinUI3)でMVVMを超単純にやる</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 Qiita の素人記事読むぐらいだったら 公式読むぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/tutorials/notes-mvvm/">Microsoft > Upgrade your app with MVVM concepts</a></p> <p><a href="https://crieit.now.sh/upload_images/bb76ed4804b6f14a69d37e5a681e640d6496fb6d3f952.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bb76ed4804b6f14a69d37e5a681e640d6496fb6d3f952.png?mw=700" alt="202306_maui_24-2318--views-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こうすりゃいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>MainPage.xaml</code> も 📂 <code>Views</code> フォルダーに入れろだぜ」</p> <h2 id="エクスプローラーが要るんじゃないか?"><a href="#%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%8C%E8%A6%81%E3%82%8B%E3%82%93%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%81%8B%EF%BC%9F">エクスプローラーが要るんじゃないか?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん。<br /> プレイヤー・キャラクター編集画面に入る前に、<br /> どのプレイヤー・キャラクターを編集するのか 選択する画面が 要るんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、そうか!<br /> ほとんどの データ編集ページで リストが要るぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 リストでいいの?<br /> テーブルじゃなくて いいの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ エクスプローラー だ。<br /> MAUI にそんなコントロール あるかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 お父ん。コレクション・ビューと、テーブル・ビューを調べてみてくれだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/kashin777/items/cb200af6d4f00cc88a63">.NET MAUI (UIコントロール)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 だから 素人が書いた記事なんか 読まねーっつーの」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/collectionview/">Microsoft > CollectionView</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか知らんが <code>ListView</code> より かっこいいのが <code>CollectionView</code> らしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 考えるの止めるの わらう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/tableview">Microsoft > TableView</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コレクション・ビューを使うべきか、テーブル・ビューを使うべきの判断方法が分からん」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ページネーション(Pagination;ページ割り)の機能は付いているのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 調べたいことが 出てこないのが マイクロソフトの ドキュメントなんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マイクロソフトの Bing の人工知能に利いても MAUI がなんだか分かってないし」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ、ページネーションも 自力実装することにしよう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そうであるなら、クリテリア(Criteria;判断基準)が必要だぜ。<br /> どのような規則に従って整列しているか、<br /> 表示されているデータは 何件目~何件目までのデータか、<br /> 表示されているのは 何ページ目か、<br /> 昇順か逆順か、<br /> フィルタリングされているか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 無いものを 自力実装するのが プログラマーだぜ。<br /> 必要だったら 片っ端から 実装していけばいいんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 迷ったら テーブル・ビューと コレクション・ビューの両方実装すりゃいいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ぬぎぎぎぎ!」</p> <p><a href="https://crieit.now.sh/upload_images/a1f78ded35ca26ebd4c2a21ba10d532564970f24880bf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a1f78ded35ca26ebd4c2a21ba10d532564970f24880bf.png?mw=700" alt="202306_maui_25-0041--home.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/f7fa2f745b99c523b470ba7eb3b66f1f64970f2d0332f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f7fa2f745b99c523b470ba7eb3b66f1f64970f2d0332f.png?mw=700" alt="202306_maui_25-0042--map-explorer.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/c81a96f9f4ace9f2ffc4205a36cef01364970f3695130.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c81a96f9f4ace9f2ffc4205a36cef01364970f3695130.png?mw=700" alt="202306_maui_25-0043--create-map.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こういう風に 途中に 検索ページを1枚 挟めばいいんだろ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 デザインを分かってないエンジニアが作りがちな検索画面だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ぬぎぎぎぎ!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 動いているところを見ないと よく分かんないから、<br /> 明日は 動くところを作ってみましょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ライセンスが オープンソースの 2D RPGの素材 なんも 持ってねー ぬぎぎぎぎぎ!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 あっ! <strong>ゲームとして利用するならフリーだが、素材集を ツールに同梱して そのまま再配布することを許可している素材が無いのか!</strong>」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 当然よねえ」</p> <h2 id="Unity プロジェクトを作ろうぜ?"><a href="#Unity+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">Unity プロジェクトを作ろうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 まあ 無いものは無いで 変数x とでも置いておいて 解けるところから先に解くのが 数学だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それを問題の先送りと言う」</p> <p><a href="https://crieit.now.sh/upload_images/abf13bd281298f429e57efd366fe8a0e649741edea122.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/abf13bd281298f429e57efd366fe8a0e649741edea122.png?mw=700" alt="202306_maui_25-0418--unity-project-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 テンプレートは <strong>2D</strong> を選び、プロジェクト名は <strong>Negiramen Practice</strong> にして<br /> プロジェクトを作成しようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ネギラーメンでは、それが何だか 分かんなくない?<br /> 検索のサジェスチョンも汚すし」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 聞き慣れてくれば イカしてくるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/cb8a80f81c28d90c3a0cd3d00d0c3f1e649743fb8b4d7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cb8a80f81c28d90c3a0cd3d00d0c3f1e649743fb8b4d7.png?mw=700" alt="202306_maui_25-0427--2D-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんか最初から いろんなものが入っている……、ちょっと見てみるか……」</p> <p><a href="https://crieit.now.sh/upload_images/fd6d85d3f0cd08ea624600a258213cd764974512580ed.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fd6d85d3f0cd08ea624600a258213cd764974512580ed.png?mw=700" alt="202306_maui_25-0432--2D-Editor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 多分 エディターなんだと思うんだが、この1つ1つを調べて行くか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 お父んが作らなくても、すでに いいものがあるのでは?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/RyotaMurohoshi/items/f9a10db24ea9378d47f7">TileMapEditorはいいぞ!</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 オープンソースだけで やりたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4a2b47916a48a3acdbbbd0a8f6f75fc164974929477f8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4a2b47916a48a3acdbbbd0a8f6f75fc164974929477f8.png?mw=700" alt="202306_maui_25-0449--OverwriteProjectToUnity-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ちょっと ボタンを追加しよう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 それで……、テキスト・ボックスって どうやって作るんだ? 調べるか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/entry">Microsoft > 入力</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Entry</code> というタグがあるのか」</p> <p><a href="https://crieit.now.sh/upload_images/25f4051d2808773ea00e242d3e8b78e364974b8dc8e3b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/25f4051d2808773ea00e242d3e8b78e364974b8dc8e3b.png?mw=700" alt="202306_maui_25-0500--OverwriteProjectToUnityPage.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 それで こういうページ作るだろ。<br /> ディレクトリー・パスを入れて ボタンを押すと……」</p> <p><a href="https://crieit.now.sh/upload_images/ee7071e309c6fa3adaa35a07964576a06497554762594.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ee7071e309c6fa3adaa35a07964576a06497554762594.png?mw=700" alt="202306_maui_25-0540--Folders-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Unity プロジェクトへ フォルダーや ファイルを送り付けるという算段だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Unity の外部で ゲーム・オブジェクトを作れるの?<br /> Unity の外部で プレファブは作れるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Unity に そういう API があるか? ということだな。<br /> 調べてみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そんなことを しようという人が少ないのか 記事が見当たらないな」</p> <h2 id="設定の保存を作れだぜ"><a href="#%E8%A8%AD%E5%AE%9A%E3%81%AE%E4%BF%9D%E5%AD%98%E3%82%92%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">設定の保存を作れだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 毎回 📂 <code>Assets</code> フォルダーへのパスを入れるのが 面倒なんだけど?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユーザー・データとして保存したいよな。<br /> 最近流行りのファイル形式は何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 TOML 1.0 はどうだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/toml-lang/toml/wiki">公式 > toml</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 Tomlyn を NuGET で入れてみるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/xoofx/Tomlyn">Tomlyn</a></p> <h2 id="MVVM"><a href="#MVVM">MVVM</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ?」</p> <p><a href="https://crieit.now.sh/upload_images/c2e22ea1ecfe5617dfa3a5a51878509a6497d83ed2201.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c2e22ea1ecfe5617dfa3a5a51878509a6497d83ed2201.png?mw=700" alt="202306_maui_25-1459--text-box-default-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 このテキスト・ボックスの初期値って どうやって 入れるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 お父んが さっき読んでいた記事に書いてあるだろ。 MVVM のところを読み直せだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/tutorials/notes-mvvm/">Microsoft > Upgrade your app with MVVM concepts</a></p> <p><a href="https://crieit.now.sh/upload_images/b92492bfd9e12e4e78cededee82797d26497d9f92dac0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b92492bfd9e12e4e78cededee82797d26497d9f92dac0.png?mw=700" alt="202306_maui_25-1508--MVVM.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず 📂 <code>Views</code> 、 📂 <code>ViewModels</code> 、 📂 <code>Models</code> の3フォルダーを揃えよう」</p> <p><a href="https://crieit.now.sh/upload_images/6e271686644c51e40fd8a76b6302d5e96497ddac6c8de.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e271686644c51e40fd8a76b6302d5e96497ddac6c8de.png?mw=700" alt="202306_maui_25-1518--model-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんだか分からないが Model は ただのオブジェクトだろ。イミュータブルに作ったった」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ViewModel は なんか複雑だな 説明を よく読も」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/tutorials/notes-mvvm/?tutorial-step=4">Create the About viewmodel</a></p> <p><a href="https://crieit.now.sh/upload_images/88a3db11149efb1bf819bb67fa4339e26497e9410c31d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/88a3db11149efb1bf819bb67fa4339e26497e9410c31d.png?mw=700" alt="202306_maui_25-1613--viewModel-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ViewModel は Model と 変更通知プロパティ を紐づければいいんだろ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ビュー・モデルのデフォルト・コンストラクターは public 修飾にする必要があるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b09892288a97de3f53119d7043bec5f96497ecc95d14e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b09892288a97de3f53119d7043bec5f96497ecc95d14e.png?mw=700" alt="202306_maui_25-1627--View-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 View は ここまで書き足したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ボタンは コマンドで書き直す必要があるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/c040e3e89ac58a9f8c17c91ecedafc966497f1280dfd8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c040e3e89ac58a9f8c17c91ecedafc966497f1280dfd8.png?mw=700" alt="202306_maui_25-1646--Command-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ViewModel に コマンドを取り付け。<br /> ビュー・モデルは MVVMアーキテクチャーの中で 雑用とか、アシスタント・ディレクターの役割を担当するんだな」</p> <p><a href="https://crieit.now.sh/upload_images/7d16c5aa2b5b004595041c770c975dee6497f39425a5b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7d16c5aa2b5b004595041c770c975dee6497f39425a5b.png?mw=700" alt="202306_maui_25-1657--View-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 View も更新。<br /> イベントハンドラを消し、コマンドを追加」</p> <h2 id="ユーザー・データをどこに保存するか?"><a href="#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%81%A9%E3%81%93%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%8B%EF%BC%9F">ユーザー・データをどこに保存するか?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 いろいろなフォルダーに ユーザー・データは保存できるが、どこにするんだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://dobon.net/vb/dotnet/file/getfolderpath.html">特殊ディレクトリのパスを取得する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユースケースによる。<br /> 2D RPG を開発するような アクターは、<br /> いつも 同じ部屋で 同じ1台のパソコンを使って 1人で開発している、という状況設定を押し付けることにしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それ以上のものを要求するユーザーは ネギラーメン ではなく<br /> もっと 金出して 高級な開発ツールを使えばいいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そりゃそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ LocalApplicationData だな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ?」</p> <pre><code class="plaintext">  C:   └── 📂 Users     └── 📂 {ユーザー名}       └── 📂 AppData         └── 📂 Local 👉         └── 📂 Muzudho             └── 📂 2D RPG Negiramen </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 他人のローカルPCに わたしの名前のフォルダーが ポコポコできるの 嫌なんだが……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 屋号、 サークル名、 ホームページ名など いろいろあるけど」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 仕事で金取ってないし 屋号もおかしいしな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 サークル名が 一番良いのでは?」</p> <pre><code class="plaintext">  C:   └── 📂 Users     └── 📂 {ユーザー名}       └── 📂 AppData         └── 📂 Local 👉         └── 📂 Doujin Circle Grayscale             └── 📂 2D RPG Negiramen </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Grayscale</code> だけだと 何だか分からないので、<br /> かなり長いけど <code>Doujin Circle Grayscale</code> にしよう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ひねりのない 名前にするからよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 あれっ! MAUI には AppData 下の LocalFolder にアクセスする正式な方法が無い!」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="http://libro.tuyano.com/index3?id=2596003&page=3">設定情報とデータの保存 (3/5)</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 マルチプラットフォームだから Windows のフォルダーにアクセスするのが ナンセンスなんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、そうか~!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI は他の手段を用意しているのかしら? 調べなさい」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 知らんことばっかりなら 調べればいいだけだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/file-system-helpers?tabs=windows">File system helpers</a></p> <pre><code class="cs"> string mainDir = FileSystem.Current.AppDataDirectory; // Example: `C:\Users\むずでょ\AppData\Local\Packages\1802ca7b-559d-489e-8a13-f02ac4d27fcc_9zz4h110yvjzm\LocalState` </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 UUID を含んだ文字の羅列になるらしい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それは ネギラーメンを何回実行しても同じディレクトリー名になるのかだぜ?」</p> <pre><code class="cs">string mainDir = FileSystem.Current.AppDataDirectory; // Example 1回目: `C:\Users\むずでょ\AppData\Local\Packages\1802ca7b-559d-489e-8a13-f02ac4d27fcc_9zz4h110yvjzm\LocalState` // Example 2回目: `C:\Users\むずでょ\AppData\Local\Packages\1802ca7b-559d-489e-8a13-f02ac4d27fcc_9zz4h110yvjzm\LocalState` </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 同じだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 今どき 合理的な解決方法 してんのねー」</p> <p><a href="https://crieit.now.sh/upload_images/aa8ee7b59466c8fda7fe2c9c4a66038364981d31e1a32.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aa8ee7b59466c8fda7fe2c9c4a66038364981d31e1a32.png?mw=700" alt="202306_maui_25-1954--save-config-file.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 設定ファイルの保存の仕方は 覚え直した……。<br /> やり方ぜんぜん変わってた……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 次は そのファイルを読み取る方法を 覚え直せだぜ」</p> <h2 id="TOML形式ファイルを読み取ろうぜ?"><a href="#TOML%E5%BD%A2%E5%BC%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">TOML形式ファイルを読み取ろうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 もう1回 Tomlyn の調べ直し」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/xoofx/Tomlyn/blob/main/doc/readme.md">Tomlyn > Documentation</a></p> <p><a href="https://crieit.now.sh/upload_images/99d20d8910e5832447e4950134c0ade56498242f58f8f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/99d20d8910e5832447e4950134c0ade56498242f58f8f.png?mw=700" alt="202306_maui_25-2024--load-toml.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで Toml も読み込めるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/dc077e79a069faa27b0affd8ffdb6ffe649824a3331f9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dc077e79a069faa27b0affd8ffdb6ffe649824a3331f9.png?mw=700" alt="202306_maui_25-2026--memory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 前に入力した内容も フォームが覚えてくれるようになったから 楽になったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 先送りにしていた 変数x は どうすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 絵を描くツールも Windows Paint と、 GIMP しかないしな……<br /> 少し ネットで調べる」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 特許が取られてるかどうか 分からん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.silversecond.com/WolfRPGEditor/Guide/MAKEMAT_004.html">WOLF Editor 公式 > 【マップチップ素材はどういう風に作ればいいの?】</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ゲームの特許なんか調べてられん。 ページ開いて出てくるの、こんなんだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.j-platpat.inpit.go.jp/c1800/PU/JP-2007-244536/E79286C057363216D5E71D8D82C3A60F5466927DAC084FBE9C97014C8B662FFE/11/ja">特開2007-244536</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 訴えられて死ねだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「<br /> 真理は 避けられず<br /> 真実は 踏み込んだ者にしか見えず<br /> 真相は 勝手なものである」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ゲーム業界に首を突っ込みたかったら 死にましょう。<br /> 生きて帰るな。代わりに 徹底的に世界を破壊しなさい」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 WOLF EDITOR のドキュメントが整理されているので、それ読む」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ピクセル・アートを描くのに 良い無料のツールって どんなのだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 有料のフォトショップしか 選択肢 無いのに……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 こんなサイトがあった。後で調べよう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.pixilart.com/draw">www.pixilart.com</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マップ・タイルは 16 x 16 ピクセル・サイズが単位のようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それを どれぐらいのサイズのキャンバスの中に 敷き詰めんの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 マルチ・プラットフォームなのだから、答えはないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Nintendo Switch は、 1080 x 720 だそうだぜ。<br /> これを 参考に試算しよう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.nintendo.com/switch/tech-specs/">Nintendo > Switch > Technical Specs</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル数で言うと、 67.5 x 45 枚だな。スクリーン上に 3037.5 枚のタイルがあるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 一層で?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 オブジェクト数が 多い気がするけど、 RPG なら大丈夫なのかなあ?」</p> <h2 id="マップ・エディターの画面デザイン"><a href="#%E3%83%9E%E3%83%83%E3%83%97%E3%83%BB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%81%AE%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3">マップ・エディターの画面デザイン</a></h2> <p><a href="https://crieit.now.sh/upload_images/6ef16ba09a3988ffcfb25147f83c16aa6498849bafd25.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6ef16ba09a3988ffcfb25147f83c16aa6498849bafd25.png?mw=700" alt="202306_maui_26-0312--map-editor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マップ・エディターって こんなレイアウトで いいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 違うんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/df66ea09812b6124f653d3e3957dfe2f6498862c4938f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/df66ea09812b6124f653d3e3957dfe2f6498862c4938f.png?mw=700" alt="202306_maui_26-0318--map-editor-2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 描画ツールが いくつかあるんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 描画ツールって どんなけ あるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d927ca1a3044be961f15a20f3e520e60649888762a522.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d927ca1a3044be961f15a20f3e520e60649888762a522.png?mw=700" alt="202306_maui_26-0318--map-editor-3.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 分からん。これぐらいから 始めればどうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 境界線ペンの仕様が はっきり分かんないかしら?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 オート・タイルか。 説明が よく分かんないんだよな」</p> <p><a href="https://crieit.now.sh/upload_images/fcbcef837936039d85a3e984eb1b964664989f5be3297.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fcbcef837936039d85a3e984eb1b964664989f5be3297.png?mw=700" alt="202306_maui_26-0358--auto-tile-4.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 お父んに 分かりやすいように まとめたぜ。<br /> 空間充填問題も セル・オートマトンも 好きだろ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 うわっ 二ム計算みたいなの 出てきた」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 あー、はいはい、分かりました」</p> <p><a href="https://crieit.now.sh/upload_images/5c6991ff6a6d52a54d728c03758279736498a248ee8da.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c6991ff6a6d52a54d728c03758279736498a248ee8da.png?mw=700" alt="202306_maui_26-0504--auto-tile-5.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 こんな役割なのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 接続時だけでなく、切断時の再計算も大変そうだ」</p> <p><a href="https://crieit.now.sh/upload_images/7803ee0cb7cc706250ac3d6d085a45406498a5df76c3a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7803ee0cb7cc706250ac3d6d085a45406498a5df76c3a.png?mw=700" alt="202306_maui_26-0529--auto-tile-7.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 でも オート・タイルの仕様は 理解したな」</p> <h1 id="📅 2023-06-26 素材が何もない"><a href="#%F0%9F%93%85+2023-06-26+%E7%B4%A0%E6%9D%90%E3%81%8C%E4%BD%95%E3%82%82%E3%81%AA%E3%81%84">📅 2023-06-26 素材が何もない</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 pixelart.com の使い方を練習する」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.pixilart.com/draw">www.pixilart.com</a></p> <p><a href="https://crieit.now.sh/upload_images/e4993a4e6ec072db8dcafbe69ba5014f64996b689e42d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e4993a4e6ec072db8dcafbe69ba5014f64996b689e42d.png?mw=700" alt="202306_maui_26-1940--adventure-field.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ? 64 x 64 pixel のつもりで描いたのに でかいな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1216 x 1216 pixel あるわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 使えないなあ」</p> <p><a href="https://crieit.now.sh/upload_images/7a184b3af9015b62e7a795b16599b62364996c40edec0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7a184b3af9015b62e7a795b16599b62364996c40edec0.png?mw=700" alt="202306_maui_26-1944--adventure-field.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Save じゃなく、 Download すればいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ これを最初のマップタイルとして MAUI の画面に表示してみようぜ?」</p> <h2 id="初期設定"><a href="#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A">初期設定</a></h2> <p><a href="https://crieit.now.sh/upload_images/51c863a93677a1d9ba7d018d335ffd0b649979a2b5790.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/51c863a93677a1d9ba7d018d335ffd0b649979a2b5790.png?mw=700" alt="202306_maui_26-2031--startup-config.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 初期設定として これだけ入力してくれないと つらい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ほとんどの人は ディレクトリー・パスも入力できず 投げるんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ファースト・ビューで ユーザーが入力できるのは、<br /> 自分の名前と メール・アドレスぐらいだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ ファースト・ビューのボタンを クリックするところまでは<br /> 設定無しで 行けるようにしよう。<br /> そこで何か ボタンを押したら 初期設定画面へ」</p> <p><a href="https://crieit.now.sh/upload_images/a8edf5a6750f3134f704ddef7aada5266499e35ea38bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a8edf5a6750f3134f704ddef7aada5266499e35ea38bc.png?mw=700" alt="202306_maui_27-0412--startup-configuration-page.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 パンくずリストで どう表現したらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 サイト・マップのツリー構造を崩したくないから、<br /> モーダル・ダイアログ・ボックス的に ページ遷移せず出てくる サブ・ウィンドウみたいにできないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 やり方分からん。調査だな」</p> <h1 id="📅 2023-06-27 モーダル・ダイアログボックスを作れるかだぜ?"><a href="#%F0%9F%93%85+2023-06-27+%E3%83%A2%E3%83%BC%E3%83%80%E3%83%AB%E3%83%BB%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BD%9C%E3%82%8C%E3%82%8B%E3%81%8B%E3%81%A0%E3%81%9C%EF%BC%9F">📅 2023-06-27 モーダル・ダイアログボックスを作れるかだぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 マイクロソフトのドキュメントって、スクリーンショットを使った説明が 圧倒的に足りないよな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/windows">.NET MAUI ウィンドウ</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 じゃあ まず 普通のサブ・ウィンドウを出して、閉じるところまで やってくれだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/70866169/opening-a-new-window-in-maui">Opening a new window in MAUI</a></p> <pre><code class="cs"> /// <summary> /// [ウィンドウ表示テスト]ボタン押下時 /// </summary> /// <param name="sender">このイベントを呼び出したコントロール</param> /// <param name="e">この発生イベントの制御変数</param> private void TestShowWindowButton_Clicked(object sender, EventArgs e) { var secondWindow = new Window { Page = new StartupConfigurationPage { // ... }, Width = 1200, Height = 400, }; Application.Current.OpenWindow(secondWindow); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで ウィンドウは ポップアップされるけど、もっと簡単な書き方無いかなあ?」</p> <pre><code class="cs"> /// <summary> /// [ウィンドウ表示テスト]ボタン押下時 /// </summary> /// <param name="sender">このイベントを呼び出したコントロール</param> /// <param name="e">この発生イベントの制御変数</param> async void TestShowWindowButton_Clicked(object sender, EventArgs e) { await Navigation.PushAsync(new StartupConfigurationPage()); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こう書くと 同じウィンドウで ページだけ スライドする演出付きで 切り替わるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 戻るボタンも 付いてるし、こっちの方が かっこいいわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ウィンドウを閉じるボタンは、どう書くんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 <code>Navigation.PopAsync();</code> じゃないのかだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/kashin777/items/2f1abcba9c8fa02b592c">.NET MAUI (いろんな画面遷移)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ContentPage クラスを継承したコード・ビハインド には Navigation 書けるけど、<br /> ViewModel のプロパティーである Command にはどこから Navigation 持ってくるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 Backwards Navigation があるんじゃないか?<br /> <code>await Shell.Current.GoToAsync("..");</code> を試せだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/shell/navigation#backwards-navigation">Backwards navigation</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 おー、戻れたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 戻ったはいいけど、次の画面に進みたかったんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グローバル変数で 進みたい画面を覚えさせとくかー」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 構成設定の要求を ページ間に挟むのは でけた」</p> <h2 id="タイル・マップを Unity の Assets フォルダー下へコピーしろだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%9E%E3%83%83%E3%83%97%E3%82%92+Unity+%E3%81%AE+Assets+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E4%B8%8B%E3%81%B8%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">タイル・マップを Unity の Assets フォルダー下へコピーしろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/97fa90cb563b7578b614ae1ddfc4cab8649adb0fd5598.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/97fa90cb563b7578b614ae1ddfc4cab8649adb0fd5598.png?mw=700" alt="202306_maui_27-2147--tile-map.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この画像を Unity の Assets フォルダーへコピーしたいけど……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 この画像のファイル・パスって どうやって指すんだぜ?<br /> カレント・ディレクトリー どこよ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 指せるからこその Resources ディレクトリーなんじゃないの?<br /> Special Directory に無いの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/windows/platform-specifics/default-image-directory">Windowsの既定のイメージ ディレクトリ</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Application.ImageDirectory</code> を調べてみるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 XAML の中にしか書けないらしい」</p> <h1 id="📅 2023-06-28 初期素材をどこに置くんだぜ?"><a href="#%F0%9F%93%85+2023-06-28+%E5%88%9D%E6%9C%9F%E7%B4%A0%E6%9D%90%E3%82%92%E3%81%A9%E3%81%93%E3%81%AB%E7%BD%AE%E3%81%8F%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">📅 2023-06-28 初期素材をどこに置くんだぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ワーキング・ディレクトリーの設定方法を調べた方がいいのでは?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74956504/how-to-change-the-current-working-directory-of-maui-blazor-app">How to change the Current Working Directory of Maui Blazor App</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 まず <code>AppDomain.CurrentDomain.BaseDirectory</code> が何を出力するか 調べてみてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c5fcf73a18d6d9e4b8e87c0d1ccb02aa649ae9cbcdb1c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c5fcf73a18d6d9e4b8e87c0d1ccb02aa649ae9cbcdb1c.png?mw=700" alt="202306_maui_27-2252--base-directory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 bin ディレクトリーの方を向いていて、 Resources フォルダーなんか見にこないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ マップ・タイル画像は ネギラーメンの実行ファイルとは別に 配ったらいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Git Hub にでも置いとけば 拾っていくかな?」</p> <p><a href="https://crieit.now.sh/upload_images/3a082e62b1f4933040a203924701f1d6649aecce32a55.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3a082e62b1f4933040a203924701f1d6649aecce32a55.png?mw=700" alt="202306_maui_27-2304--working-directory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず ここに置いておくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0adecef231b607343638cbbe9f9d67dd649b6df52f56e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0adecef231b607343638cbbe9f9d67dd649b6df52f56e.png?mw=700" alt="202306_maui_28-0814--configuration.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さらに調整」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ツクラーは こんな設定 できないから RMUは 全部入りのパッケージで売るのよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <strong>ソフトを自分で選んで インストールして 設定するような</strong><br /> <strong>パソコンの正しい使い方をしたくないのが、 ツクラーだぜ</strong>」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ネギラーメンは ツクラーの思想とは おさらばだぜ。<br /> ネギラーメンは ただの食材を ユニティーにコピーする トッピング・ソフト だぜ」</p> <h2 id="コピーしろだぜ"><a href="#%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">コピーしろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/e9c2b56496ee4d3c28a0d336f258fa15649c0c0ea5594.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e9c2b56496ee4d3c28a0d336f258fa15649c0c0ea5594.png?mw=700" alt="202306_maui_28-1929--Duplicator.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さらに調整。<br /> ハードコーディングしてしまったが、ただの <code>Copy</code> だぜ」</p> <h2 id="タイルを選ばせろだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E9%81%B8%E3%81%B0%E3%81%9B%E3%82%8D%E3%81%A0%E3%81%9C">タイルを選ばせろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイル・パレットを作ってみましょう。<br /> この画像を MAUI に表示して、草原、砂漠、岩、海を クリックできるようにしましょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 このポップアップというやつは 画面上に 画像が浮くやつじゃないか?<br /> 試してみようぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/communitytoolkit/maui/views/popup">マイクロソフト > ポップアップ</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/views/popup">Microsoft > Popup</a></p> <p><a href="https://crieit.now.sh/upload_images/bfdb5a5797404c34ca0560b50d510101649c1fc01ac74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bfdb5a5797404c34ca0560b50d510101649c1fc01ac74.png?mw=700" alt="202306_maui_28-2053--CommunityToolkit-Maui-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんの説明も無いが、このパッケージが要るのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 全然 ビルド通らないなあ。調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/72506202/net-maui-community-toolkit-popup-popuphandler-is-incompatible">.NET MAUI Community Toolkit Popup PopupHandler is incompatible</a></p> <p><a href="https://crieit.now.sh/upload_images/a565cbb5a22a37ec08495ccd100fb3e2649c2311659b9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a565cbb5a22a37ec08495ccd100fb3e2649c2311659b9.png?mw=700" alt="202306_maui_28-2108--MauiProgram-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんなん書く必要があるのかだぜ、分からんって」</p> <p><a href="https://crieit.now.sh/upload_images/b448957cb7ad3de052ba4b462b8d7d62649c24f345a9c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b448957cb7ad3de052ba4b462b8d7d62649c24f345a9c.png?mw=700" alt="202306_maui_28-2117--Popup.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 思ってるのと違って モーダル・ダイアログボックスみたいなのが 出てきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面の真ん中じゃなくて、ボタンをクリックしたマウスの近くに 出せないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 分からん」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ポップアップではなく、サブ・ウィンドウにしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 くそっ」</p> <p><a href="https://crieit.now.sh/upload_images/d88420c35746975b905745a8ee3151b6649c288a0e8de.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d88420c35746975b905745a8ee3151b6649c288a0e8de.png?mw=700" alt="202306_maui_28-2132--SubWindow.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サブ・ウィンドウを出すのは 前にやったんで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 そこに タイルの画像を表示しましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/2dcab1a7afaa1ad2df88be1d5c7f07d8649c2b7dd2087.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2dcab1a7afaa1ad2df88be1d5c7f07d8649c2b7dd2087.png?mw=700" alt="202306_maui_28-2144--Image-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな風に 絶対パス書いたら 画像出てくるかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 さっさと 試せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/087ce5c5b977b0fa465f41a500ca2cf3649c2c1e7fb58.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/087ce5c5b977b0fa465f41a500ca2cf3649c2c1e7fb58.png?mw=700" alt="202306_maui_28-2147--Image.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 出たけど 画像サイズが さっぱり……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そのサイズを ぴったり 合わせてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1e57f6f3832d16d9f84df18443692626649c3651e1d3b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1e57f6f3832d16d9f84df18443692626649c3651e1d3b.png?mw=700" alt="202306_maui_28-2230--WidthHeight-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ウィトス(WIdth;横幅)と ハイト(Height;縦幅)を 指定すればいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 なんか変なデバッグ用のツールバーと被ってるから 真ん中らへんに表示しましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/e8c5fc8dfeee179c7a92b9a8c050ebe6649c377ea3f82.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e8c5fc8dfeee179c7a92b9a8c050ebe6649c377ea3f82.png?mw=700" alt="202306_maui_28-2236--Grid.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドを使って真ん中へ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 画像にマウスカーソルを合わせたら、枠が出るようにしてみてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 オン・マウス・オーバー みたいなイベントハンドラが無いか 探してみるかだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73088203/mouse-hover-detection-in-net-maui">Mouse hover detection in .NET MAUI</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI は、スマホのようなタッチ・デバイスで使われることを想定していて、<br /> デスクトップのようなマウス操作は 想定していないそうよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 クソじゃないか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 マウス・カーソルの位置を取得できないか、調べてみてくれだぜ」</p> <h1 id="📅 2023-06-29 マウス・キャプチャーしてくれだぜ"><a href="#%F0%9F%93%85+2023-06-29+%E3%83%9E%E3%82%A6%E3%82%B9%E3%83%BB%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%83%BC%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 2023-06-29 マウス・キャプチャーしてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 マウス・キャプチャー自体 どうやるんだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/71911160/how-to-capture-global-touch-events-in-maui-app">How to capture global touch events in MAUI app</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI には マウス・キャプチャーは無いのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ Windows プログラミングかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 その前に ジェスチャーを調べてくれだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/gestures/tap">Recognize a tap gesture</a></p> <p><a href="https://crieit.now.sh/upload_images/dd634f13650e0594fb465b39776d1273649ca9555c19f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dd634f13650e0594fb465b39776d1273649ca9555c19f.png?mw=700" alt="202306_maui_29-0642--Gesture.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか いっぱいある。<br /> この <code>PointerGestureRecognizer</code> とか それっぽくないかだぜ?<br /> 👇 調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/gestures/pointer">Recognize a pointer gesture</a></p> <h2 id="コマンドに引数をよこせだぜ"><a href="#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AB%E5%BC%95%E6%95%B0%E3%82%92%E3%82%88%E3%81%93%E3%81%9B%E3%81%A0%E3%81%9C">コマンドに引数をよこせだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? どうやって コマンドに引数を渡すんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/commanding">Microsoft > Commanding</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 WPF みたいなものんか?」</p> <p><a href="https://crieit.now.sh/upload_images/68fb9a38b95e11395dc593993293c042649cafb6ce729.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/68fb9a38b95e11395dc593993293c042649cafb6ce729.png?mw=700" alt="202306_maui_29-0709--MouseCapture-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 反応はしてるから、後は 引数を取りたいぜ。<br /> もう少し調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.controls.pointergesturerecognizer.pointermovedcommandparameter?view=net-maui-7.0">Microsoft > PointerGestureRecognizer.PointerMovedCommandParameter Property</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 パラメーターも コマンドなんだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いや、取れない」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 何か無いか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74889265/net-maui-custom-control-with-command-and-parameters">.NET MAUI Custom control with command and parameters</a></p> <p><a href="https://crieit.now.sh/upload_images/f8dafd13b5f2867db83d002a1436ee01649cb6ae2f33c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f8dafd13b5f2867db83d002a1436ee01649cb6ae2f33c.png?mw=700" alt="202306_maui_29-0738--Command-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このコマンドから、何か引数にアクセスできないか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 コマンドは 実行することしか できないわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ コマンドを使っちゃいけないんだ」</p> <p><a href="https://crieit.now.sh/upload_images/1bb040e82be83c0fb097c83ad18c5097649cbb8d9a4f8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1bb040e82be83c0fb097c83ad18c5097649cbb8d9a4f8.png?mw=700" alt="202306_maui_29-0759--Code-Behind-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コード・ビハインド を使うと 画像上の座標を取ることはできるが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 コード・ビハインドと ビュー・モデルと 何の関係があるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 WPFの依存関係プロパティみたいなものがないか 調べてみるぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73384133/how-to-use-dependencyproperty-in-maui">How to use DependencyProperty in Maui?</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/bindable-properties">Microsoft > Bindable properties</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/70347196/how-can-i-bind-a-property-to-a-view-model-in-maui">How can I bind a property to a view model in MAUI?</a></p> <p><a href="https://crieit.now.sh/upload_images/87d459ce067ff5dbea0cb45b7cd2796a649cc0bc4a4e6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/87d459ce067ff5dbea0cb45b7cd2796a649cc0bc4a4e6.png?mw=700" alt="202306_maui_29-0821--BindContext-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コード・ビハインドから、ビューにバインドされてる ビュー・モデル 取れた……。<br /> WPF の DataContext と同じ考えだ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 簡単ねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d39615ad5ffa875a7ed25468bee5da88649cc32390fd0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d39615ad5ffa875a7ed25468bee5da88649cc32390fd0.png?mw=700" alt="202306_maui_29-0831--Method-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/91834b5c3894a174c69bd61ebabb549d649cc2666d183.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/91834b5c3894a174c69bd61ebabb549d649cc2666d183.png?mw=700" alt="202306_maui_29-0826--CoordinateOnTheImage-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画像上の座標 取れた……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それを いったん ウィンドウ上の座標に変換して、<br /> 32 x 32 pixels サイズのタイルを囲む枠を 置いてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 調べるか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75587601/how-to-get-maui-ui-element-absolute-coordinates">How to get MAUI UI element absolute coordinates</a></p> <p><a href="https://crieit.now.sh/upload_images/a06de2f8a40e09a7393bde4f01d97f96649d5f4866ecf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a06de2f8a40e09a7393bde4f01d97f96649d5f4866ecf.png?mw=700" alt="202306_maui_29-1936--CoordinateOnTheWindow-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画像の座標は取れるのか。だったら それ使えばいいんじゃ……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 次は 枠を描こうぜ。<br /> MAUI の画面上に 矩形を描く命令 あるかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/graphics/draw#draw-a-rectangle">Draw a rectangle</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>canvas</code> って どっから出てきたんだぜ?<br /> 👇 調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/71001039/net-maui-how-to-draw-on-canvas">.net MAUI: how to draw on canvas</a></p> <p><a href="https://crieit.now.sh/upload_images/6a8adf578fa1e9d55eb361231d9a01f1649d7ab3a20cd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a8adf578fa1e9d55eb361231d9a01f1649d7ab3a20cd.png?mw=700" alt="202306_maui_29-2135--CursorOnTile.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 赤い枠は出せたけど、位置調整が大変だ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マウスカーソルは 1ピクセルずつ動いて欲しいけど、<br /> 赤い枠は 32ピクセルずつ 動いて欲しい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ グリッド が要るんだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 センタリングされていて、座標計算が めんどくさい」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 左上が基準で いいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 なんで <code>Alignment</code> じゃなくて <code>Options</code> って名前なんだ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/align-position">.NET MAUI コントロールの配置と配置</a></p> <p><a href="https://crieit.now.sh/upload_images/9c47d184c1f7b884ff1d0d9aeb6053c4649d7f5676550.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9c47d184c1f7b884ff1d0d9aeb6053c4649d7f5676550.png?mw=700" alt="202306_maui_29-2155--Cursor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 例えば こんな感じ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それっぽく なったわねえ」</p> <h2 id="入力透過"><a href="#%E5%85%A5%E5%8A%9B%E9%80%8F%E9%81%8E">入力透過</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイル・マップを クリックしたいのに、<br /> その上のカーソルが 邪魔なんだが」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 入力透過を使えだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.maui.controls.visualelement.inputtransparent?view=net-maui-7.0">VisualElement.InputTransparent プロパティ</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 よし、それでイケてるぜ」</p> <h2 id="マウス・クリックした座標から、カーソルの位置を算出しろだぜ"><a href="#%E3%83%9E%E3%82%A6%E3%82%B9%E3%83%BB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%97%E3%81%9F%E5%BA%A7%E6%A8%99%E3%81%8B%E3%82%89%E3%80%81%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%81%AE%E4%BD%8D%E7%BD%AE%E3%82%92%E7%AE%97%E5%87%BA%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">マウス・クリックした座標から、カーソルの位置を算出しろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 隣の砂漠をクリックしたら、タイル・カーソルがそこを指すようにしなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/41235ad7870711f5a831f4ad2af665ee649d9658dae58.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/41235ad7870711f5a831f4ad2af665ee649d9658dae58.png?mw=700" alt="202306_maui_29-2332--CursorCoord.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドが 32ピクセル固定で ハードコーディングして いけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ そのタイルを マップ・エディター で使いたいけど、<br /> マップ・エディターが まだ無いのよねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 明日から マップ・エディター だな」</p> <h1 id="📅 2023-06-30 ツール・アイコンが欲しいぜ"><a href="#%F0%9F%93%85+2023-06-30+%E3%83%84%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%8C%E6%AC%B2%E3%81%97%E3%81%84%E3%81%9C">📅 2023-06-30 ツール・アイコンが欲しいぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ペンのアイコンの絵を描くぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.pixilart.com/draw">www.pixilart.com</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 無くていいのに……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 気分が出る!」</p> <p><a href="https://crieit.now.sh/upload_images/5005075469e18b3f7c4634029811b48f649ea907e9fef.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5005075469e18b3f7c4634029811b48f649ea907e9fef.png?mw=700" alt="202306_maui_30-1905--tool-box.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 pixilart.com のツールに グリッドのサイズ指定が無いから 枠線 引いてしまう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 どの画像の 何個目のタイルを表示するのか 名前で指定できるようにしたくない?」</p> <pre><code class="plaintext">tool_box.pen </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 カテゴリー名と、そのメンバーを ドット・シンタックスで指定して」</p> <pre><code class="plaintext">crop_image("tool_box.png", 0, 0, 32, 32) </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 画像のロードまで やってくれるような」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ CSV形式で記録したらどうだぜ?」</p> <pre><code class="csv">code , file , x, y, width, height, comment tool_box.pen , tool_box.png, 0, 0, 32, 32, ペン tool_box.eraser, tool_box.png, 32, 0, 32, 32, 消しゴム tool_box.bucket, tool_box.png, 0, 32, 32, 32, 塗りつぶし </code></pre> <pre><code class="csv">code , file , x, y, width, height, comment adventure_field.grass , adventure_field.png, 0, 0, 32, 32, 草原 adventure_field.desert, adventure_field.png, 32, 0, 32, 32, 砂漠 adventure_field.rock , adventure_field.png, 0, 32, 32, 32, 岩 adventure_field.sea , adventure_field.png, 32, 32, 32, 32, 海 </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 例は こうだぜ」</p> <pre><code class="plaintext">  例: C:\Users\むずでょ\Documents\GitHub\2D-RPG-Negiramen   └── 📂 Workspace     ├── 📂 Assets     │  ├── 📂 CSV 👉   │  │  └── 📄 tiles.csv     │  └── 📂 Image     │    └── 📄 tool_box.png     └── 📂 For Unity Assets       ├── 📂 CSV 👉     │  └── 📄 tiles.csv       └── 📂 Images         └── 📂 Tile Set           └── 📄 adventure_field.png </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ツール・ボックスのアイコン・ファイルの置き場所は<br /> ネギラーメンの 📄 <code>Workspace/Assets/CSV/tiles.csv</code> でいいかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 他のフォルダーも けっこう いじるんだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その <code>tiles.csv</code> を作るエディターが欲しいわよね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイル・パレット編集画面、みたいなやつかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 どんな画面レイアウトだぜ?」</p> <h2 id="タイル・パレット編集画面を作ろうぜ?"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8%E9%9B%86%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%9C%EF%BC%9F">タイル・パレット編集画面を作ろうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/08ddfc30327f22a09527a986c28a0ab0649ec22d550ab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/08ddfc30327f22a09527a986c28a0ab0649ec22d550ab.png?mw=700" alt="202306_maui_30-2021--tile-palette-editor-2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コメントを入力することを考えると、横に広く使いたいしな」</p> <p><a href="https://crieit.now.sh/upload_images/2c734aa1bcde4ca654ceecc2556ff644649ed22592445.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2c734aa1bcde4ca654ceecc2556ff644649ed22592445.png?mw=700" alt="202306_maui_30-2200--tile-palette-editor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな雰囲気で どうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 配色が ROCKMAN だな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドを引きなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッド引くなら ループ文を使うのが鉄板だと思うが<br /> MAUIで ループ文があるのか 分からん……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75267102/maui-equivalent-to-css-background-repeat-repeat">MAUI equivalent to CSS background-repeat: repeat;</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Webみたいに 背景画像をタイルにしてリピートできるなら グリッドが作れるかと思ったが<br /> それも無いみたいだし」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 動的に XAML の要素を追加・削除する方法も分からん」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 透明なキャンバスに 罫線引いて タイル・マップの上に 覆い被せりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それで行くか」</p> <h2 id="パンくずリストと、タイトル"><a href="#%E3%83%91%E3%83%B3%E3%81%8F%E3%81%9A%E3%83%AA%E3%82%B9%E3%83%88%E3%81%A8%E3%80%81%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB">パンくずリストと、タイトル</a></h2> <p><a href="https://crieit.now.sh/upload_images/230c62e9f9a6e6602a61c238320796d2649ee174d7fca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/230c62e9f9a6e6602a61c238320796d2649ee174d7fca.png?mw=700" alt="202306_maui_30-2305--tile-palette-editor-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 パンくずリスト付けたら もっさり したんだが、<br /> ヘッダーと パンくずリスト を1つに まとめる方法 無い?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイトルバーに見えるところ、自動で付くのよねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 ナビゲーションじゃないか? 調べてみろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/pages/navigationpage">Microsoft > NavigationPage</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ソースの中には いじれそうなものは無かった。もっと探そう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74350962/how-to-customize-the-navigation-title-view-of-maui-contentpage">How to customize the navigation title view of MAUI ContentPage</a></p> <p><a href="https://crieit.now.sh/upload_images/dff54a3f11546e61beec3c71c17a9f1d649ee5872cd3d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dff54a3f11546e61beec3c71c17a9f1d649ee5872cd3d.png?mw=700" alt="202306_maui_30-2323--title-view-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 初期状態は こう書いてるのと 多分 おんなじらしい。<br /> これをベースに改造してみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/86737243d2445653e27728f658a47ef5649ee79f04b98.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/86737243d2445653e27728f658a47ef5649ee79f04b98.png?mw=700" alt="202306_maui_30-2331--title-view-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 パンくずリストと ページ・タイトルを 同じ行に まとめたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 スマホの画面には タイトル・バーが無いから、ページの中に作るのね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 PCは クローム(※)が付くんだな」</p> <p>※クローム … ウィンドウの枠。タイトルバーなどを含む</p> <h2 id="グリッドの線、引こうぜ?"><a href="#%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E7%B7%9A%E3%80%81%E5%BC%95%E3%81%93%E3%81%86%E3%81%9C%EF%BC%9F">グリッドの線、引こうぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/1bb0f0eefa123ef87e72b6fa35da0321649eeffc6311c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1bb0f0eefa123ef87e72b6fa35da0321649eeffc6311c.png?mw=700" alt="202307_maui_01-0007--grid.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ひとまず ハードコーディングで 半透明の赤い色で グリッドを置いてみたが どうだろうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 まずは いいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 元画像の 横幅、縦幅も 表示してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ad27942d9459a1d36bccbad4ecd78074649ef68d428a0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad27942d9459a1d36bccbad4ecd78074649ef68d428a0.png?mw=700" alt="202307_maui_01-0035--tile-palette-editor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さらに細かく調整」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイル画像が大きかったとき、スクロールできんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 この画面は ハリボテ なんで……。<br /> 動きを付ける段階になったら 調べるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイルIdを表示してくれだぜ」</p> <h2 id="画像サイズを調べようぜ?"><a href="#%E7%94%BB%E5%83%8F%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">画像サイズを調べようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 その前に 1枚の画像にタイルが 100枚ぐらいなのか、 1000枚ぐらいなのか、 10000枚ぐらいなのか、<br /> 規模を知りたいぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://nihamasoblog.com/wolf-editor-beginner3/">WOLF RPG エディター(ウディタ)でゲームを作る3 ~マップチップとオートタイルを増やす~</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 素材集の中を覗いてみないと 分からんな……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://silsec.sakura.ne.jp/WolfRPGEditor/MaterialList/html/">画像・音声素材データ集</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ、思ってたより小さい……<br /> 横 332 × 縦 772 かだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんだ その 中途半端な数は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? 枠が付いてある…… これは使用例のスクリーンショットか。<br /> 横 256 x 縦 608 のものもあるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんだ その 中途半端な数は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 横 256 x 縦 544 のものもあるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 決まってないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 横はニゴロ(256)のようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ 縦長 になるんだ。ポートレートだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 1つのタイル・サイズは 32x32 を最小として、<br /> 64x64 とか 96x64 とか 自由気ままに配置されているぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 608 は 32 で割り切れるわねえ。19よ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 素数だ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どういうシステムなんだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ分かった、 256 × 608 を画面に表示してみようぜ?<br /> 👇 画像を作るぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.pixilart.com/draw">www.pixilart.com</a></p> <p><a href="https://crieit.now.sh/upload_images/a2b9378330e366e963608623f2531aba649efd9bb11f7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a2b9378330e366e963608623f2531aba649efd9bb11f7.png?mw=700" alt="map-tile-format-8x19.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3487861757d85388d7bccffada24dd42649f00713e84b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3487861757d85388d7bccffada24dd42649f00713e84b.png?mw=700" alt="202307_maui_01-0118--scroll-view.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ハリボテだが スクロールバーは 付けれるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んの思想と ウルフエディターの素材作成勢とで 相性が悪いの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 意匠は 相容れない方が 著作権を差別化できて有利なのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 明日は このハリボテに 動きを付けていこうぜ?」</p> <h1 id="📅 2023-07-01 ページに引数を渡すにはどうやるんだぜ?"><a href="#%F0%9F%93%85+2023-07-01+%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E5%BC%95%E6%95%B0%E3%82%92%E6%B8%A1%E3%81%99%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%82%84%E3%82%8B%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">📅 2023-07-01 ページに引数を渡すにはどうやるんだぜ?</a></h1> <pre><code class="plaintext">[http://www.example.com/index.html?name=banana](http://www.example.com/index.html?name=banana) ^^^^^^^^^^^^ </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Web系なら URLの後ろに クエリー文字列を付けることができるが、<br /> MAUI で画面遷移時に何かデータを渡すには どうやるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://shuhelohelo.hatenablog.com/entry/2022/08/12/234214">MAUI:画面遷移時のデータの受け渡し</a></p> <p><a href="https://crieit.now.sh/upload_images/ad3fa1c294a5bbf99de87c28431d07c564a0020162999.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad3fa1c294a5bbf99de87c28431d07c564a0020162999.png?mw=700" alt="202307_maui_01-1936--parameters-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>parameters</code> で オブジェクトを渡せそうだな。<br /> 渡した先での 受け取り方も 調べるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/76d3e3528b9fb1b4b470c17fc8d1a26564a00ba72a357.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/76d3e3528b9fb1b4b470c17fc8d1a26564a00ba72a357.png?mw=700" alt="202307_maui_01-2017--property-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューモデルに フィールドがあるとして……」</p> <p><a href="https://crieit.now.sh/upload_images/e4fcb6088c13e5c71a1a6d4fe2da8cd964a00c5bdd42a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e4fcb6088c13e5c71a1a6d4fe2da8cd964a00c5bdd42a.png?mw=700" alt="202307_maui_01-2020--parameters-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 フィールド名を使って、オブジェクトを渡せるみたいだな」</p> <h2 id="PNG 形式画像ファイルのサイズを取得してくれだぜ"><a href="#PNG+%E5%BD%A2%E5%BC%8F%E7%94%BB%E5%83%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">PNG 形式画像ファイルのサイズを取得してくれだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 PNG 形式画像ファイルのサイズを取得してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? やり方が分からん……<br /> 👇 調べるか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://dixq.net/forum/viewtopic.php?t=17600">[C#]PNGの幅,高さのみをファイルから高速に取得する方法について</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://zenn.dev/alfina2538/articles/998e406272f0fd">【C#】PNG画像サイズの取得方法</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 渡せるものと、渡せないものとがある。<br /> 調べるか……」</p> <p><a href="https://crieit.now.sh/upload_images/a867f2fa49b7c2dfbf3aae83afe15f1c64a022d8e1891.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a867f2fa49b7c2dfbf3aae83afe15f1c64a022d8e1891.png?mw=700" alt="202307_maui_02-2156--query-parameter-on-class-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>QueryParameter</code> アトリビュート(属性)をクラスに1個1個すべて書くのが確実らしい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 MVVM 実装してるだけで 1日 終わりそうだ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面は 手戻り無しで 1発で作らないと 時間が 厳しそうねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 要らん画面 作ったら 1日は無駄になるな」</p> <p><a href="https://crieit.now.sh/upload_images/6cac9c0c25043305e80a34e944d74d7b64a027488b915.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6cac9c0c25043305e80a34e944d74d7b64a027488b915.png?mw=700" alt="202307_maui_02-2215--on-property-changed-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 変更通知プロパティの手順の順序を 間違えると 画面に出てこないから 正確にやるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/40127b25dc104c22fe17b261fe47f59264a027778bc0a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40127b25dc104c22fe17b261fe47f59264a027778bc0a.png?mw=700" alt="202307_maui_02-2155--query-parameter-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画像サイズに 動きを付けたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 全部に動きを付けてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 つら」</p> <h2 id="GraphicsView はどうやってリフレッシュするんだぜ?"><a href="#GraphicsView+%E3%81%AF%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E3%83%AA%E3%83%95%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%81%99%E3%82%8B%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">GraphicsView はどうやってリフレッシュするんだぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/ff0567a511f881be175dcc342d5d604664a02c3754d3f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff0567a511f881be175dcc342d5d604664a02c3754d3f.png?mw=700" alt="202307_maui_02-2236--graphics-view.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドは <code>GraphicsView</code> を使ってプログラム的に描画しているが、<br /> これは どうやって再描画するんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/graphicsview">Microsoft > GraphicsView</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>graphicsView.Invalidate();</code> を呼び出せばいいのか。やってみるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ビューモデルから どうやって <code>graphicsView</code> にアクセスするんだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74144361/binding-from-view-to-graphicsview-property-in-net-maui">Binding from view to GraphicsView property in .NET MAUI</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/57243160/how-to-databind-imageview-with-drawable-in-viewmodel">How to databind imageview with drawable in viewmodel?</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74901102/net-maui-dynamic-behaviour-of-graphic-elements-when-using-mvvm">.NET MAUI: Dynamic behaviour of graphic elements when using MVVM</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 同じ悩みを持ってるやつらが 見つからんなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>Drawable</code> に変更通知プロパティを 仕掛けられないの?」</p> <p><a href="https://crieit.now.sh/upload_images/1a5a552a1d076a74d993e9d1a395fcad64a03175a0cdd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1a5a552a1d076a74d993e9d1a395fcad64a03175a0cdd.png?mw=700" alt="202307_maui_01-2259--tile-set-grid.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビュー・モデルから IDrawable 実装インスタンスの Draw をコールする方法も分からん」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ビュー・モデルから ビューに アクセスできないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 調べてみるか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ビュー・モデルは 変更通知プロパティ をビューに仕込んで連携できるだけだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ビュー・モデルの方から ビューのキャンバスを変更できないと グリッド・サイズを更新できなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/de98d77bf4fdbe8a84ec75d36ec8bead64a03427a3e78.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/de98d77bf4fdbe8a84ec75d36ec8bead64a03427a3e78.png?mw=700" alt="202307_maui_01-2311--contentPage-resource-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リソースに 引数を渡す方法って ある?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/resource-dictionaries">Resource dictionaries</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 リソースは スタティックなんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ <code>GraphicsView</code> を使って グリッドを描画するのが そもそも間違ってる?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そうなのでは」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 伸縮自在なラインを 固定長で1000本ぐらい 画面に持たせた方がいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/a277514de963191868e489239c9deed164a0374fdd40e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a277514de963191868e489239c9deed164a0374fdd40e.png?mw=700" alt="202307_maui_01-2324--graphics-view-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>GraphicsView</code> の横幅、縦幅は バインディングできるから、<br /> ビューモデルから 縦幅、横幅の変更通知を送ったら <code>IDrawing</code> 実装インスタンスの <code>Draw</code> メソッドを呼び出してくれないかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 試せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4897274cc16bc53bee7e43a2ce3f52f264a03cb0094b1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4897274cc16bc53bee7e43a2ce3f52f264a03cb0094b1.png?mw=700" alt="202307_maui_01-2347--dirtyRect-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんらかのタイミングで <code>Draw</code> メソッドの <code>dirtyRect</code> 引数に矩形が入っているから、<br /> あとは ビュー・モデルから 任意のタイミングで <code>Draw</code> をコールできれば うまくいきそうだが」</p> <p><a href="https://crieit.now.sh/upload_images/1e08f5771ddacd6582669038b7c5d50d64a03eaceb4c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1e08f5771ddacd6582669038b7c5d50d64a03eaceb4c3.png?mw=700" alt="202307_maui_01-2356--onPageOpen.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画面を出した初回は 画像サイズが分かってるんで グリッドも合わせられるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッド・サイズは途中からも 変えたいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/4bcd9fbc41ccf91aa430da0d1bac9d0f64a049fee8594.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4bcd9fbc41ccf91aa430da0d1bac9d0f64a049fee8594.png?mw=700" alt="202307_maui_02-0042--hack-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドの横幅が変更されたタイミングで<br /> グリッドの画像サイズの横幅を 1px 伸ばしたったら、再描画が呼び出されるけど」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 イケてないわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 再描画が呼び出されるトリガーのうち、もっとも無難なものって何だぜ? タグの変更トリガーとか無いのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タグだって 変えられたくないわよ」</p> <h3 id="トリック・コード"><a href="#%E3%83%88%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%B3%E3%83%BC%E3%83%89">トリック・コード</a></h3> <p><a href="https://crieit.now.sh/upload_images/09a9ac151ad8ea8652426725ba7751e564a05319abfc5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/09a9ac151ad8ea8652426725ba7751e564a05319abfc5.png?mw=700" alt="202307_maui_02-0122--trick-code.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 今回のプログラミングで最初のトリック・コードだぜ。<br /> 画像の横幅が偶数のときは 横幅を1伸ばし、<br /> 画像の横幅が奇数のときは 横幅を1縮めて 無限に振動させるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドのサイズを変えるたびに<br /> グリッドの右端が 1px飛び出たり 元に戻ったりするんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 トリックがバレないように修正する」</p> <p><a href="https://crieit.now.sh/upload_images/3b15e21819f7be994b31f6094fab8cbc64a058dca8572.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3b15e21819f7be994b31f6094fab8cbc64a058dca8572.png?mw=700" alt="202307_maui_02-0147--cancel-code-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 トリック・コードのせいで 割り食って おかしくなっている箇所は<br /> キャンセル・コードを書いて おかしなものを 隠すぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 不毛な戦い わらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 トリック・コードなんか書くからよ」</p> <p><a href="https://crieit.now.sh/upload_images/9555293afe0eaadb60fb84523555968064a05986a02d7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9555293afe0eaadb60fb84523555968064a05986a02d7.png?mw=700" alt="202307_maui_02-0150--grid-size.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッド・サイズを変えれるようになった。今日はここまでだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 MVVMの実装 時間かかるんだな、作る画面は 最低限の数で済むように 全体を考えないとな」</p> <h1 id="📅 2023-07-02 タイル・パレット編集ページを作っていこうぜ?"><a href="#%F0%9F%93%85+2023-07-02+%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8%E9%9B%86%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%84%E3%81%93%E3%81%86%E3%81%9C%EF%BC%9F">📅 2023-07-02 タイル・パレット編集ページを作っていこうぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/a65ae8d6cdf1e7b37cc75def6121e38664a10c55609ab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a65ae8d6cdf1e7b37cc75def6121e38664a10c55609ab.png?mw=700" alt="202307_maui_02-1431--grid-point-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グリッドの全体も ずらせるようにしたので、 <strong>位相</strong> にも対応だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 スクロールとかねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 線形代数の変換の王様、アフィン変換にも対応しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 開発時間足りない。次へ」</p> <p><a href="https://crieit.now.sh/upload_images/cb165a2a837fc638a8fc6c041429b88364a1744d5f299.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cb165a2a837fc638a8fc6c041429b88364a1744d5f299.png?mw=700" alt="202307_maui_02-2156--grid.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カーソルが グリッドに 吸着するようになったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 これだけで 日曜日が終わろうとしている。時間がかかるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 下側の タイル 0 0 0 0 のとこに カーソルの位置を表示しなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/009adbe69fa4c11c265cdac4caf2da2d64a17b31be7b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/009adbe69fa4c11c265cdac4caf2da2d64a17b31be7b8.png?mw=700" alt="202307_maui_02-2225--cursor-position-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 はい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん。グリッド1ます の たて に 50000 と入れたら強制終了したぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/31a586467e701018f84813e7c4ca6d4f64a17bf404caa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31a586467e701018f84813e7c4ca6d4f64a17bf404caa.png?mw=700" alt="202307_maui_02-2229--size-over-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 確かに。あのグリッド、ただの縦線じゃなくて 画像だからな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 テキスト・ボックスに バリデーション(妥当性検証)を入れなさいよ」</p> <h2 id="バリデーションを入れようぜ?"><a href="#%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%85%A5%E3%82%8C%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">バリデーションを入れようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 何もかも やり方が分からん。覚え直しだ。 調べるか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/architecture/maui/validation">Microsoft > Validation</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 説明の通りコードを書いても <code>IValidity</code> のところで コンパイル・エラーになるの 分けわからんな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 この記事が クソ だということを伝えるボタンが無いぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 文字数のチェックはできるみたいよ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/behaviors/text-validation-behavior">TextValidationBehavior</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 もっと まともな方法を調べるぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/communitytoolkit/maui/behaviors/required-string-validation-behavior">RequiredStringValidationBehavior</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/communitytoolkit/maui/behaviors/numeric-validation-behavior">NumericValidationBehavior</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>NumericValidationBehavior</code> を調べてみるか」</p> <p><a href="https://crieit.now.sh/upload_images/2a89a597755074ca97fd1a8a3b904c1064a18ba60f168.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2a89a597755074ca97fd1a8a3b904c1064a18ba60f168.png?mw=700" alt="202307_maui_02-2335--validation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 下ごしらえは XAML だけで終わるの 簡単だな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 1辺の上限が 16384 じゃなくて、<br /> 面積の上限が 16384 か?<br /> ルート2 したら 128 で小さすぎないか?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>10000</code> x <code>10000</code> にしても動いているぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんか限界 攻めたくないな。<br /> グラフィック・カードの性能に依存するのかも知らん。<br /> とりあえず 上限は 8192 にしよう!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 2 の 13乗に 意義を感じないわね」</p> <p><a href="https://crieit.now.sh/upload_images/00c8fe1b889a24b1248df026ac7bf56764a18c26e2e0b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/00c8fe1b889a24b1248df026ac7bf56764a18c26e2e0b.png?mw=700" alt="202307_maui_02-2338--validation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ 無難な 上限 2048 にして、<br /> 文句があるやつがでてきたときに 拡張用の設定ファイルを用意しようぜ?」 </p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 設定できるんなら それでいいよな」</p> <p><a href="https://crieit.now.sh/upload_images/01caafe26b01dcebb561b62d129a4b3864a189cb9963c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01caafe26b01dcebb561b62d129a4b3864a189cb9963c.png?mw=700" alt="202307_maui_02-2328--validation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ? 色が変わるだけで 入力できてしまう?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 入力を拒絶しなきゃ、意味なくない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ビュー・モデルの方で 2048 以上を入力したら 2048 として扱うような処理がいるかもしれないな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 あっ、 0 を入れても フリーズしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 明日は バリデーション を みっちり やるぜ」</p> <h1 id="📅 2023-07-03 バリデーションを入れようぜ?"><a href="#%F0%9F%93%85+2023-07-03+%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%85%A5%E3%82%8C%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">📅 2023-07-03 バリデーションを入れようぜ?</a></h1> <pre><code class="plaintext">  C:   └── 📂 Users     └── 📂 むずでょ       └── 📂 AppData         └── 📂 Local           └── 📂 Packages             └── 📂 1802ca7b-559d-489e-8a13-f02ac4d27fcc_9zz4h110yvjzm               └── 📂 LocalState                 ├── 📄 configuration.toml 👉               └── 📄 settings.toml </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>settings.toml</code> ファイルを作って、そこに グリッドのタイル・サイズの一辺の上限は 2048 だという設定を<br /> 書いておこうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 両端に太さが 2px のグリッドの線があるから、1px ずつ食み出るとして 2048 から 2px 引いて 2046 にすべきだと思うが」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 上限値の理由に 意義がないのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 2046 !」</p> <pre><code class="toml">[tile] # 一辺が 2048 ピクセルのキャンバスを想定し、両端に太さが 2px のグリッドの線があって 1px ずつ食み出るから 2px 引いて 2046 max_width = 2_046 max_height = 2_046 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 1辺が 2048 ピクセルのタイルを作りたいやつは 設定を変えろ」</p> <p><a href="https://crieit.now.sh/upload_images/563144e6bb6ba23d5fa984f33d10daca64a2bb5ba858a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/563144e6bb6ba23d5fa984f33d10daca64a2bb5ba858a.png?mw=700" alt="202307_maui_03-2111--validation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 バリデーションというのは ビューの色を変えるぐらいしか機能がないので、<br /> ビューモデルでは 単に リミット・チェックを入れた」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 入力された値は(弾かず)とりあえず受け取る、という思想なのね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 入力を受け取らないフラグ 無いのかなあ? もっと探してみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 疲れたんで とりあえず 次へ」</p> <h2 id="マウス・ドラッグに対応しろだぜ"><a href="#%E3%83%9E%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%89%E3%83%A9%E3%83%83%E3%82%B0%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">マウス・ドラッグに対応しろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん。マウス・ドラッグして タイルを連続選択できないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 作ってない機能は 存在しないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 作れ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ドラッグ アンド ドロップなのかな?<br /> プレス アンド リリースじゃないかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ドラッグ アンド ドロップって、<br /> ファイルをつかんで アプリケーションの領域に落とすやつを言うのよ。<br /> タイルの連続選択は プレス・アンド・リリース じゃないかなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 今は タップした時点で カーソルの位置が決まっているが、<br /> リリースした時点で カーソルの位置を決めた方がいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 もっさりしない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 操作感は 統一的になると思うが」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タップしたジェスチャーは 捕捉できるが、<br /> リリースしたというジェスチャーは どうやって捕捉するのかな?<br /> 調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/gestures/swipe">スワイプ ジェスチャを認識する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 スワイプは 向きだけかあ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/gestures/drag-and-drop">ドラッグ アンド ドロップ ジェスチャを認識する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ドラッグ アンド ドロップは ファイルを落とすやつだしな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/gestures/pointer">ポインター ジェスチャを認識する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ポインター・ジェスチャーには 入りと 出があるのか。これを調べてみるか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エンターは 画像と重なったところで、<br /> エグジットは 画像の外と重なったところか。<br /> マウス・ボタン押下とか、マウス・ボタン・リリースではないんだ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タップは マウス・ボタン押下と マウス・ボタン・リリースのペアか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうだぜ。<br /> それも マウスを移動させずに マウス・ボタン押下と マウス・ボタン・リリースを<br /> 行わなければいけないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ タップは 従来の クリック に対応してるんだ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 マウス・ボタン押下と、 マウス・ボタン・リリースを 別々に捕捉する方法を探せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI には無いようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マウス・ダウンと マウス・アップを検知する 何らかの方法はあるのかしら?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タップで始まり、タップで終わるのでいいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ペン・タブレットで 必要になりそうな機能が MAUI に無いなんて<br /> 理解できないが お父んは そのような 理不尽や 意味不明を 越えていくのに長けているのだろう」</p> <p><a href="https://crieit.now.sh/upload_images/936393250a0080041e5340fb6c99c2a264a2f47228bc1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/936393250a0080041e5340fb6c99c2a264a2f47228bc1.png?mw=700" alt="202307_maui_04-0113--tile-cursor-size.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 カンペキは無いものだぜ。タイルの連続選択できあがり」</p> <h1 id="📅 2023-07-04 タイルを登録できるようにしろだぜ"><a href="#%F0%9F%93%85+2023-07-04+%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">📅 2023-07-04 タイルを登録できるようにしろだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイルは 名前で管理するのか? Idで管理するのか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 現代は UUID が流行ってて URL は わけの分からない数字、文字の羅列になってしまったが、<br /> UUID が真のIdなら URL 無くして UUID にすればいいものの、<br /> そうならないのは 名前 からイメージできる姿があるからだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 名前は アスキー文字にすんの?<br /> ユニコードにすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 こんな ネギラーメンで ユニコードが使えない環境のことを 本気で考えなくていいだろ。<br /> ユニコードでいいんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 文字数は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 本気で考えなくていいだろ。 64文字でいいんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1~4バイトのユニコード文字が 64個であることの意義は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 無いけど……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ツクラーが タイルに名前を付けようと思ったときの 文字数の分布は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 データは無いけど……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://mmorley.hatenablog.com/entry/2016/05/21/002430">Tiledによるタイルマップの作成とオブジェクトデータの取得を行う!:Cocos Creator<br /> Tiled Cocos Creator</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 誰も タイルに名前なんか 付けないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 アマゾンの商品名の長さは?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/KRAFT-Macaroni-Cheese-クラフト-マカロニチーズ-イージーカップ-12パック-海外直送/dp/B008YTWOLC/?_encoding=UTF8&pd_rd_w=sNbPN&content-id=amzn1.sym.7351c6be-f8cb-43b9-8343-cd956266c4b6&pf_rd_p=7351c6be-f8cb-43b9-8343-cd956266c4b6&pf_rd_r=7Y3VKX4DXVHNADR66Z30&pd_rd_wg=s0X3b&pd_rd_r=3f9c6031-aaa6-45c9-a059-d96a59408246&ref_=pd_gw_trq_ed_438y8oxo">KRAFT Macaroni & Cheese Easy Mac Cups (12 x 2.05 oz cups)クラフト マカロニチーズ イージーカップ 12パック 海外直送</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 適当にクリックしたが 英語表記、日本語表記をつなげて 重さや個数、海外直送まで入っているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ざっくり 100文字にしたら?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうするか……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 すると みんな タイル名に 検索のための情報を 詰め込みだすのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 名前とは別に タグを付けれるようにするかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1つのタイルに タグは何個付けれて、1つのタグの長さは何文字までなの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 これは再帰的な話しで、1つのタグに たくさんの検索の情報を詰め込みだす……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル名を付けるの めんどくさくなって <code>タイル1</code>、 <code>タイル2</code>、<code>タイル3</code> みたいな名前を付けるやつが<br /> 蔓延したらどうする?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 連番付けられるぐらいだったら、 Id は こっちで採番してやるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1つのタイル・セットに、何枚のタイルがあんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 データは持ってない」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Id だけ必須にして、それは自動で採番して、<br /> 100文字のテキスト・フィールドに 半角カンマ区切りで タグを自由入力させたらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 49個のアルファベットを タグで登録するやつがいて うざいかもしれない」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タグも 日本語で入力されたり、英語で入力されたり、表記揺れしたりするんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ カテゴリー・ツリーを予め こっちで定義して そのノードを選ばせる方式にして、<br /> それ以外に 固有名詞 を自由に入れれる欄を置けばどうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Id欄と、100文字のコメント欄の2つにしましょう!<br /> 検索のための仕組みは 後回しで」</p> <p><a href="https://crieit.now.sh/upload_images/9f76e94a599e8626ed037a31655a824864a40f7b7b39d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9f76e94a599e8626ed037a31655a824864a40f7b7b39d.png?mw=700" alt="202307_maui_04-2122--save-button-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じで いいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 動かしてみないと分かんないから それで 作ってみましょう」</p> <pre><code class="plaintext">  C:\Users\むずでょ\Documents\Unity Projects\Negiramen Practice\   └── 📂 Assets     └── 📂 Doujin Circle Negiramen       └── 📂 Negiramen Quest         └── 📂 Auto Generated           └── 📂 Data             └── 📂 CSV               └── 📂 Tile Set 👉               └── 📄 map-tile-format-8x19.csv </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルは ここに置いとくぜ?」</p> <pre><code class="csv">Id, Left, Top, Width, Height, Comment 1, 96, 64, 64, 64, 草原 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 保存内容は こんな感じで いいかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 とりあえず それで」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 クエリー・パラーメーターで ビュー・モデルへ CSVファイルへのパスを渡したつもりなんだが、<br /> コード・ビハインドの Load 時には ビュー・モデルに CSVファイルへのパスが入ってないな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/72757060/net-maui-xaml-queryparameter-is-null-in-the-viewmodel-constructor-but-usable-in">.Net Maui/XAML QueryParameter is NULL in the viewmodel Constructor but usable in XAML, how do I access it in the viewmodel?</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 書かれてる通りにやってるんだが……、あっ、スペルミスだ!」</p> <p><a href="https://crieit.now.sh/upload_images/5aa08c3a87fc4d24dd10b0410d9112dc64a44826960cf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5aa08c3a87fc4d24dd10b0410d9112dc64a44826960cf.png?mw=700" alt="202307_maui_05-0125--add-button.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず ハリボテ で、1行追加 できるようにしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 コメントの文字数のバリデーション、<br /> Idの自動採番、<br /> 既に追加されているタイルは コメントを表示、ボタンのラベルも[追加]から[上書]へ変更、<br /> 削除ボタンの実装、<br /> CSVを固定レイアウトではなく、列名を見るように変更、<br /> CSVのダブルクォーテーションのエスケープ、<br /> 少なくとも これらは 残っているな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 気の遠くなる話しだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ 睡眠へ切り替えよ。寝ろ」</p> <h1 id="📅 2023-07-05 マウス操作が分かりづらいの何とかしろ"><a href="#%F0%9F%93%85+2023-07-05+%E3%83%9E%E3%82%A6%E3%82%B9%E6%93%8D%E4%BD%9C%E3%81%8C%E5%88%86%E3%81%8B%E3%82%8A%E3%81%A5%E3%82%89%E3%81%84%E3%81%AE%E4%BD%95%E3%81%A8%E3%81%8B%E3%81%97%E3%82%8D">📅 2023-07-05 マウス操作が分かりづらいの何とかしろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI がタップ操作にUIを寄せていて、マウスダウン、マウスアップ が検知できないの クソなんだが」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 最初の1回目のタップで あんたが枠を出すから、これでいいんだと思っちゃって<br /> そしたら もう1回 タップしなくちゃいけないって分かって 分かりづらってなるのよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 選択が未確定の間は カーソルが アニメーションしたらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画面が チカチカ 動くのは オフィス・ソフトの分野では 非常識だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 半透明な枠なら どうよ?」</p> <p><a href="https://crieit.now.sh/upload_images/91c1887b68a9194dfaa47a7b6dc69dcd64a54f091546b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/91c1887b68a9194dfaa47a7b6dc69dcd64a54f091546b.png?mw=700" alt="202307_maui_05-2005--selecting.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これぐらい はっきりと分かるぐらい 半透明にしてみるか」</p> <h2 id="Idを自動採番しろ"><a href="#%EF%BC%A9%EF%BD%84%E3%82%92%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA%E3%81%97%E3%82%8D">Idを自動採番しろ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 CSVファイルの中で1番大きなIdより 1 だけ大きいのが 新しいIdだろ。<br /> お父ん。実装しろ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 スキャンするのは カッコ悪いから 行が追加されたタイミングで 最大のIdを常に更新するかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/31bf587a692b3271e22bf9e79572024664a5622359461.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31bf587a692b3271e22bf9e79572024664a5622359461.png?mw=700" alt="202307_maui_05-2124--tile-id-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Idは 増えるようにしたぜ」</p> <h2 id="登録されているタイルは表示しろ"><a href="#%E7%99%BB%E9%8C%B2%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%AF%E8%A1%A8%E7%A4%BA%E3%81%97%E3%82%8D">登録されているタイルは表示しろ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 登録されているタイルは 表示してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルが 1000個 登録されていたら、<br /> 画面上には タイル 1000個 のスプライトを 表示しないと いけないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面を開いたときと、<br /> タイルを追加・削除したときに キャンバスを描きなおせばよくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 実際のタイル画像とは別に、<br /> ワーキング(Working;作業中)なタイル画像を 内部的に持っておけばいいかな」</p> <p><a href="https://crieit.now.sh/upload_images/03595682c55cb6348880ed11a0f3b15f64a564f6d0425.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03595682c55cb6348880ed11a0f3b15f64a564f6d0425.png?mw=700" alt="202307_maui_05-2139--tile-image-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Source</code> に内部メモリーを指定できるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 外部ファイルで十分なんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 作業中の画像は、<br /> ネギラーメンのワーキング・スペース、<br /> ユーザーの AppData、<br /> ユニティの Assetsフォルダー、<br /> どこに置くのがベスト・プラクティスだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ユニティの Assets フォルダーには 資産じゃないものは 置きたくないわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ユーザーの AppData に ゴミを置きたくないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ ネギラーメンのワーキング・スペースかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ネギラーメンを2重起動しなければ 問題ないんじゃない?」</p> <pre><code class="plaintext">  例: C:\Users\むずでょ\Documents\GitHub\2D-RPG-Negiramen   └── 📂 Workspace     ├── 📂 Assets     ├── 📂 For Unity Assets     └── 📂 Temporary       └── 📂 Images 👉       └── 📄 working_tile_set_canvas.png </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じで テンポラリー(Temporary;一時的な)フォルダーを切ろうかな?」</p> <h3 id="第2の構成ファイル"><a href="#%E7%AC%AC%EF%BC%92%E3%81%AE%E6%A7%8B%E6%88%90%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB">第2の構成ファイル</a></h3> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ファイル・パスは ハード・コーディングするのか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いーや。ソース・コードの中に設定が書かれているのは メンテナンス 時の選択肢を狭めて良くない。<br /> 外部ファイルで全部 指定できるようにしたいぜ」</p> <pre><code class="plaintext">  例: C:\Users\むずでょ\Documents\GitHub\2D-RPG-Negiramen   └── 📂 Workspace 👉   └── 📄 configuration_2nd.toml </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 第2の構成ファイルだから、こんな感じでどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ とりあえず それで」</p> <pre><code class="plaintext">[paths] # ネギラーメン・ワークスペースの作業中のタイル・セット・キャンバスPNG画像ファイルへのパス working_tile_set_canvas = "{negiramen_workspace_folder}/Temporary/Images/working_tile_set_canvas.png" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイルの中身は こんな感じでどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 とりあえず それで」</p> <p><a href="https://crieit.now.sh/upload_images/3e01a405230edf72c3cc13dff37778ec64a57683653e8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e01a405230edf72c3cc13dff37778ec64a57683653e8.png?mw=700" alt="202307_maui_05-2254--configuration-1st-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 厳密に行くなら 構成ファイルに この1行を書き足しておきたいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そのファイル・パスは MAUI から編集できるようにするのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 非表示でいいだろ、こんな細かいの」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ユーザーが そのファイルに辿りつけなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 AppData は 隠しフォルダー なんで」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ ネギラーメンを開発する お父ん や、<br /> ネギラーメンを改造する人だけが 知ってればいいんだ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>configuration_2nd.toml</code> は 隠さなくていいの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どこに 何が置いてあるかの 目録になるんで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>configuration_2nd.toml</code> って名前だったら、じゃあ <code>configuration_1st.toml</code> は どこにあるんだ?<br /> って探さない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ぐぬぬぬぬ」</p> <pre><code class="plaintext">  例: C:\Users\むずでょ\Documents\GitHub\2D-RPG-Negiramen   └── 📂 Workspace 👉   └── 📄 user_configuration.toml </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>user_configuration.toml</code> にしよう!」</p> <h4 id="設定ファイルの中で変数展開"><a href="#%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%B8%AD%E3%81%A7%E5%A4%89%E6%95%B0%E5%B1%95%E9%96%8B">設定ファイルの中で変数展開</a></h4> <p><a href="https://crieit.now.sh/upload_images/12766bd436d47ab22eb073d2485f456364a5925c7914f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/12766bd436d47ab22eb073d2485f456364a5925c7914f.png?mw=700" alt="202307_maui_06-0051--path-expand-variables-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 設定ファイルの中で変数が使える仕組みを 簡易実装したところで 今日はここまでだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 最初に作っとかないと あとで困るやつだし、<br /> 本筋の作業が進んでないけど いっか~」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なかなか 前に進まないな……」</p> <h1 id="📅 2023-07-06 タイル・パレット編集画面へタイル・セット画像ファイルへのパスを渡せだぜ"><a href="#%F0%9F%93%85+2023-07-06+%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8%E9%9B%86%E7%94%BB%E9%9D%A2%E3%81%B8%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%82%BB%E3%83%83%E3%83%88%E7%94%BB%E5%83%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%B8%E3%81%AE%E3%83%91%E3%82%B9%E3%82%92%E6%B8%A1%E3%81%9B%E3%81%A0%E3%81%9C">📅 2023-07-06 タイル・パレット編集画面へタイル・セット画像ファイルへのパスを渡せだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父ん、タイル・セット画像へのファイル・パスをハードコーディングしてるだろ。<br /> まず これを クエリー・パラメーターに置き換えて、<br /> 画面遷移元から タイル・セット画像へのファイル・パスを受け取る形にしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 わかったぜ」</p> <p>(カタ カタ カタ カタ ……)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 でけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 次はその タイル・セット画像へのファイル・パスを読込んで、<br /> そして<br /> <code>C:/Users/むずでょ/Documents/GitHub/2D-RPG-Negiramen/Workspace/Temporary/Images/working_tile_set_canvas.png</code> へ出力しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 やってみるぜ」</p> <p>(カタ カタ カタ カタ ……)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 C# なら ImageIO 使えばいいのかだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://dobon.net/vb/dotnet/graphics/imagefromfile.html">画像ファイルを読み込み、Imageオブジェクトを作成する</a></p> <pre><code class="cs">using System.Drawing.Image; </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 MAUI に <code>System.Drawing.Image</code> 無い」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マルチプラットフォーム化で 使えなくしているパッケージなのでしょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 現代では こっち読むのか。インターネット上の大量の記事が 無駄になったかも知れないなあ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/image">Microsoft > Image(コントロール)</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/graphics/images">Microsoft > イメージ(メモリー)</a></p> <pre><code class="cs"> Assembly assembly = GetType().GetTypeInfo().Assembly; using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png")) { image = new W2DImageLoadingService().FromStream(stream); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リソース・フォルダーの中の画像を取得する方法が 書いてるな。<br /> 今回は逆に 任意のディレクトリーの画像のメモリー・ストリームを取らないといけない」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/file-system-helpers?tabs=windows#bundled-files">Microsoft > Bundled files</a></p> <pre><code class="cs">public async Task<string> ReadTextFile(string filePath) { using Stream fileStream = await FileSystem.Current.OpenAppPackageFileAsync(filePath); using StreamReader reader = new StreamReader(fileStream); return await reader.ReadToEndAsync(); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このテキスト・ファイルの例を、画像に書き換えられないか?」</p> <pre><code class="cs">using Microsoft.Maui.Graphics.Win2D; </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このネームスペースが存在しないんだが?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 NuGet で取ってくるんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/9916482608ea4e71cbc14eb93307dc1564a6d6ab39eac.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9916482608ea4e71cbc14eb93307dc1564a6d6ab39eac.png?mw=700" alt="202307_maui_06-2358--graphics.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それはインストール済みだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f6940cca873c3ebf1f23c2a217f59f1064a6d7754d086.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f6940cca873c3ebf1f23c2a217f59f1064a6d7754d086.png?mw=700" alt="202307_maui_07-0001--platform-error.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ このエラーは何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プリプロセッサ・ディレクティブを使って Windowsと Macを分ける必要があるんじゃないの?」</p> <pre><code class="cs">#if IOS || ANDROID || MACCATALYST using Microsoft.Maui.Graphics.Platform; #elif WINDOWS using Microsoft.Maui.Graphics.Win2D; #endif // ... 中略 ... #if IOS || ANDROID || MACCATALYST // PlatformImage isn't currently supported on Windows. TheGraphics.IImage image = PlatformImage.FromStream(inputFileStream); #elif WINDOWS TheGraphics.IImage image = new W2DImageLoadingService().FromStream(inputFileStream); #endif </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 プラットフォームの違いを メソッドが隠蔽してくれたらいいのに……」</p> <pre><code class="cs"> // // タイル・セット・キャンバス画像の読込 // var task = Task.Run(() => { try { // 読込元(ウィンドウズ・ローカルPC) using (Stream inputFileStream = System.IO.File.OpenRead(tileSetImageFilePathAsStr)) { #if IOS || ANDROID || MACCATALYST // PlatformImage isn't currently supported on Windows. TheGraphics.IImage image = PlatformImage.FromStream(inputFileStream); #elif WINDOWS TheGraphics.IImage image = new W2DImageLoadingService().FromStream(inputFileStream); #endif // // 作業中のタイル・セット・キャンバス画像の保存 // if (image != null) { // 書出先(ウィンドウズ・ローカルPC) using (Stream outputFileStream = System.IO.File.Open(workingTileSetCanvasImagefilePathAsStr, FileMode.OpenOrCreate)) { image.Save(outputFileStream); } } } } catch (Exception ex) { // TODO エラー対応どうする? } }); </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 MAUI から Windowsのフォルダーにアクセスできるけど、<br /> マルチ・プラットフォームというメリットが無くなってしまうよな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ Windows の利便性を失わせるかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ユーザーに <code>AppData</code> フォルダー下を いじらせるのは<br /> 隠しフォルダーの意義を失うわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ Windows依存で進めるか~」</p> <p><a href="https://crieit.now.sh/upload_images/b3e58c6d2ee6f2c6c7c43d9fcc0fe00c64a6e2d559c5d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b3e58c6d2ee6f2c6c7c43d9fcc0fe00c64a6e2d559c5d.png?mw=700" alt="202307_maui_07-0050--write-image.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 PNG画像の書出しまで でけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 今は タイル・セット画像の方を MAUI に表示してるだろ。<br /> それを止めて、こっちの 作業中のタイル・セット画像の方を MAUI に表示してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 分かったぜ」</p> <p>(カタ カタ カタ カタ ……)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 その差し替えも終わったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 すでに登録済みのタイルは 半透明の青色で塗りつぶしておくと、<br /> 残作業が見えやすくなるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 やってみるぜ」</p> <pre><code class="plaintext">Microsoft.Maui.Graphics.IImage Microsoft.Maui.Graphics.ICanvas </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ? 描画ができるのは <code>IImage</code> じゃなくて、 <code>ICanvas</code> の方だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>IImage</code> を <code>ICanvas</code> に変換する方法がないか、調べろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ググっても出てこないから デバッグライトするぜ。<br /> IImage の実体は <code>W2DImage</code> らしいんだが、これも探しても出てこない」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Windowsの2Dイメージなんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル・カーソルと同じように <code>IDrawable</code> を実装したクラスを作って、<br /> XAML の GraphicView 要素の Drawable 属性で指定したらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、そうか!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>IDrawable</code> を実装したクラスと、ビュー・モデルが連携できないの<br /> グローバル変数での連携が大変だぜ、どうにかならないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 BindableObject というのが あるそうだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75988921/in-net-maui-how-do-i-pass-variables-to-a-graphicsview-drawable-in-a-contentvie">In .NET MAUI, how do I pass variables to a GraphicsView.Drawable in a ContentView</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73997548/how-to-pass-variable-data-into-net-maui-graphicsview-canvas">How to pass variable data into .NET MAUI GraphicsView canvas</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 覚えてみるかだぜ」</p> <h1 id="📅 2023-07-07 IdをBASE64にしようぜ?"><a href="#%F0%9F%93%85+2023-07-07+%EF%BC%A9%EF%BD%84%E3%82%92%EF%BC%A2%EF%BC%A1%EF%BC%B3%EF%BC%A5%EF%BC%96%EF%BC%94%E3%81%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">📅 2023-07-07 IdをBASE64にしようぜ?</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Id を BASE64 にしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 メリットは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 人は 整数を見ると 1から順にソートしたくなる。<br /> BASE64 なら ソートしようとは思わない。<br /> Idをソートしようとする悲しい人類を救うことができる」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 エビデンスは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 無い。本番環境で実験だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 やってみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 <code>Convert</code> クラスを使ってみるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/api/system.convert.tobase64string?view=net-7.0">Convert.ToBase64String メソッド</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/16072709/converting-string-to-byte-array-in-c-sharp">Converting string to byte array in C#</a><br /> <a href="https://crieit.now.sh/upload_images/7e85ff318ad543c2c7aa06ea053ad4df64a7df978f24b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7e85ff318ad543c2c7aa06ea053ad4df64a7df978f24b.png?mw=700" alt="202307_maui_07-1848--id-base64-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Idを BASE64にしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 桁数が気になるわね。<br /> <code>1</code> は <code>MQ==</code> だけど、 <code>1000</code> は <code>MTAwMA==</code> よ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://hogehoge.tk/tool/">データ変換ツール</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 3桁ぐらいの文字なら 4桁ぐらいに変換されて気にならないが、<br /> 4桁ぐらいの文字は 8桁ぐらいに変換されて メモリ効率は 2倍になって 悪くなるな。<br /> だいたい、 1.3倍ぐらい メモリ効率は悪くなるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 メモリ効率が1.3倍に悪くなることと引き換えに<br /> 悲しい人類がIdをソートしようとすることを防ごうと言うのね」</p> <p><a href="https://crieit.now.sh/upload_images/30f25eb86d832d9e1e7888d05f229d2a64a7e186b8bd9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/30f25eb86d832d9e1e7888d05f229d2a64a7e186b8bd9.png?mw=700" alt="202307_maui_07-1856--id1000-base64-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Idが1000に達したとき、BASE64にすると 改行されてしまうのは 悪しと見るか、<br /> コーナーケースに合わせるとキリがないので これで良しと見るか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 1000枚もタイルが含まれる タイル・セット画像を 利用するやつ、<br /> そんなとこ 気にするでもなく ハードワーカーだろ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 999枚もタイルが含まれない タイル・セット画像を 利用する人にとっては、<br /> 無駄なスペースが 空いていることの方が きにするでしょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、Id をマウスで選択できね。気になるな……。<br /> 選択可能なテキストで、かつ入力ができない リード・オンリーな設定できるかな……?」</p> <p><a href="https://crieit.now.sh/upload_images/14918b0d3da799690f561ed48553d82964a7e4b1cca16.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/14918b0d3da799690f561ed48553d82964a7e4b1cca16.png?mw=700" alt="202307_maui_07-1909--readonly-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 でけた。<br /> フォント・サイズは きっかり スタイルで決まっているようで 任意サイズにはできなかったので<br /> <code>Entry</code> 要素を広げたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ラベルの <code>Id</code> と <code>コメント</code> の間に パディング 入れられないの?」</p> <p><a href="https://crieit.now.sh/upload_images/1d57c69fb2b67362aeac43afcd0260fb64a7e5a403848.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d57c69fb2b67362aeac43afcd0260fb64a7e5a403848.png?mw=700" alt="202307_maui_07-1914--padding-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 入れれるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 良くなった。ラベルの文字は 隣のセルと くっつかないようにしましょう」</p> <p><a href="https://crieit.now.sh/upload_images/88e02f2b30f5af3ac8391a9295a3b95164a7e73844aaa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/88e02f2b30f5af3ac8391a9295a3b95164a7e73844aaa.png?mw=700" alt="202307_maui_07-1920--tileId-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Id</code> だけだと オーラル・コミュニケーションで困るだろうから<br /> <code>タイルId</code> と書いといてやろう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 そのIdって、 ひだり、うえ、よこ、たて から一意に決まらないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 例えば <code>128,32,96,32</code> を BASE64に変換擦ると <code>MTI4LDMyLDk2LDMy</code> だぜ。<br /> これだったら ベクターを2つ 覚えておいた方がマシかも」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 情報で構成されている Id なんて、イケてないぜ。それは暗号だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あくまで 表示に BASE64 を使っているだけで、内部的には 整数なんで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 このタイルIdは、プロジェクトの中で一意なの?<br /> それとも タイル・セット画像ファイルの中で一意なの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 凝り出すと UUID に行きついてしまう。<br /> タイル・セット画像ファイルの中での ローカルなIdだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ タイルIdには タイル・セット画像ファイルのIdも 表示しないと<br /> 本当のタイルIdにはならないんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイル・セット画像ファイルに Idを振ることが難しい。<br /> プロジェクトの中での ローカルなIdなら 振れるだろうけど、<br /> そのIdは 別のプロジェクトへ使い回せない」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プロジェクトに UUID 振ればいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ブランチして 開発が平行したら ノー・コントロール になってしまう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ なんで タイルId なんか採番するんだぜ?<br /> <strong>ファイル名、ひだり、うえ、よこ、たて</strong> が本当のIdなんじゃないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あるファイル内の中だけで使える、<br /> <strong>ひだり、うえ、よこ、たて</strong> の情報を 3桁程度の整数に集約するのが タイルId だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その情報を ユーザーに提示する理由は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>タイル1</code>、 <code>タイル2</code> のような <strong>タイル名</strong> を ユーザーに入力させないこと、<br /> <code>1</code>、 <code>2</code> のような <strong>連番</strong> を ユーザーに入力させないこと、<br /> これらの代替が <strong>タイルId</strong> だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 意義はあるんだ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 しかし それは <strong>Id</strong> の働きを持っていないのでは?<br /> 何かと言えば <strong>コード</strong> なのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 内部的には <strong>Id</strong> なんだが、表示上は <strong>コード</strong> だな。<br /> じゃあ オーラル・コミュニケーションを考えて ラベルを変えるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/847f17addadf34d8a27bd4f3297b4d9b64a7efb0ec7c0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/847f17addadf34d8a27bd4f3297b4d9b64a7efb0ec7c0.png?mw=700" alt="202307_maui_07-1955--tile-code-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 確かに <strong>タイル・コード</strong> にすると しっくりしたな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 しかし そもそも <strong>BASE64</strong> は、 <strong>オーラル・コミュニケーション</strong> には向いていないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 諫言だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ BASE64の 64文字に対して <code>Apple</code> とか、 <code>Banana</code> とか<br /> プロナウンサブル(Pronounceable;発音可能)な単語を当てたらどう?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 インターナショナル(International;国際的)に通用するフォニックス(Phonics;発音)ってある?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 軍事か通信、航空あたりを調べれば 何か規格があるのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 調べるか~」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ナトー のがあったぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://ja.wikipedia.org/wiki/NATOフォネティックコード">NATOフォネティックコード</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 はっきり 西側に寄り添うの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 大文字と小文字は 区別しないのか~」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 英語のフォネティックコードが人名なんで、大文字にかこつけて 大文字は英語にしたらいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあそれで。作ってみるか~」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 大文字も 小文字も <code>X-ray</code> になるんだが」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 違う所から 持ってきなさい」</p> <pre><code class="plaintext">BASE64 英単語 読み ------ --------- ------- A Alice アリス B Boart ボート C Castle キャッスル D Drink ドリンク E Elf エルフ F Forest フォレスト G Gold ゴールド H Hotel ホテル I Island アイランド J John ジョン K King キング L Level レベル M Madam マダム N News ニュース O Ork オーク P Pond ポンド Q Queen クイーン R Room ルーム S Soup スープ T Talk トーク U Uncle アンクル V Video ビデオ W Wolf ウルフ X Xmas クリスマス Y Yogurt ヨーグルト Z Zebra ゼブラ a and アンド b big ビッグ c clean クリーン d damage ダメージ e evil イーブル f fake フェイク g get ゲット h hit ヒット i ice アイス j jump ジャンプ k kick キック l love ラブ m magic マジック n no ノー o oily オイリー p poison ポイズン q quiz クイズ r rain レイン s solty ソルティー t trendy トレンディー u up アップ v victory ビクトリー w wind ウィンド x xrated エックスレーテド y your ユワ z zenith ゼニス 0 0 (数字) 1 1 (数字) 2 2 (数字) 3 3 (数字) 4 4 (数字) 5 5 (数字) 6 6 (数字) 7 7 (数字) 8 8 (数字) 9 9 (数字) + + (プラス) / / (スラッシュ) = = (イコール) </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ゲームに出てきそうな 短い英単語を 持ってきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 趣向を変えたんだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 単語の先頭だけ切り取れば BASE64 に戻るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 動かしてみましょう」</p> <p><a href="https://crieit.now.sh/upload_images/03abe093944466b6d15dd0742b6db64864a82cf761532.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03abe093944466b6d15dd0742b6db64864a82cf761532.png?mw=700" alt="202307_maui_08-0017--madam-get-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Madam get = =</code> になるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 BASE64 より さらに 6倍近く 長くならない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なりそう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Id 1000 で試しなさい」</p> <p><a href="https://crieit.now.sh/upload_images/4e4f33c04c26f9536fb1972070cd580864a82e94a3031.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4e4f33c04c26f9536fb1972070cd580864a82e94a3031.png?mw=700" alt="202307_maui_08-0025--long-code.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 今の3倍ぐらいの長さにすれば 入りそう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ユーザーは 何だこれは? と思わないだろうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 思う」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 あと、 BASE64 は、文字列連結しないのであれば 桁のプレースホルダーの <code>=</code> は省いていいそうよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ちょっと考えるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b56dc151eff38b3f846892897929c06f64a836483b4d1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b56dc151eff38b3f846892897929c06f64a836483b4d1.png?mw=700" alt="202307_maui_08-0057--memory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 欄外に書いたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ぜったい なんのこっちゃ なんだよなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それがタイルの名前としての働きを持つと 認識できないのよね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>名前</strong> という文化は廃止だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ディーエックス」</p> <p><a href="https://crieit.now.sh/upload_images/646bb3129ffc004d6eac2fcd80f6df5864a83c5fc813a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/646bb3129ffc004d6eac2fcd80f6df5864a83c5fc813a.png?mw=700" alt="202307_maui_08-0123--name-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 どうしても 名前を書きたいやつは コメント欄に書け、と親切に 書いておくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>(任意)</code> も付けておいた方がよくない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>任意</code> の意味が分からん人も いるそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あんまり 書きすぎると デザインの敗北……」</p> <h1 id="📅 2023-07-08 タイルを選択したら、照会しろだぜ"><a href="#%F0%9F%93%85+2023-07-08+%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E7%85%A7%E4%BC%9A%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">📅 2023-07-08 タイルを選択したら、照会しろだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル・パレット上で 範囲選択したら、<br /> そのタイルは すでに登録済みか、まだ登録されていないか、判定しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 わかったぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 前のトリック・コードは 奇数回実行すると働くが、偶数回実行すると働かないというバグを踏んだので<br /> 対応中」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 トリックなんかに頼るからよ」</p> <p><a href="https://crieit.now.sh/upload_images/6b3416758efd5439fd9c639d661f61eb64a9730282347.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6b3416758efd5439fd9c639d661f61eb64a9730282347.png?mw=700" alt="202307_maui_08-2329--read-file-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 登録したタイルの情報を 読み込むようにしたが、<br /> 全体的に動きが 怪しいので 調整中だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bfc6fc71ddf5d3c5f73c64cf79c5b46464a9869dde6aa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bfc6fc71ddf5d3c5f73c64cf79c5b46464a9869dde6aa.png?mw=700" alt="202307_maui_09-0047--tile-form-display-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイル・コードと コメントの入出力は 動きが付いたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 もう寝ろ」</p> <h1 id="📅 (2023-07-09 sun)タイルが登録されているとき、ボタンのラベルを追加から上書へ変更してくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-09+sun%EF%BC%89%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%8C%E7%99%BB%E9%8C%B2%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D%E3%80%81%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%8B%E3%82%89%E4%B8%8A%E6%9B%B8%E3%81%B8%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-09 sun)タイルが登録されているとき、ボタンのラベルを追加から上書へ変更してくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 日曜日は 昼まで寝た」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイルが登録されているとき、ボタンのラベルを追加から上書へ変更してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f9b1211166b1ca6fe21c8f4eac7a78e464aa30a969476.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f9b1211166b1ca6fe21c8f4eac7a78e464aa30a969476.png?mw=700" alt="202307_maui_09-1257--adds-button-label--o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 タイルが登録されているときは、ボタンのラベルを <code>上書</code> に変えるようにしたぜ」</p> <h2 id="国際化"><a href="#%E5%9B%BD%E9%9A%9B%E5%8C%96">国際化</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その <code>上書</code> を、 <code>Overwrite</code> にしても ボタンの中に収まるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 多言語化か……。試してみるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/be647d73f41c6f24a9cc34fe4244f00d64aa3ad6abccc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/be647d73f41c6f24a9cc34fe4244f00d64aa3ad6abccc.png?mw=700" alt="202307_maui_09-1342--overwrite-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 収まらないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ このアプリは 国際化に耐えられないわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 横幅が長い……。 海外人、どんな UI 使ってるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 日本人が ビューにたくさん項目を詰めるの こだわるの、<br /> チャイニーズ・キャラクター文化だからなのかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 欧米の アイコン が、漢字相当なんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ、アイコンか 漢字かを選べるようにしたらいいのか……?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 ガイドラインを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/visualstudio/extensibility/ux-guidelines/images-and-icons-for-visual-studio?view=vs-2022">Microsoft > Visual Studio のイメージとアイコン</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 欲しいアイコンが無いし、似たようなアイコンばっかり いっぱいある」</p> <p><a href="https://crieit.now.sh/upload_images/d0fd19219268227dbccc2c699a5d841a64aa3f5a846e2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d0fd19219268227dbccc2c699a5d841a64aa3f5a846e2.png?mw=700" alt="202307_maui_09-1401--edit.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ペンが無難だと思う」</p> <p><a href="https://crieit.now.sh/upload_images/0c87e87a8e9fe5a6a344d3e07ea1ee4864aa3fc0893c0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0c87e87a8e9fe5a6a344d3e07ea1ee4864aa3fc0893c0.png?mw=700" alt="202307_maui_09-1403--resources.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 しかし MAUI にも最初から ちょびっとだけ リソースが入ってるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI 用のリソース集も どっかで配られてんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 フォントでやるのが いいのか~?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/images/app-icons?tabs=windows">.NET MAUI アプリ アイコンを変更する</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://zenn.dev/test_myname/articles/f680e5aaffbb8d">.NET MAUIで、Emoji(絵文字)やIcon(アイコン)を打とう</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font">Segoe Fluent Icons font</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://fonts.google.com/icons">Google Fonts > Material Symbols And Icons</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ボタンに アイコン・フォントを表示させるのは どうやるんだぜ? 画像の方法はあるが」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://blog.hiros-dot.net/?p=12073">[.NET MAUI][Button] ボタンにイメージを表示する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 画像も 文字も アイコン・フォントも 方法を統一してくれたらいいのに……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/4774">Font Icons in Shell Tabs not showing</a></p> <p><a href="https://crieit.now.sh/upload_images/ee365f4c139a8179b13afcd9ef4bc96a64aa44b951f24.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ee365f4c139a8179b13afcd9ef4bc96a64aa44b951f24.png?mw=700" alt="202307_maui_09-1424--mojibake-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あれっ? 文字化けだ。 Windows 11 には <code>Segoe Fluent Icons</code> フォントは最初から入ってると 読んだが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んのPC、 Windows 10」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マルチ・デバイスのプログラミングが ホストOSに依存したら 悪いんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 どこから <code>Segoe Fluent Icons</code> フォントを入手するんだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/microsoft/fluentui-system-icons">Microsoft > fluentui-system-icons</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 情報ではなく、フォントが欲しい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/typography/font-list/segoe-ui#licensing-and-redistribution-info">Microsoft > Segoe UI font family</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 ずっと前から シーゴーは Windows に入っているみたいだけど」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://ja.wikipedia.org/wiki/Segoe">Wikipedia > Segoe</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 シーゴーは 日本語フォントではない、という話しもあるわね」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.ipentec.com/document/css-font-segoe-ui">Segoe UIフォントは日本語フォントなのか</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 日本語の設定のまま シーゴー を使えないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/46e2411c0e80be85fcf6f418233e80b564aa4d68b92c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/46e2411c0e80be85fcf6f418233e80b564aa4d68b92c6.png?mw=700" alt="202307_maui_09-1501--image-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 フォントのような不確定要素を使うのは諦め、ビジュアル・スタジオ2022イメージ・ライブラリーから<br /> ザムルを取ってくることにするぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/resource-dictionaries#merge-resource-dictionaries">Microsoft > リソース ディクショナリのマージ</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リソース・ディクショナリーとして マージすれば 使えるか?」</p> <p><a href="https://crieit.now.sh/upload_images/32eb65ca9e2c9509ed572b272cacce0a64aa513041bb6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/32eb65ca9e2c9509ed572b272cacce0a64aa513041bb6.png?mw=700" alt="202307_maui_09-1517--resource-file.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 リソース・ディクショナリーの書き方を忘れたので 調べるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/439bccaba9466537a67f8efbe8f256bf64aa518ebfbe0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/439bccaba9466537a67f8efbe8f256bf64aa518ebfbe0.png?mw=700" alt="202307_maui_09-1519--resource-dictionary.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あのXMLタグに挟めばいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/1b33ee41f87f16fe63a010e4c60e4cec64aa5212f2291.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1b33ee41f87f16fe63a010e4c60e4cec64aa5212f2291.png?mw=700" alt="202307_maui_09-1521--edit-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビジュアル・スタジオ2022イメージ・ライブラリーの <code>Edit.xaml</code> の <code>Viewbox</code> を、貼り付けるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そういう手間が要るんだな」</p> <p><a href="https://crieit.now.sh/upload_images/53b6b95553dbd3f0481ee08268d3e19e64aa53a2b06c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/53b6b95553dbd3f0481ee08268d3e19e64aa53a2b06c3.png?mw=700" alt="202307_maui_09-1527--xmlns-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ダメだ 仕様が旧い」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 SVG形式にしたらいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 SVG は、画像じゃなくて アイコン扱いなのか?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/72358537/i-cant-set-a-svg-file-as-a-maui-app-icon">I can't set a .svg file as a maui app icon</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 📂 <code>Resources/Images</code> フォルダーは 何か特別な管理下にあるみたいで ふつうのフォルダーのようには扱えなさそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 MAUI は、ファイル・パスという概念を 無くしたいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 スマホ・デバイスへの対応のために?」</p> <p><a href="https://crieit.now.sh/upload_images/d6a8bc9d5467cbd67fabe9bab586536564aa5d8688efc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d6a8bc9d5467cbd67fabe9bab586536564aa5d8688efc.png?mw=700" alt="202307_maui_09-1610--maui-bot.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 MAUI の最初に出てきた ロボット、あいつ SVG画像らしい。<br /> あいつは 表示されて、<br /> ペンを ボタンの上に表示できないの、何故だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/9c15f2a1fc51aca3138f4eceb897877164aa5feb30ead.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9c15f2a1fc51aca3138f4eceb897877164aa5feb30ead.png?mw=700" alt="202307_maui_09-1620--svg.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんで ペン がでかい?<br /> そして SVG なのにラスタライズされてる?」</p> <p><a href="https://crieit.now.sh/upload_images/543c30d7690c13f0e14e8f61b70dac1864aa607ee0b77.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/543c30d7690c13f0e14e8f61b70dac1864aa607ee0b77.png?mw=700" alt="202307_maui_09-1622--svg-to_v2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さらに なぜ <code>.svg</code> ではなく <code>.png</code> にしないと画像が出てこない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 自動で ラスタライズ されているのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/3d646ddc9efc49ca78b0ecc61d8b0c9964aa618ed6ff5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3d646ddc9efc49ca78b0ecc61d8b0c9964aa618ed6ff5.png?mw=700" alt="202307_maui_09-1627--directory-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 フォルダーを切って その中に入れると、パスでアクセスできなくなるのは 何故だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/images/images">Add images to a .NET MAUI app project</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Android アプリがこうしてるから、 MAUI もこうしてる、というような 腰抜けの話しが 書かれているぜ。<br /> クソじゃないか」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 なんで Android アプリに迎合するのかしら?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Microsoft が腰抜けだからだろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/issues/8628">Images in subfolders not showing up on Windows but do on Android #8628</a></p> <pre><code class="xml"><ItemGroup> <MauiImage Include="Resources/Images/XXXXXXXX/*" /> </ItemGroup> </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか こういうタグをどこかに書くと そのフォルダーがプロジェクトに認識されるらしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 それは どこに書くんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/37a79f95bfdabeb1420516c8bf927bb864aa6d6b00282.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/37a79f95bfdabeb1420516c8bf927bb864aa6d6b00282.png?mw=700" alt="202307_maui_09-1717--csproj-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルを開けまくって 消去法をしている途中で <code>2D RPG Negiramen.csproj</code> に それっぽいコードを発見したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 書き足してみましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/18d4f31bff5ef09167e6a7b9ed9b71dd64aa7b7982a8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/18d4f31bff5ef09167e6a7b9ed9b71dd64aa7b7982a8b.png?mw=700" alt="202307_maui_09-1816--maui-image-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>\*</code> を、 <code>\**\*</code> に変えると、<br /> 直下フォルダーの任意のファイルではなく、<br /> サブフォルダ―も下りて行って任意のファイルを 見てくれるようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4dea0a18be1045f1f2e8696dd290360164aa7c4b34fe4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4dea0a18be1045f1f2e8696dd290360164aa7c4b34fe4.png?mw=700" alt="202307_maui_09-1821--rtf-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 また、 Android に迎合して、ディレクトリー名、ファイル名に 大文字や空白は使えず、<br /> 小文字英字、ハイフン、数字だけを使うようにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6de8534c9be7f2eb0b33343f5fb5d28b64aa7f1627aa9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6de8534c9be7f2eb0b33343f5fb5d28b64aa7f1627aa9.png?mw=700" alt="202307_maui_09-1832--image-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そして ディレクトリーは無視されるという クソ仕様により、<br /> ファイル名だけで指定することになるぜ。拡張子は、ファイル名に <code>.png</code> と付いていても XAML には <code>.png</code> と指定するクソ仕様」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI は、プラットフォームごとに 異なる画像ファイル形式で用意されても、<br /> XAML には <code>.png</code> と書こうという MAUI の開発者の頭が残念なことに なってるのね~」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ラスター画像と ベクター画像の特性の違いも理解できないぐらい 知能が下がってるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/da91855569c9d3b0ed4191c1abd485a964aa81704c31b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/da91855569c9d3b0ed4191c1abd485a964aa81704c31b.png?mw=700" alt="202307_maui_09-1843--rename-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイル名が被りたくないので プレフィックス(Prefix;接頭辞)を付けるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 インフラの出来が悪いと 要らんテクニックが使われてしまうな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 フォルダー下に、別の命名システムを持ったフォルダーを ぶらさげたいこともあるのに、<br /> それが考慮されていないのは<br /> MAUI の開発者が 開発の現場経験が未熟だろうから 全員クビになっても 不思議ではないわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/63107ee03ba2f44132e5e4b319340d0464aa83ab3c341.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63107ee03ba2f44132e5e4b319340d0464aa83ab3c341.png?mw=700" alt="202307_maui_09-1852--svg-color-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 SVG形式画像を PNG形式画像に変換した後のものが ボタンの上に描かれるから、<br /> テキスト・カラーを 白 にしても 白くならないぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 当然だな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI お前 コンピューター・グラフィックスという 自覚 無いのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI の開発者も いずれ全員 クビになるでしょう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 代替策を探さな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/74334591/specify-the-color-of-a-svg-image-in-net-maui">Specify the color of a SVG image in .NET Maui</a></p> <p><a href="https://crieit.now.sh/upload_images/ad249fe8a956c79695ac497b21ad617764aa880796a6b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad249fe8a956c79695ac497b21ad617764aa880796a6b.png?mw=700" alt="202307_maui_09-1911--tint-color-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>TintColor</code> も効果なし」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI の出来が悪いんじゃないの? あんまり 期待できないんだから<br /> トリックを使っていくことに なるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ ツールチップ・ヒント の使い方を調べるか」</p> <p><a href="https://crieit.now.sh/upload_images/d4ab7b314fd471171939eb1482379a9464aa906245a5b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d4ab7b314fd471171939eb1482379a9464aa906245a5b.png?mw=700" alt="202307_maui_09-1939--long-button-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ボタンは 横に広く使うように 妥協。<br /> ツールチップ・ヒントも 組み合わせたので、<br /> 国際化は 少々横長のボタンと ツールチップ・ヒントで なんとかしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>タイル名、または コメントを自由入力</code> というメッセージが ダサいから <code>タイル名</code> だけでよくない?」</p> <p><a href="https://crieit.now.sh/upload_images/5cccfdff5ba10582cc155d58be52c80064aa921995cea.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5cccfdff5ba10582cc155d58be52c80064aa921995cea.png?mw=700" alt="202307_maui_09-1954--label-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 すっきりさせたぜ」</p> <h2 id="多言語化"><a href="#%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%8C%96">多言語化</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 英語版、日本語版と どうやって切り替えるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 調べるか……」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.banditoth.net/2022/08/29/net-maui-write-multilingual-apps-easily/">.NET MAUI : Write multilingual apps easily</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Xamarine の方法がそのまま使えるらしいが、それでいいのか もっと調べるか……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 昔の Windows のやり方も 冴えてないしなあ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/71315229/how-to-implement-net-maui-localization">How to implement .NET MAUI localization</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 この動画の人 センス有るな 調べてみるか」</p> <p>📺 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=cf4sXULR7os">Localization in .NET MAUI - Adding Multi-Language to Your Apps</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 サンプルまで 用意されてる」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/jfversluis/MauiLocalizationSample">.NET MAUI Localization Sample</a></p> <p><a href="https://crieit.now.sh/upload_images/6ab6ad3d16d246d261bb97f2cb01f11364aa9c026b5ec.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6ab6ad3d16d246d261bb97f2cb01f11364aa9c026b5ec.png?mw=700" alt="202307_maui_09-2032--sample.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サンプルは動くが、どうやって 📂 <code>Languages</code> フォルダーを作ったのか<br /> 手順が分からんな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ResXManager は 多言語化の鉄板ソフトなんで インストールしておこうぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager">ResXManager</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 しかし ResXManager の画面は どこから出すんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/dc37eb0cf96400abc5fed91a652207e864aaa03178861.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dc37eb0cf96400abc5fed91a652207e864aaa03178861.png?mw=700" alt="202307_maui_09-2054--resource-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このリンク クリックしたら 何か出てくるかな?」</p> <p><a href="https://crieit.now.sh/upload_images/d56ed1c168dc435e5ef9e4f99efe66f664aaa4d115c40.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d56ed1c168dc435e5ef9e4f99efe66f664aaa4d115c40.png?mw=700" alt="202307_maui_09-2056--resx-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 昔ながらの場所に作られたが、そこじゃなくて<br /> 📂 <code>Resources/Languages</code> フォルダ―の下に置いてほしいんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bd3c309ad8b1540d105780ba5bd8b14664aaa50c4f16b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bd3c309ad8b1540d105780ba5bd8b14664aaa50c4f16b.png?mw=700" alt="202307_maui_09-2114--sample-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 サンプル見ると、単に ファイルを移動しただけに見えるな……<br /> やってみるか」</p> <p><a href="https://crieit.now.sh/upload_images/47ea86e372d6b831991dd01e14d2e04564aaa66644aca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/47ea86e372d6b831991dd01e14d2e04564aaa66644aca.png?mw=700" alt="202307_maui_09-2121.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 自動で ネームスペースも調整してくれるのかな?」</p> <p><a href="https://crieit.now.sh/upload_images/2311669f7b860d49718a2a3b11deb55864aaa6db405db.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2311669f7b860d49718a2a3b11deb55864aaa6db405db.png?mw=700" alt="202307_maui_09-2123--AppResources.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ファイル名も <code>Resources</code> から <code>AppResources</code> に変えたろ」</p> <p><a href="https://crieit.now.sh/upload_images/c10c9472698797fab5c6a949a488cd4264aac4966ca49.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c10c9472698797fab5c6a949a488cd4264aac4966ca49.png?mw=700" alt="202307_maui_09-2330--Localization.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>LocalizationResourceManager</code> クラスを真似して 自分用に設定」</p> <p><a href="https://crieit.now.sh/upload_images/cb1d7979ff646d7b4caf1360a6b3af3964aac8ed78817.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cb1d7979ff646d7b4caf1360a6b3af3964aac8ed78817.png?mw=700" alt="202307_maui_09-2346--init-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 アプリケーション起動直後に 文化を日本に設定。<br /> わたしが日本語しか確認しないから 日本がデフォルトでいいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/1038abbbb5fef37dd0faed361eaf1d7064aacb0633447.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1038abbbb5fef37dd0faed361eaf1d7064aacb0633447.png?mw=700" alt="202307_maui_09-2357--translate.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>TranslateExtension</code> も真似て作り、自分に合わせて編集」</p> <p><a href="https://crieit.now.sh/upload_images/4d161dfc3ff12c86cbe206b1aef1440364aacc30b09b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4d161dfc3ff12c86cbe206b1aef1440364aacc30b09b8.png?mw=700" alt="202307_maui_10-0002--instance-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューのコード・ビハインド、つまり <code>ContentPage</code> の継承クラスには<br /> ローカライゼーション資源管理へのアクセッサ―を書いておくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/485d47b1572a4ce3aabdca90508b8f6c64aacdfa276e3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/485d47b1572a4ce3aabdca90508b8f6c64aacdfa276e3.png?mw=700" alt="202307_maui_10-0010--layoutTheScreen-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず <code>AppResources.resx</code> へ、 1件だけ 文字列リソースを 記入するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/93d99fbf1f7a615d91376bea7b0af02a64aacf128f3b6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/93d99fbf1f7a615d91376bea7b0af02a64aacf128f3b6.png?mw=700" alt="202307_maui_10-0014--translate-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>MainPage.xaml</code> に <code>xmlns:app="~"</code> を追加し、<br /> Text プロパティへ <code>{app:Translate LayoutTheScreen}</code> と書いてみるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a7aafe5aa22df7945b9675615f85fc5464aacfa9a18c9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a7aafe5aa22df7945b9675615f85fc5464aacfa9a18c9.png?mw=700" alt="202307_maui_10-0017--home-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 実行すると、文字列リソースが 使われているな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 カルチャーを変更するドロップダウン・リストみたいなものが欲しいわねえ」</p> <h2 id="外国語を入力してくれだぜ"><a href="#%E5%A4%96%E5%9B%BD%E8%AA%9E%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">外国語を入力してくれだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 試しに 英語と 中国語のリソースも 作ってみてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1a70975edac8a28c1ec84549d94a37e964aad2d883c3b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1a70975edac8a28c1ec84549d94a37e964aad2d883c3b.png?mw=700" alt="202307_maui_10-0029--resxmanager-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ResXManager</code> がインストール済みなのは確認できるんだが、<br /> どこから実行するんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/0961e44c7647157c97090ecb88cdf6f364aad3aa5f105.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0961e44c7647157c97090ecb88cdf6f364aad3aa5f105.png?mw=700" alt="202307_maui_10-0033--tool-resxmanager-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あっ、いた!」</p> <p><a href="https://crieit.now.sh/upload_images/9138315a2e52338881fe383a1b99923a64aad40300c31.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9138315a2e52338881fe383a1b99923a64aad40300c31.png?mw=700" alt="202307_maui_10-0036--open-resxmanager.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ここまでくると あとは わかる」</p> <p><a href="https://crieit.now.sh/upload_images/f986007d0f27516e0d809241e6f3aa2d64aad55274deb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f986007d0f27516e0d809241e6f3aa2d64aad55274deb.png?mw=700" alt="202307_maui_10-0040--neutral-language-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ニュートラル・リソース・ランゲージを 英語から 日本語へ 変えるぜ。<br /> 理由は 開発者が わたし1人だから」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 悲しい話しだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/084551d620cbb2512ed3e73e4ee42b0264aad659090b1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/084551d620cbb2512ed3e73e4ee42b0264aad659090b1.png?mw=700" alt="202307_maui_10-0045--add-new-language-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 言語を追加するボタンがあるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/17f6e29ad248f284a56b57c9ac28e05864aad72ed2885.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/17f6e29ad248f284a56b57c9ac28e05864aad72ed2885.png?mw=700" alt="202307_maui_10-0049--en-US-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず イーエヌ・ユーエス(en-US;英語(米国))は 必須だろ」</p> <p><a href="https://crieit.now.sh/upload_images/ad51a2ae899827fe7f0362e07bcf990a64aad87d63534.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad51a2ae899827fe7f0362e07bcf990a64aad87d63534.png?mw=700" alt="202307_maui_10-0054--add-languages-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず 3つも足しておけば十分だろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アジアに寄ってんな」</p> <p><a href="https://crieit.now.sh/upload_images/4e0a62f752473d3015723becb6ea783a64aad98e8314f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4e0a62f752473d3015723becb6ea783a64aad98e8314f.png?mw=700" alt="202307_maui_10-0059--translation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ばばばっと 翻訳して 空いてるとこ 埋めてくれる機能があるから<br /> 使おうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/7e5cdc05fc459da2cf83445a4df375d964aadb02b6a9e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7e5cdc05fc459da2cf83445a4df375d964aadb02b6a9e.png?mw=700" alt="202307_maui_10-0105--translation.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なぜか 英語しか 対応してくれなかった。 寄付が足りないとか?」</p> <p><a href="https://crieit.now.sh/upload_images/b1958b50864443902e3e4dc5d5bf0e6b64aadbce7a575.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b1958b50864443902e3e4dc5d5bf0e6b64aadbce7a575.png?mw=700" alt="202307_maui_10-0108--en-US-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 <code>AppResources.en-US.resx</code> ファイルが増えてるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f36045b73827fa0b0edfdf7907a25c3964aadd8749195.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f36045b73827fa0b0edfdf7907a25c3964aadd8749195.png?mw=700" alt="202307_maui_10-0116--culture-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ISO言語コードを変えると」</p> <p><a href="https://crieit.now.sh/upload_images/b4106d67b4d00b9fcbef7ac3889dbe5764aade0a9a462.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b4106d67b4d00b9fcbef7ac3889dbe5764aade0a9a462.png?mw=700" alt="202307_maui_10-0118--us-o2o0.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 翻訳が完了だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 📂 <code>Languages</code> フォルダーの中をサーチして、翻訳できる言語を調べて<br /> 言語を選べるリスト・ボックスが欲しいわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そのフォルダーに アクセスする方法が 見当つかないんだが」</p> <p><a href="https://crieit.now.sh/upload_images/ea0a041bef1204b5a682d3d3f001cd8664aae2d0906c9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ea0a041bef1204b5a682d3d3f001cd8664aae2d0906c9.png?mw=700" alt="202307_maui_10-0138--resources-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 実行環境を見にいってしまうので、開発環境のプロジェクト・フォルダーの中とか見れないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 じゃあ <strong>ビルド前のイベント</strong> を書いたらいいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/7c9f2722698852d34f2af74db9a536b064aae3f49e81e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7c9f2722698852d34f2af74db9a536b064aae3f49e81e.png?mw=700" alt="202307_maui_10-0143--event-before-build-o2o0.png" /></a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/19267745/pre-build-events-in-visual-studio">Pre build Events in Visual Studio</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そこで ベッタリ Windows 依存しそうだしな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ ISO言語コードは ハード・コーディングかな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 国旗って フリー素材であるの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 同じ問題に突き当たっている人がいるぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/27733705/is-there-a-way-to-get-a-flag-image-from-a-c-sharp-cultureinfo">Is there a way to get a flag image from a C# CultureInfo?</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 WPF で作った人はいるみたいだな」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/point-platform/famfamfam-flags-wpf">famfamfam-flags-wpf</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 こういう センシティブな素材は デジタル庁 が作って欲しいものだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 国旗は後回しにし、ISO言語コードのドロップダウン・リストを<br /> ハードコーディングする方向で 次回 考えようぜ?」</p> <h1 id="📅 (2023-07-10 mon)日本語か、英語かを選べるドロップダウン・リストボックスを置いてくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-10+mon%EF%BC%89%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%8B%E3%80%81%E8%8B%B1%E8%AA%9E%E3%81%8B%E3%82%92%E9%81%B8%E3%81%B9%E3%82%8B%E3%83%89%E3%83%AD%E3%83%83%E3%83%97%E3%83%80%E3%82%A6%E3%83%B3%E3%83%BB%E3%83%AA%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E7%BD%AE%E3%81%84%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-10 mon)日本語か、英語かを選べるドロップダウン・リストボックスを置いてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 日本語か、英語かを選べるドロップダウン・リストボックスを置いてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 まず MAUI に ドロップダウン・リストボックスがあるのかどうかも 分からないしな。<br /> 調べないとな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 マイクロソフトの記事、映像がなくて どんな画面が出てくるのか 分からん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/picker">Microsoft > Picker</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 ユーチューブで探せばいいのよ」</p> <p>📺 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=fMB6LuEB-4o">How To Create Custom Picker Control (Dropdown Button) In .NET MAUI</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 作ってみるのが早いか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/picker">ピッカー</a></p> <p><a href="https://crieit.now.sh/upload_images/3ce6c9e3b6a968258e49c70d20bd78ff64ac0935d773c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3ce6c9e3b6a968258e49c70d20bd78ff64ac0935d773c.png?mw=700" alt="202307_maui_10-2234--picker-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こう書けば」</p> <p><a href="https://crieit.now.sh/upload_images/e230ee2a7af437b4ac713655b9ea9b8d64ac09b301e77.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e230ee2a7af437b4ac713655b9ea9b8d64ac09b301e77.png?mw=700" alt="202307_maui_10-2237--picker-appear-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ドロップダウン・リストボックスが出てきて……」</p> <p><a href="https://crieit.now.sh/upload_images/5db4effdd668dd4bc101fe77c18d93e864ac0a08e6db3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5db4effdd668dd4bc101fe77c18d93e864ac0a08e6db3.png?mw=700" alt="202307_maui_10-2238--picker-select-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 選べるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 それが欲しかったのよ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 初期状態で <code>ja-JP</code> を選んでおいてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/24ece786c0c6b5177e02a95dba32420c64ac0bc16701a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/24ece786c0c6b5177e02a95dba32420c64ac0bc16701a.png?mw=700" alt="202307_maui_10-2245--picker-initial-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ピッカーに 最初に選択されている値を表示することは できないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ、値が最初に選択されていることを ピッカーでどう表現するんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マイクロソフトの社員の知能が欠如していて それはできないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 初期値を表示するのって HTML の Select タグの Option 要素の <code>Selected</code> 属性でも指定できるのに、<br /> MAUI で 何でできないの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.w3schools.com/tags/att_option_selected.asp">HTML selected Attribute</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マイクロソフトの社員が欠陥だからだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 マイクロソフトの社員が欠陥だというところまでは 事実と認めましょう。<br /> それは置いておいて わたしたちは ピッカーに初期値を表示したいのよ。どうしたらいいのよ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ピッカーを使ってはいけないのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/63a7aaa26e38a47d1200977b4b665c9864ac0ee9a7879.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63a7aaa26e38a47d1200977b4b665c9864ac0ee9a7879.png?mw=700" alt="202307_maui_10-2259--loaded-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ContentPage</code> 要素に <code>Loaded</code> 属性を追加して……」</p> <p><a href="https://crieit.now.sh/upload_images/8722b79118cce5c71900814d6a6c8ce364ac0f5a79d6b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8722b79118cce5c71900814d6a6c8ce364ac0f5a79d6b.png?mw=700" alt="202307_maui_10-2301--code-behind-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コード・ビハインドで <code>picker.SelectedItem = "ja-JP";</code> とでも書いておけば……」</p> <p><a href="https://crieit.now.sh/upload_images/295cfbb038d9e6d0c52ca4cc574493ad64ac0fcee9e01.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/295cfbb038d9e6d0c52ca4cc574493ad64ac0fcee9e01.png?mw=700" alt="202307_maui_10-2303--picker-initial-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ページの表示完了時には ピッカーで <code>ja-JP</code> が選択されている、という状態にできるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 XAML だけでは モックアップも作れないんだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MVVM に対応できんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 トップページは MVVM にまだ対応してないんで、これから対応させるぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 あの 1.5日 ぐらい 工数かかったやつ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 でけた。 さっきのイベントハンドラも コード・ビハインドも要らんかった。<br /> MVVM だけでいけるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/abba981488671b08bc5cc6887acd6a7964ac2fc210aca.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/abba981488671b08bc5cc6887acd6a7964ac2fc210aca.gif?mw=700" alt="202307__maui__11-0117--translate.gif" /></a><br /> <a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 マイクロソフトの社員は欠陥じゃなかったんだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 まだ 首の皮一枚つながったぐらいだな」</p> <h1 id="📅 (2023-07-10 mon)タイル・パレット編集画面も多言語化しなさいよ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-10+mon%EF%BC%89%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8%E9%9B%86%E7%94%BB%E9%9D%A2%E3%82%82%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%8C%96%E3%81%97%E3%81%AA%E3%81%95%E3%81%84%E3%82%88">📅 (2023-07-10 mon)タイル・パレット編集画面も多言語化しなさいよ</a></h1> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 タイル・パレット編集画面も多言語化しなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あとから 多言語化しようとして レイアウトの変更が必要になったりしたら 大変だしな」</p> <p><a href="https://crieit.now.sh/upload_images/8b148790199ca6c52545071bc98a835c64ad2d9f7dab7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8b148790199ca6c52545071bc98a835c64ad2d9f7dab7.png?mw=700" alt="202307__maui__11-1921--item-source-o2o0.png" /></a></p> <p><a target="_blank" rel="nofollow noopener" href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png">ramen-tabero-futsu2.png</a><br /> 「 👆 この アイテム・リソースも ハード・コーディングじゃなくて<br /> どこかのファイルにまとめて、一元化したいんだが」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>App.xaml</code> に リソース・ディクショナリーを作って、それを読み込んだらどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 テンプレートは リソースにできるが、 データは リソースにできないんじゃないか?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/datatemplate?view=net-maui-7.0">データ テンプレート</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/resource-dictionaries?view=net-maui-7.0">リソース ディクショナリ</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>ItemSource</code> の使い方が分からん。調べても出てこないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 この前の多言語化のときの おっさんの You Tube に なんか まとまってんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 このおっさんは MAUI を作ったチームの中の人らしいぜ」</p> <p>📺 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/@jfversluis">Gerald Versluis</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ その動画を しばらく視聴する!」</p> <h1 id="📅 (2023-07-11 tue)寝てた"><a href="#%F0%9F%93%85+%EF%BC%882023-07-11+tue%EF%BC%89%E5%AF%9D%E3%81%A6%E3%81%9F">📅 (2023-07-11 tue)寝てた</a></h1> <p>Zzz</p> <h1 id="📅 (2023-07-12 wed)動画観るか~"><a href="#%F0%9F%93%85+%EF%BC%882023-07-12+wed%EF%BC%89%E5%8B%95%E7%94%BB%E8%A6%B3%E3%82%8B%E3%81%8B%EF%BD%9E">📅 (2023-07-12 wed)動画観るか~</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 動画 観るか~」</p> <h1 id="📅 (2023-07-13 thu)分かんね"><a href="#%F0%9F%93%85+%EF%BC%882023-07-13+thu%EF%BC%89%E5%88%86%E3%81%8B%E3%82%93%E3%81%AD">📅 (2023-07-13 thu)分かんね</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 英語で 何言ってるか 分かんないんだが」</p> <p>📺 <a target="_blank" rel="nofollow noopener" href="https://youtu.be/dlnNzjc7a60">Monkey クラス作成</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 猿を1匹記録するクラスを作るんだけど、例が JSON なのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 真似して 言語を1つ記録するクラスを作るかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a561ecf75fedbd0f2876ecf5384c7ca064afde255cbcf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a561ecf75fedbd0f2876ecf5384c7ca064afde255cbcf.png?mw=700" alt="202307__maui__13-2019--languagesCSV-o2o0.png" /></a></p> <pre><code class="csv">Name, ja-JP, en-US, </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 📂 <code>Releases/Raw</code> フォルダーの中に 📄 <code>languages.csv</code> ファイルを作ろうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その1行に対応する <code>Language</code> クラスを 📂 <code>Models</code> フォルダーの下に作りましょう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんか無駄臭いクラスだな……」</p> <p><a href="https://crieit.now.sh/upload_images/d00de6ef32df8b5e51d865790f2d137064afe095c3419.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d00de6ef32df8b5e51d865790f2d137064afe095c3419.png?mw=700" alt="202307__maui__13-2030--languageBuffer-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 プロパティ1個 置いとけばいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 C# に、 CSV をシリアライズする仕組みなんか あるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 人気があるのは これかしらねえ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/JoshClose/CsvHelper">CsvHelper</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 使い方を覚えるか……」</p> <p><a href="https://crieit.now.sh/upload_images/16db599db8b9823d4923d64649e576be64afe3cab6e1e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/16db599db8b9823d4923d64649e576be64afe3cab6e1e.png?mw=700" alt="202307__maui__13-2044--CsvHelper.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 NuGET でインストール」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Resources/Raw</code> フォルダーの中にあるファイルって どうやって読取るんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/file-system-helpers?tabs=windows#bundled-files">Microsoft > Bundled Files</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73374573/get-resources-raw-path-in-net-maui">Get Resources\Raw Path in .NET Maui</a></p> <p><a href="https://crieit.now.sh/upload_images/c84687b7916658888a22a76db5e3d8b564afed344b9b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c84687b7916658888a22a76db5e3d8b564afed344b9b8.png?mw=700" alt="202307__maui__13-2118--csvProj-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>None</code> とか <code>Remove</code> って何だぜ? 無いことになってんの?」</p> <p><a href="https://crieit.now.sh/upload_images/8b8012d9feaf9cde3d8f592f237f10d064afedf3691a5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8b8012d9feaf9cde3d8f592f237f10d064afedf3691a5.png?mw=700" alt="202307__maui__13-2127--buildAction-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビルド・アクションを何か変えたらいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 ビルド・アクションの説明はこれだが」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/visualstudio/ide/build-actions?view=vs-2022">Build actions</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 CSVファイルは どう配置すりゃいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/ba670541df5d857f2fa5153eafc0b9c764aff8db6710c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ba670541df5d857f2fa5153eafc0b9c764aff8db6710c.png?mw=700" alt="202307__maui__13-2214--copy-o2o0.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>出力ディレクトリーにコピー</code> を <code>新しい場合はコピーする</code> に変えたら、何が起こるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/25f3aa6bcf9f707a9e10f6f403faa31564affaee571da.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/25f3aa6bcf9f707a9e10f6f403faa31564affaee571da.png?mw=700" alt="202307__maui__13-2223--output.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんで2つあるんだ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コピーをしなければ <code>bin</code> フォルダーの下に <code>languages.csv</code> はなく、コピーすると2つある」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Visual Studio のコンフィグ・ファイルは無いの?<br /> インストール時に 作業ディレクトリーを設定できなければ、<br /> 設定ファイルの置き場所も 定まらなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 アプリケーション・フォルダーに置いてくれないのかだぜ?」</p> <h2 id="ItemSource 分からん"><a href="#ItemSource+%E5%88%86%E3%81%8B%E3%82%89%E3%82%93">ItemSource 分からん</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ いったん、言語のリストは ハード・コーディングするものとしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>ItemSource</code> って 何を設定できるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 恐らく、ビューモデルの 変更通知プロパティじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/83ca6072cc348d13955168c14d50efc664b0023e067d2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/83ca6072cc348d13955168c14d50efc664b0023e067d2.png?mw=700" alt="202307__maui__13-2253--localeIdList-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 変更通知プロパティを ふつうに作って」</p> <p><a href="https://crieit.now.sh/upload_images/20fc2b1f63dfe07f177e689b2cdbf2c964b007b66e603.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/20fc2b1f63dfe07f177e689b2cdbf2c964b007b66e603.png?mw=700" alt="202307__maui__13-2317--languagePicker-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ItemSource</code> に バインドすれば うまくいくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 どのページにも 言語ピッカー を置きたいときは、<br /> どのページにも <code>LanguageCollection</code> 変更通知プロパティーを作ることになるの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そうじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/6e331203deb69aaa1cd6a21804f9a78c64b00a0b4fff0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e331203deb69aaa1cd6a21804f9a78c64b00a0b4fff0.png?mw=700" alt="202307__maui__13-2327--localeIdCollection-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ロケールIdのリストなんか 途中で変わらないだろ。<br /> セッターのないプロパティとして、グローバル変数のように利用できるように <code>App</code> クラスに定義しようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/34b641d87f8642b6d11b16d3651b28a164b00a98085c8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/34b641d87f8642b6d11b16d3651b28a164b00a98085c8.png?mw=700" alt="202307__maui__13-2329--localeIdCollectionProperty-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 変更できない変更通知プロパティなら、グローバル変数を取得してても 不整合は起こらないだろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 これを ビューモデルに置きまくるのか」</p> <h2 id="配色変更"><a href="#%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4">配色変更</a></h2> <p><a href="https://crieit.now.sh/upload_images/d94466403f254cd4becc9453b870beb264b0172af2d9e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d94466403f254cd4becc9453b870beb264b0172af2d9e.png?mw=700" alt="202307__maui__14-0022--color.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 テキストボックスの白が目立つように 配色を変更し、<br /> ロケールIdのピッカーを 右上に置いたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 色を使いすぎてんじゃないの? 青だけでも3色もある」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイトルバーの色を 減らしてみるか……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI のスタイルシート的なものは どこにあんの?」</p> <p><a href="https://crieit.now.sh/upload_images/9fd3d12ba2fdf5731f88263d1f30261f64b01a0b82263.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9fd3d12ba2fdf5731f88263d1f30261f64b01a0b82263.png?mw=700" alt="202307__maui__14-0035--style-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 📂 <code>Resources/Styles</code> フォルダーの下にあるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8b11356442708784b9c0f99187be696364b01dce57f67.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8b11356442708784b9c0f99187be696364b01dce57f67.png?mw=700" alt="202307__maui__14-0052--style.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 色の主張を 抑えたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 テキストボックスの白と黒も きつい 気がするのよね」</p> <p><a href="https://crieit.now.sh/upload_images/46bbc26edc2997249f618f78a768795764b024baec7da.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/46bbc26edc2997249f618f78a768795764b024baec7da.png?mw=700" alt="202307__maui__14-0121--colors.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ダーク・モードのことを考えずに いじってしまった。<br /> どこか 壊してしまったかも知れないが 分からない。<br /> 勘弁しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/54f2a26c4fd4edc31e589d0406cec6e964b026c0ceea7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54f2a26c4fd4edc31e589d0406cec6e964b026c0ceea7.png?mw=700" alt="202307__maui__14-0130--top-page-style.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 トップページの配色も 白が無くなるように ゲインズボロ という色をベースに敷いたが<br /> ダークモードにしたら どうなるのか 知らん」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 もう寝ろ」</p> <h1 id="📅 (2023-07-14 fri)登録済みタイルがどれか分かるようにしてくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-14+fri%EF%BC%89%E7%99%BB%E9%8C%B2%E6%B8%88%E3%81%BF%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%8C%E3%81%A9%E3%82%8C%E3%81%8B%E5%88%86%E3%81%8B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-14 fri)登録済みタイルがどれか分かるようにしてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 登録済みタイルがどれか分かるようにしてくれだぜ。 例えば……」</p> <p><a href="https://crieit.now.sh/upload_images/7d8071f7624a97c9a7f319d4e71d975164b12bccce94f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7d8071f7624a97c9a7f319d4e71d975164b12bccce94f.png?mw=700" alt="202307__maui__14-2002--selected-tiles.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 こんなふうに」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイルは 重なって登録されることは あるのかだぜ? 例えば……」</p> <p><a href="https://crieit.now.sh/upload_images/d0973b8bfcf19c8c50ee4a029de5a7cf64b12ce62eec6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d0973b8bfcf19c8c50ee4a029de5a7cf64b12ce62eec6.png?mw=700" alt="202307__maui__14-2006--selected-tiles.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 上図 4~9」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 あるある。 タイル・セットは それ自体が パレットのような配置をしているのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイル・セットと パレットは 意義を分けたいな……」</p> <p><a href="https://crieit.now.sh/upload_images/350e067513a3901402142ff25e5f1bc864b12e6bc27cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/350e067513a3901402142ff25e5f1bc864b12e6bc27cb.png?mw=700" alt="202307__maui__14-2014--selected-tile-atoms.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ロジカルには こうなるはず」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 上図の 7 を範囲選択するの 難しくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲリマンダー(Gerrymander)みたいな形や、飛び地が必要かどうかも 洗い出したいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ひとまず 矩形だけでいいのではないか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 被りは有りで 話しを進めるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b5eeda681cc038fda3b56f258c81a0e964b136cc4348d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b5eeda681cc038fda3b56f258c81a0e964b136cc4348d.png?mw=700" alt="202307__maui__14-2049--debug-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか ファイルにいっぱい保存されているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 同じ矩形を 何個も登録してるわねえ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ファイルのバリデーターを作るべきだが、とりあえず 手作業で直せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fb388da32df07d9ca50f009b8d9ab3ba64b137d3ddf06.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb388da32df07d9ca50f009b8d9ab3ba64b137d3ddf06.png?mw=700" alt="202307__maui__14-2055--excel.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Excel で CSVファイルを開いたら 文字化けしてるんだが……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 BOM付きの UTF-8 じゃないと Shift-JIS と判定されてるわよ」</p> <p><a href="https://crieit.now.sh/upload_images/d65a7f199b116097a0f23ea6bd6478c264b13868f1849.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d65a7f199b116097a0f23ea6bd6478c264b13868f1849.png?mw=700" alt="202307__maui__14-2058--excel-bom.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 BOM 付きの UTF-8 にしたら 文字化けが直った!」</p> <p><a href="https://crieit.now.sh/upload_images/03b97a043d2a814b27d4d51776daf9de64b1392fc2678.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03b97a043d2a814b27d4d51776daf9de64b1392fc2678.png?mw=700" alt="202307__maui__14-2101--excel-id.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こういう感じのデータを、エディター上で どう表示するかだよな」</p> <h2 id="IDrawableインターフェース実装クラスの Draw関数にビューモデルからどうやって値を渡すんだぜ?"><a href="#IDrawable%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E5%AE%9F%E8%A3%85%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE+Draw%E9%96%A2%E6%95%B0%E3%81%AB%E3%83%93%E3%83%A5%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8B%E3%82%89%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E5%80%A4%E3%82%92%E6%B8%A1%E3%81%99%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">IDrawableインターフェース実装クラスの Draw関数にビューモデルからどうやって値を渡すんだぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/93a741b6886f828f36eb9b8c263e749764b13a8501fed.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/93a741b6886f828f36eb9b8c263e749764b13a8501fed.png?mw=700" alt="202307__maui__14-2105--idrawable-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 IDrawableインターフェース実装クラスの Draw関数にビューモデルからどうやって値を渡すんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75988921/in-net-maui-how-do-i-pass-variables-to-a-graphicsview-drawable-in-a-contentvie">In .NET MAUI, how do I pass variables to a GraphicsView.Drawable in a ContentView</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73997548/how-to-pass-variable-data-into-net-maui-graphicsview-canvas">How to pass variable data into .NET MAUI GraphicsView canvas</a></p> <p><a href="https://crieit.now.sh/upload_images/7f267f31f1eac286d9906f0bfdb7006264b13e830092e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7f267f31f1eac286d9906f0bfdb7006264b13e830092e.png?mw=700" alt="202307__maui__14-2123--bindableProperty-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんだか分からないが 束縛可能プロパティ の書き方のパターンを なぞろうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/7b19a5d23a23ccbc6fe9c36e3b2a339164b13fb416675.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b19a5d23a23ccbc6fe9c36e3b2a339164b13fb416675.png?mw=700" alt="202307__maui__14-2128--tile-set-drawing-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さっきの IDrawing 実装クラスは、リソースとして ContentPage に読み込まれて……」</p> <p><a href="https://crieit.now.sh/upload_images/9f49fc4bc97e33ccafc593cc5a6363bb64b1403a6ff2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9f49fc4bc97e33ccafc593cc5a6363bb64b1403a6ff2c.png?mw=700" alt="202307__maui__14-2131--graphics-view-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 GraphicsView 要素で使われているな」</p> <p><a href="https://crieit.now.sh/upload_images/38faac0a3ac4cb0d934e751d2236147864b142beee6c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/38faac0a3ac4cb0d934e751d2236147864b142beee6c3.png?mw=700" alt="202307__maui__14-2141--drawable-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 それを いったん、こう書きかえるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 これでいいなら ビュー・モデルの変更通知プロパティを、<br /> IDrawable クラスの束縛可能プロパティに 渡すことができそうねえ」</p> <p><a href="https://crieit.now.sh/upload_images/16af772099139d0b46ff32e68a019b6f64b144138b6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/16af772099139d0b46ff32e68a019b6f64b144138b6c6.png?mw=700" alt="202307__maui__14-2147--propertyChanged-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビュー・モデルに 変更通知プロパティを書いて……」</p> <p><a href="https://crieit.now.sh/upload_images/cf476ad48ca59f95a0d4333b65cd92e364b144836cd1a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf476ad48ca59f95a0d4333b65cd92e364b144836cd1a.png?mw=700" alt="202307__maui__14-2149--view-binding-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューで 変更通知プロパティを束縛」</p> <p><a href="https://crieit.now.sh/upload_images/04cc2113bd5592a48c5694f5b73c91a864b14516055e5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/04cc2113bd5592a48c5694f5b73c91a864b14516055e5.png?mw=700" alt="202307__maui__14-2151--binding-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 IDrawing 実装クラスは 束縛可能プロパティに値が入ってくるんで<br /> グローバル変数を1つ 取り除くことに成功だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 IDrawing 実装クラスから グローバル変数を取り除いていきましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 つら……」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ヌル参照例外が出て 動かなくなった つら……」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 さらに まずいことに 線の太さが 0 になり、<br /> for 文で 横に 0 移動しながら 縦線を引く 無限ループに陥った……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 束縛プロパティの初期化が始まる前に Draw メソッドが呼び出されているのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どっちが頭で どっちが尻尾問題で、<br /> IDrawable 実装クラスのプロパティが、ビュー・モデルのプロパティーを上書きしてくることはないだろうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>Way</code> を指定したらいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/64aba69ffa7b03a8e90583f7895ec1dc64b15bbdbb9f6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/64aba69ffa7b03a8e90583f7895ec1dc64b15bbdbb9f6.png?mw=700" alt="202307__maui__14-2328--sync-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そもそも 変更通知が届いてないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 グローバル変数が いつ変更されたとか、ビューモデルには 分からないからな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グローバル変数を 使わないようにしたが、束縛プロパティが 渡せていないぜ」</p> <h2 id="束縛プロパティを練習しようぜ?"><a href="#%E6%9D%9F%E7%B8%9B%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%82%92%E7%B7%B4%E7%BF%92%E3%81%97%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">束縛プロパティを練習しようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 <code>GraphicsView</code> の <code>Drawable</code> クラスの <code>Draw</code> 変数へ、プロパティを渡すだけのサンプル・プログラムを組んでみようぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/MAUI-BindableProperty-Practice">Git Hub > Muzudho > MAUI-BindableProperty-Practice</a></p> <p><a href="https://crieit.now.sh/upload_images/f3a2a0c4d42b71e8974ac497b0005b2264b17ead0a6bd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f3a2a0c4d42b71e8974ac497b0005b2264b17ead0a6bd.png?mw=700" alt="202307__maui__15-0157--practice.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 しばらく 練習するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/853a1facee910c2489e8cbc52825b12f64b181a85572c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/853a1facee910c2489e8cbc52825b12f64b181a85572c.png?mw=700" alt="202307__maui__15-0209--binding-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Binding</code> したら 動かないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>Bindable</code> なプロパティなのに <code>Binding</code> したら動かないなんてことが あるのかしら?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 よく読んでくれだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/bindable-properties">Bindable properties</a></p> <p><a href="https://crieit.now.sh/upload_images/e7ff2c55980650203eec45ba5a69ae0c64b18328bb97d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e7ff2c55980650203eec45ba5a69ae0c64b18328bb97d.png?mw=700" alt="202307__maui__15-0216--onBinding-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 確かに 変更前と、変更後の値を取れて 気が利くが、<br /> そういうの 自動でやってくれるわけじゃないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いや、取れてないぜ。 <code>Binding</code> したものは 取れてない」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 もっと調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73691579/binding-not-working-on-custom-bindableproperty">Binding not working on custom BindableProperty</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>GraphicsView</code> はビュー・モデルを持ってないから <code>Simple30</code> を <code>Binding</code> しようとしても持ってないんで、<br /> 親コンポーネントのビュー・モデルを指せ、ということらしい」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 どうやって」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 もっと調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75466143/net-maui-binding-a-contentview-to-parent-viewmodel-mvvm">.NET Maui Binding a contentview to parent ViewModel MVVM</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/contentview?view=net-maui-7.0#define-the-ui">ContentView</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>ContentPage</code> 使ってるのに、 <code>ContentView</code> の説明されても 利用できないぜ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>よし、分かった!</strong>」</p> <p><a href="https://crieit.now.sh/upload_images/0d3a889a8f9621ec7aff99e57d533f1164b18c33cef22.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0d3a889a8f9621ec7aff99e57d533f1164b18c33cef22.png?mw=700" alt="202307__maui__15-0255--openBindingContext-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューの コード・ビハインドに、<br /> バインディング・コンテキストを公開する パブリック・メソッドを書くぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そんなことをしていいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MVVMが 崩壊したんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/b86bc30d935c15388b3b99958119f5af64b18cdc5e318.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b86bc30d935c15388b3b99958119f5af64b18cdc5e318.png?mw=700" alt="202307__maui__15-0258--contentPage-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューの <code>ContentPage</code> 要素に、 <code>x:Name</code> 属性を付けて、その値を <code>thisContentPage</code> とでもしておくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e5bc40fa4ec82708b5047b6c6264e6ab64b18da19c950.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e5bc40fa4ec82708b5047b6c6264e6ab64b18da19c950.png?mw=700" alt="202307__maui__15-0300--bindingContext-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで <code>MainPageVM</code> プロパティが公開されてるんで、そのメンバーにアクセスできるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 この記事の 2回目の トリック・コードだな」</p> <p><a href="https://crieit.now.sh/upload_images/a71b79b9e16e64f1d94ae16b8a2722e764b18e52d03f4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a71b79b9e16e64f1d94ae16b8a2722e764b18e52d03f4.png?mw=700" alt="202307__maui__15-0304--viewModel.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ViewModel はこんな感じ」</p> <p><a href="https://crieit.now.sh/upload_images/3e6c2d322833f685fd2f68778842006264b18e98573eb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e6c2d322833f685fd2f68778842006264b18e98573eb.png?mw=700" alt="202307__maui__15-0305--drawLine.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 線も引けてるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 バインディング・コンテキストを公開しているのが 気になるなあ」</p> <p><a href="https://crieit.now.sh/upload_images/a244f851dcf824be2539f74fc67fc17464b1934ec2c45.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a244f851dcf824be2539f74fc67fc17464b1934ec2c45.png?mw=700" alt="202307__maui__15-0325--bugFix.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 グローバル変数を減らし、 BindableProperty を使って GraphicsCanvas の Drawable 属性のクラスの<br /> Draw メソッドに プロパティ値を渡すことに成功したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ViewModel を public にするのは心理的抵抗がある。<br /> 公開するのは interface にして、プロパティだけ公開しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 かしこいな」</p> <h1 id="📅 (2023-07-15 sat)タイル・セット上を矩形で塗りつぶしてくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-15+sat%EF%BC%89%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%82%BB%E3%83%83%E3%83%88%E4%B8%8A%E3%82%92%E7%9F%A9%E5%BD%A2%E3%81%A7%E5%A1%97%E3%82%8A%E3%81%A4%E3%81%B6%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-15 sat)タイル・セット上を矩形で塗りつぶしてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル・セット上を矩形で塗りつぶしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キャンバスで描画するのか、画像オブジェクトでピクセルを直接描画するのがいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 インプレース(In-place)で クロップ(Crop)と コピー(Copy)を1ステップでできないと<br /> 実行速度が遅くなるんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画像は <code>Microsoft.Maui.Graphics.IImage</code> というインターフェースに抽象化されていて、<br /> とても 高速に画像を描画することを指向しておらず、<br /> マルチ・プラットフォームで一番性能の低いマシンで動くように考慮されてる護送船団方式の雰囲気を感じるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 性能 上げたけりゃ MAUI なんか使うなだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ぐぬぬぬぬ!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 この IImage インスタンスは あくまで 画像ファイルを指さしているだけで、<br /> 描画をするときは GraphicsCanvas を使えという思想なのかもしれない」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画面の描画前に 画像の前処理を 終わらせておきたいことなんて<br /> いっぱいあると思うのに<br /> キャンバスを用意してから 画像処理しなくちゃいけないのね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 画像処理 したけりゃ MAUI なんか使うなだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ふむむむむ!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 画面上に キャンバスを2層に重ねて表示することにして、<br /> 元画像を下レイヤーに、作業用レイヤーを上レイヤーに置いて<br /> 作業用レイヤーに いろんな加工をしていくことにしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 キャンバスの練習を先にしておいた方が いいんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 リポジトリ―は作っておいたぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/MAUI-IDrawable-Practice">GitHub > Muzudho > MAUI-IDrawable-Practice</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 変更通知プロパティを バインディング しただけでは<br /> <code>Draw</code> は呼び出されないのか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 GraphicsView に <code>Draw</code> メソッドの呼び出しを要求するの、どうやればいい?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/graphicsview">GraphicsView</a></p> <p><a href="https://crieit.now.sh/upload_images/1d8ed24747e4c1be07f56b09912b1dbe64b24c74b4cc5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d8ed24747e4c1be07f56b09912b1dbe64b24c74b4cc5.png?mw=700" alt="202307__maui__15-1635--graphicsView-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 GraphicsView 要素に <code>x:Name</code> 属性を使って名前を付けて……」</p> <p><a href="https://crieit.now.sh/upload_images/09c42f57d55a9e8b2f12484a85e5c2b664b24cf13ed93.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/09c42f57d55a9e8b2f12484a85e5c2b664b24cf13ed93.png?mw=700" alt="202307__maui__15-1637--Invalidate-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コード・ビハインドで GraphicsView 要素の <code>Invalidate( )</code> メソッドを呼び出せば いいわけかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ビューモデルで <code>Invalidate( )</code> メソッドは呼び出せないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 画面の更新は ビューモデルの仕事では 無いのでは」</p> <p><a href="https://crieit.now.sh/upload_images/06fa6bf19f71046f426dc1af9a51265e64b25023bd677.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/06fa6bf19f71046f426dc1af9a51265e64b25023bd677.png?mw=700" alt="202307__maui__15-1651--Drawing.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よっしゃ 2D描画にも 慣れてきたぜ」</p> <h2 id="1つのキャンバスで何でも描画するのと、複数のキャンバスに分けるの、どっちが得?"><a href="#%EF%BC%91%E3%81%A4%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%A7%E4%BD%95%E3%81%A7%E3%82%82%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A8%E3%80%81%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%AB%E5%88%86%E3%81%91%E3%82%8B%E3%81%AE%E3%80%81%E3%81%A9%E3%81%A3%E3%81%A1%E3%81%8C%E5%BE%97%EF%BC%9F">1つのキャンバスで何でも描画するのと、複数のキャンバスに分けるの、どっちが得?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 お父んは タイル・カーソルと グリッドと タイル・セット画像を 分けて 置いているが、<br /> そのようにするのと、1つのキャンバスの上に全部描くのとでは、どっちが得なんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何も考えなければ 1つのキャンバスの上に全部描くのが お得だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 グリッドを分けた理由は?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 グリッドは ヴィジブル(Visible;可視性)を オン・オフ したいときがあるだろ。<br /> フラグ1個だけで できるというメリットを生かしたい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ライフ・サイクルに似た考え方か」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ カラード・マップ(Colored Map)のキャンバスも 1つ用意したいわねえ」</p> <h2 id="Draw が呼び出されるのが Loaded より早い"><a href="#Draw+%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%8C+Loaded+%E3%82%88%E3%82%8A%E6%97%A9%E3%81%84">Draw が呼び出されるのが Loaded より早い</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>GraphicsView</code> の初期設定をする前に <code>Draw</code> が呼び出されているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 イベントの呼び出し順序の話しは 書いてないなあ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/graphics/draw">グラフィカル オブジェクトを描画する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あっ、違うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 束縛プロパティの 返り値の型の指定を 間違えていた」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 設定ミスは エラー・メッセージを出してくれないからなあ」</p> <p><a href="https://crieit.now.sh/upload_images/378cf40a3e682c726d0c15e43f40acf164b26651d31bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/378cf40a3e682c726d0c15e43f40acf164b26651d31bc.png?mw=700" alt="202307__maui__15-1826--GrayRectangle.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 薄いグレーを被せてみたが、<br /> どうやっても 視認性が悪くならないか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 もとの画像の 明度を下げてみたら?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 明度を下げるとか 上げるとか 説明無いぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/image">Microsoft > Image</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ピクセルに アクセスする手段 無いの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 スキア・シャープ(Skia Sharp)というものが あるそうだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73925906/net-maui-create-imagesource-from-pixel-data">.Net Maui - Create ImageSource from pixel data</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何だぜ それ まだまだ勉強か……」</p> <h2 id="SkiaSharp を調べようぜ?"><a href="#SkiaSharp+%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">SkiaSharp を調べようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 リポジトリは作っておいたぜ、勉強しろ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/MAUI-SkiaSharp-Practice">GitHub > Muzudho > MAUI-SkiaSharp-Practice</a></p> <p><a href="https://crieit.now.sh/upload_images/cfbfe1b2a3377106f93cfd9a394cb5e264b2726c60505.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cfbfe1b2a3377106f93cfd9a394cb5e264b2726c60505.png?mw=700" alt="202307__maui__15-1917--SkiaSharp.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず <code>SkiaSharp</code> をインストールするか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 スキア・シャープの使い方の説明が無いぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/mono/SkiaSharp">GitHub > SkiaSharp</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 サンプル・プログラムを直接読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/mono/SkiaSharp/blob/main/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs">SkiaSharp/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 GraphicsView じゃないんだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 画像処理っぽいことしてるが、学習コストが高そうだ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75625039/understanding-skiasharp-and-maui-coordinates">Understanding SkiaSharp and Maui Coordinates</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 ここに ピクセル単位でのアクセスの仕方が書いてあるのでは?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/xamarin/xamarin-forms/user-interface/graphics/skiasharp/bitmaps/pixel-bits">SkiaSharp ビットマップ ピクセル ビットへのアクセス</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>まあ、午前中に独習してきた GraphicsView は使わないというのは 分かったが……</strong>」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 将来的にやろうとしていることを考えると、 <code>GraphicsView</code> では限界がくるんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/52bd1b578a12dd78106f1563269b2e6b64b27a18e5e87.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/52bd1b578a12dd78106f1563269b2e6b64b27a18e5e87.png?mw=700" alt="202307__maui__15-1950--SkiaSharpViews.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>SkiaSharp.Views.Maui.Controls</code> をインストールしてみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/8616a34a676b5b9e2bb9ec33eb260a1964b27b85ea517.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8616a34a676b5b9e2bb9ec33eb260a1964b27b85ea517.png?mw=700" alt="202307__maui__15-1956--namespace-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 xml の namespace として<br /> <code>xmlns:skia="clr-namespace:SkiaSharp.Views.Maui.Controls;assembly=SkiaSharp.Views.Maui.Controls"</code><br /> を書き足すぜ」</p> <p><a href="https://crieit.now.sh/upload_images/64a30596cc47acee4c6ca591d8417dfe64b27ea57027b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/64a30596cc47acee4c6ca591d8417dfe64b27ea57027b.png?mw=700" alt="202307__maui__15-2009--skCanvasView--o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで <code>skia:SKCanvasView</code> を使えるようになったはずだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 使えなかった。エラーが出た」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 <code>SkiaSharp.Views.Maui.Core</code> はインストールしてんの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.nuget.org/packages/SkiaSharp.Views.Maui.Core/">SkiaSharp.Views.Maui.Core</a></p> <p><a href="https://crieit.now.sh/upload_images/823ae76b0e1f3af321b78730157686cc64b2883b9111e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/823ae76b0e1f3af321b78730157686cc64b2883b9111e.png?mw=700" alt="202307__maui__15-2050--skiaSharpViews.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 どれをインストールすりゃいいのか 分からんな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 コマンドラインからやってみるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.nuget.org/packages/SkiaSharp.Views.Maui.Core/">SkiaSharp.Views.Maui.Core</a></p> <pre><code class="shell">dotnet add package SkiaSharp.Views.Maui.Core --version 2.88.3 </code></pre> <p><a href="https://crieit.now.sh/upload_images/ba561d117bb3f230187bf5542de6aac664b28dcb8891a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ba561d117bb3f230187bf5542de6aac664b28dcb8891a.png?mw=700" alt="202307__maui__15-2112--command-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/59072cfe07195418bab0da360725326064b28dfbdb72e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59072cfe07195418bab0da360725326064b28dfbdb72e.png?mw=700" alt="202307__maui__15-2115--mojibake.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なぜ文字化けする?」</p> <h2 id=".NET Core の文字化けに対応しろ"><a href="#.NET+Core+%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%82%8D">.NET Core の文字化けに対応しろ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ダメ元で 試してみるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://kagasu.hatenablog.com/entry/2016/12/07/004813">.NET Coreのコンソールで日本語が文字化けする</a></p> <pre><code class="cs"> // NuGET のパッケージ・マネージャー・コンソールの文字化けに対応を期待したが効果なし Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ダメだった」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://social.msdn.microsoft.com/Forums/ja-JP/a549136a-21cf-49f2-86b9-f1f08c6beec5/12497124831246512540124721251012493124721251512467125311247712?forum=vsgeneralja">パッケージマネジャコンソールにおける dotnet コマンド出力の文字化け</a></p> <pre><code>dotnet --help </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ヘルプも文字化けしている」</p> <pre><code>PM> chcp 現在のコード ページ: 932 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マイクロソフトの S-JIS ではダメだ」</p> <pre><code>PM> chcp 65001 Active code page: 65001 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 コードページを 65001 に変えたったが ダメだ」</p> <h2 id="マイクロソフトのスキアを入れてみようぜ?"><a href="#%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E3%81%AE%E3%82%B9%E3%82%AD%E3%82%A2%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">マイクロソフトのスキアを入れてみようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/66438fe70ba4b27ef88c9a65c64556ac64b293499ec5f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/66438fe70ba4b27ef88c9a65c64556ac64b293499ec5f.png?mw=700" alt="202307__maui__15-2137--microsoftMauiGrahicsSkia.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 方法も無いし、 <code>Microsoft.Maui.Graphics.Skia</code> でもインストールしてみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 もう 思考が停止してるの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 インストールしたところで 何も起こらん」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 思考をしなさい!」</p> <h2 id="キャンバスではなく、イメージの方を調べようぜ?"><a href="#%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%80%81%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E6%96%B9%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">キャンバスではなく、イメージの方を調べようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 描画回りは 対応が遅れてるのかも知らん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qreat.tech/2042/">.NET MAUIによるクロスプラットフォーム2D描画(その1)</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 MAUI は SkiaSharp をベースに使ってるんだろう」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.graphics.skia.skiacanvas?view=net-maui-7.0">SkiaCanvas Class</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 キャンバスではなく、イメージの方に ピクセルにアクセスするメソッドがあるんじゃないの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.graphics.skia.skiaimage?view=net-maui-7.0">SkiaImage Class</a></p> <p><a href="https://crieit.now.sh/upload_images/5dfa99858b8dfc9ef317c07811c3f95964b299b816a85.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5dfa99858b8dfc9ef317c07811c3f95964b299b816a85.png?mw=700" alt="202307__maui__15-2205--asBytes.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 イメージは バイトに分解できるのか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ バイトは イメージに 構成できるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 調べろだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/converters/byte-array-to-image-source-converter">ByteArrayToImageSourceConverter</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/75482399/maui-how-to-draw-image-from-byte-on-maui">MAUI: How to draw image from byte[] on MAUI</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 画像は バイトに分解できるけど、 バイトは 画像に構成できないのか」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 じゃあ バイト配列を 直に PNG画像として出力すればいいんじゃないの?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/32203347/create-a-png-from-an-array-of-bytes">Create a PNG from an array of bytes</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルの書出しと 読込みたいな 重い処理やるんだったら なんのための画像処理か 分からんが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 MAUI で画像処理しようとするのが 間違いなのでは?」</p> <h2 id="アホな記事ばかり"><a href="#%E3%82%A2%E3%83%9B%E3%81%AA%E8%A8%98%E4%BA%8B%E3%81%B0%E3%81%8B%E3%82%8A">アホな記事ばかり</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 公式の記事を なぞってるだけじゃないか。アマチュアのコピー記事が」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.telerik.com/blogs/handling-images-dotnet-maui-graphics">Handling Images With .NET MAUI Graphics</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 真実に対して 怒るなだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 明度を下げたいとか、特定の色だけを抽出したいとか、そういう知能はないのかだぜ、記事を書くやつは?<br /> 知能だけではない 意志も無い。<br /> インターネット上のアマチュア記事は 公式のダウングレードばかり 情報を増やさない。<br /> 筆を折れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 スキアシャープのエラーを取るしかなくない?」</p> <h2 id="再び SkiaSharp を調べようぜ?"><a href="#%E5%86%8D%E3%81%B3+SkiaSharp+%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%88%E3%81%86%E3%81%9C%EF%BC%9F">再び SkiaSharp を調べようぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/e7670c8fe3ee863ce2710245406f39e264b2a3621ccf8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e7670c8fe3ee863ce2710245406f39e264b2a3621ccf8.png?mw=700" alt="202307__maui__15-2245--skia.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず、NuGET で 正しい SkiaSharp をパッケージ単位でダウンロードして<br /> アセンブリを使えるようにするところからだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a0767f95d8cffe4e63a33061becfde4564b2a5d331a71.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a0767f95d8cffe4e63a33061becfde4564b2a5d331a71.png?mw=700" alt="202307__maui__15-2257--skiaSharp.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 だから この <code>SkiaSharp</code> パッケージを入れておくだけで 充分なはずなんだが」</p> <p><a href="https://crieit.now.sh/upload_images/1311b5f2a6c406a0b6e5c14a48f5081464b2a66727c33.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1311b5f2a6c406a0b6e5c14a48f5081464b2a66727c33.png?mw=700" alt="202307__maui__15-2259--skiaSharpError.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 だから この <code>SkiaSharp</code> に <code>SkiaSharp.Views</code> は入ってないようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/02f6b5ca15b207423ac0432eb6e42c0564b2a6f0603a2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/02f6b5ca15b207423ac0432eb6e42c0564b2a6f0603a2.png?mw=700" alt="202307__maui__15-2301--skiaSharpViews.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>SkiaSharp.Views</code> パッケージもインストールしてみるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ce952f97e216d59a341e68d6bdee5b6f64b2a73b86064.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ce952f97e216d59a341e68d6bdee5b6f64b2a73b86064.png?mw=700" alt="202307__maui__15-2303--skiaSharpViewsMaui.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 だから この <code>SkiaSharp.Views</code> には <code>SkiaSharp.Views.Maui</code> は入ってないようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/581e5969324ad116c87ae1fe9ee4cc7164b2a7d997d02.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/581e5969324ad116c87ae1fe9ee4cc7164b2a7d997d02.png?mw=700" alt="202307__maui__15-2305--skiaSharpViewsMauiCore.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 似たような名前のパッケージが並んでいて困るが<br /> とりあえず <code>SkiaSharp.Views.Maui.Core</code> パッケージを インストールしてみるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/15acd12cb408685a6fa8238ff7cea52d64b2a83adf46d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/15acd12cb408685a6fa8238ff7cea52d64b2a83adf46d.png?mw=700" alt="202307__maui__15-2307--skiaSharpViewsMauiCoreError.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>SkiaSharp.Views.Maui.Core</code> には <code>SkiaSharp.Views.Maui.Controls</code> は入ってないようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/53bafb637d02e4250a530b804d77e64064b2a89213d98.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/53bafb637d02e4250a530b804d77e64064b2a89213d98.png?mw=700" alt="202307__maui__15-2308--skiaSharpViewsMauiControl.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ <code>SkiaSharp.Views.Maui.Controls</code> パッケージを インストールしてみるかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/43704a877fb888a3d46ce23ca147311264b2a8d91aafd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/43704a877fb888a3d46ce23ca147311264b2a8d91aafd.png?mw=700" alt="202307__maui__15-2310--build.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビルドは通ったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ae02c80014bc0d1c460b02b7476d2a7e64b2a9270a6d3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ae02c80014bc0d1c460b02b7476d2a7e64b2a9270a6d3.png?mw=700" alt="202307__maui__15-2311--run-error.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 実行すると 立ち上がる前にエラー」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 その理由を調べなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>UnhandledException</code> というのは ライブラリが 例外が起こっているのにキャッチせずに終了したということだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 だから、その理由」</p> <p><a href="https://crieit.now.sh/upload_images/cf2c740bc410f4ea23a7aacfdb2ab20364b2aa3d7b257.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf2c740bc410f4ea23a7aacfdb2ab20364b2aa3d7b257.png?mw=700" alt="202307__maui__15-2315--catastrophic-failure.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 カタストロフィック(Catastrophic;大災害的)な フェイラー(Failure;失敗)だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんのことだが 分からんな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 同じ不具合に突き当たっている人がいるわよ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/mono/SkiaSharp/issues/2139">[BUG] MAUI: SKCanvasView crash, unable to display SKBitmap directly #2139</a></p> <p><a href="https://crieit.now.sh/upload_images/d154ab4f79ebdd771797b1edd3e8f85f64b2ac8a70cd3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d154ab4f79ebdd771797b1edd3e8f85f64b2ac8a70cd3.png?mw=700" alt="202307__maui__15-2325--help.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/b25e2a5347965cd4dfeaa7d0c88d5c6464b2ada31d755.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b25e2a5347965cd4dfeaa7d0c88d5c6464b2ada31d755.png?mw=700" alt="202307__maui__15-2329--builder-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 どこにも説明が無いが 謎のコードを書き……」</p> <p><a href="https://crieit.now.sh/upload_images/ee117e23ce433867136284430c63940864b2ae9b5daba.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ee117e23ce433867136284430c63940864b2ae9b5daba.png?mw=700" alt="202307__maui__15-2334--run.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 実行するとこまでは イケた」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ようやく 画像処理のスタートラインに経ったな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ SkiaSharp のサンプル・プログラムを真似たろ」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/825157a513281fa57e45c6684e56ea2964b2b23e1f934.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/825157a513281fa57e45c6684e56ea2964b2b23e1f934.png?mw=700" alt="202307__maui__15-2349--skiaSharp.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 文字が出た」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ 文字の代わりに 画像を表示してみなさいよ」</p> <h2 id="SkiaSharp で画像を表示しろだぜ"><a href="#SkiaSharp+%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%82%8D%E3%81%A0%E3%81%9C">SkiaSharp で画像を表示しろだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 画像の用意の仕方が分からん」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/skiasharp.skimage?view=skiasharp-2.88">Microsoft > SKImage Class</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 SKBitmap なら、ストリームから作れるんじゃないか?<br /> SKImage は、SKBitmap を読込むメソッドを持っているだろ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/skiasharp.skbitmap?view=skiasharp-2.88">Microsoft > SKBitmap</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/dotnet/api/skiasharp.skbitmap.decode?view=skiasharp-2.88#skiasharp-skbitmap-decode%28system-io-stream%29">Microsoft > Decode(Stream)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そのサンプル・プログラムが欲しい」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 Xamarine の利用者は SkiaSharp に詳しいらしいぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/basics/bitmaps">Bitmap Basics in SkiaSharp</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 知らん世界だ。真似するかあ」</p> <p><a href="https://crieit.now.sh/upload_images/95459425904efb14b781bb3268184d2564b2bc362fb50.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/95459425904efb14b781bb3268184d2564b2bc362fb50.png?mw=700" alt="202307__maui__16-0032--SKBitmap.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 おー、描画できたぜ。<br /> 基本的にラスター画像は SKBitmap で記憶しておいて、<br /> 表示するときは SKBitmap を SKImage でラッピングすればいいわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ あとは ラスター画像の容量で 画像処理できるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 もう寝なさい」</p> <h1 id="📅 (2023-07-16 sun)画像の明度を下げてくれだぜ"><a href="#%F0%9F%93%85+%EF%BC%882023-07-16+sun%EF%BC%89%E7%94%BB%E5%83%8F%E3%81%AE%E6%98%8E%E5%BA%A6%E3%82%92%E4%B8%8B%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">📅 (2023-07-16 sun)画像の明度を下げてくれだぜ</a></h1> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 画像の明度を下げてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 愚直に 1ピクセルずつ 変更するコードなら すぐ書けそうだが、<br /> 並列処理に有利な コードの書き方が 分からんな……」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 これを読みなさい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/xamarin/xamarin-forms/user-interface/graphics/skiasharp/bitmaps/pixel-bits">SkiaSharp ビットマップ ピクセル ビットへのアクセス</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マイクロソフトの記事の コード・サンプルのリンク クリックしても<br /> コード・サンプルが置いてないの 何でなんだろな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 実行速度の検証は iOS、 Android、 UWP で行われていて、 Windows が含まれていないのは何でだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 Windows 上で Windows 向けのプログラム書いたら有利なの明らかだからよ。<br /> UWP というのが Windows なのよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 unsafe 使って uint のポインター型を使うのが そら早そうだが、<br /> unsafe を使いだしたら C# というより C言語だしな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 画像処理の高速化というのは アンセーフなものでは?」</p> <pre><code class="csharp">SKBitmap FillBitmapUintPtrColor(out string description, out int milliseconds) { description = "GetPixels SKColor"; SKBitmap bitmap = new SKBitmap(256, 256); stopwatch.Restart(); IntPtr pixelsAddr = bitmap.GetPixels(); unsafe { for (int rep = 0; rep < REPS; rep++) { uint* ptr = (uint*)pixelsAddr.ToPointer(); for (int row = 0; row < 256; row++) for (int col = 0; col < 256; col++) { *ptr++ = (uint)new SKColor((byte)col, 0, (byte)row); } } } milliseconds = (int)stopwatch.ElapsedMilliseconds; return bitmap; } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 先頭から末尾まで 色を置き換えながら シーケンスしてるだけだ やってることは簡単だ<br /> 真似るか」</p> <p><a href="https://crieit.now.sh/upload_images/b2bfd5ffb7fd97810014a33433ed243b64b367f3ca06c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b2bfd5ffb7fd97810014a33433ed243b64b367f3ca06c.png?mw=700" alt="202307__maui__16-1245--unsafe.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ今後、ネギラーメンでは アンセーフなものも 使っていくことにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 int 型のメモリ・レイアウトは red, green, blue, alpha で確定かだぜ?<br /> 環境により異なるかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ビッグ・エンディアン、リトル・エンディアンが関わってくるかどうか 知らないぜ?」</p> <pre><code>ここでのコードでは、バイトが赤、緑、青、アルファの順序であり、色の SKColorType.Rgba8888 種類と一致していることを前提としています。 これは iOS と Android の既定の色の種類ですが、ユニバーサル Windows プラットフォームでは使用されないことを思い出してください。 </code></pre> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 環境によって異なるそうよ」</p> <pre><code class="cs">namespace MauiApp1; using SkiaSharp; /// <summary> /// 明度を下げる /// </summary> internal static class ReduceBrightness { // - インターナル静的メソッド /// <summary> /// そうする /// </summary> internal static SKBitmap DoItInPlace(SKBitmap bitmapInPlace) { IntPtr pixelsAddr = bitmapInPlace.GetPixels(); int width = bitmapInPlace.Width; int height = bitmapInPlace.Height; unsafe { uint* ptr = (uint*)pixelsAddr.ToPointer(); for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) { // ビッグ・エンディアンか、リトル・エンディアンかの違いを吸収してくれることを期待して SKColor color = new SKColor(*ptr); // RGB値が減れば、暗くなるだろ *ptr++ = (uint)new SKColor( red: (byte)(color.Red * 0.7), green: (byte)(color.Green * 0.7), blue: (byte)(color.Blue * 0.7)); } } return bitmapInPlace; } } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なるほど、<br /> ビッグ・エンディアンか、リトル・エンディアンか、環境の違いを吸収しようとすると<br /> ちょっと 遅くなるのか、まあいいか」</p> <p><a href="https://crieit.now.sh/upload_images/4d5ac9e4e75cb2982ae3f1e45398e43364b36e24d547c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4d5ac9e4e75cb2982ae3f1e45398e43364b36e24d547c.png?mw=700" alt="202307__maui__16-1310--reduceBrightness-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 明度を下げることはできたが、再描画のたびに どんどん暗くなって 真っ黒になる。<br /> コードを書く位置を ミスった」</p> <h2 id="タイル・パレット編集画面のタイル・セット画像の明度も下げてくれだぜ"><a href="#%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8%E9%9B%86%E7%94%BB%E9%9D%A2%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%BB%E3%82%BB%E3%83%83%E3%83%88%E7%94%BB%E5%83%8F%E3%81%AE%E6%98%8E%E5%BA%A6%E3%82%82%E4%B8%8B%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A0%E3%81%9C">タイル・パレット編集画面のタイル・セット画像の明度も下げてくれだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 タイル・パレット編集画面のタイル・セット画像の明度も下げてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>GraphicsView</code> と、 <code>SKCanvasView</code> の結局どちらも 用途に応じて使い分けることになるの<br /> 学習コストと、脳への負荷が高いな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 フォルダーの整理も大変だ。<br /> MAUI のフレームワークに従うものと、<br /> SkiaSharp という異質なものを どう配置しよう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>FeatSkia</code> みたいなフォルダーを作って<br /> そこに放り込めば?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ミュージシャンみたいだな。<br /> そもそも <code>Skia</code> って何だ? 調べるか」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://ja.wikipedia.org/wiki/Skia">Wikipedia > Skia</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 元は 会社名らしい」</p> <p><a href="https://crieit.now.sh/upload_images/588f5bbe19415c439b9d2ff7867eaace64b37cdf0a637.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/588f5bbe19415c439b9d2ff7867eaace64b37cdf0a637.png?mw=700" alt="202307__maui__16-1414--SkiaSharpViewsMauiControls-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>SkiaSharp.Views.Maui.Controls</code> パッケージをインストールすれば、必要なものは 自動的にインストールしてくれるようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/22126a5750d259933eb010f52a03e8d564b37dbbdc171.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/22126a5750d259933eb010f52a03e8d564b37dbbdc171.png?mw=700" alt="202307__maui__16-1418--MauiProgram-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>MauiProgram.cs</code> に <code>builder.UseMauiApp<App>().UseSkiaSharp();</code> って書く必要があるの、<br /> 探さないと見つからない 分からんと思う」</p> <p><a href="https://crieit.now.sh/upload_images/c820804a26a0c613a34e4b7b079fb36664b383e986e0e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c820804a26a0c613a34e4b7b079fb36664b383e986e0e.png?mw=700" alt="202307__maui__16-1444--FeatSkia-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 画像処理は とりあえずお試しに <code>FeatSkia</code> フォルダーを作って そこへ入れよう」</p> <p><a href="https://crieit.now.sh/upload_images/8a18d04b2e10acf54755c8ebc333a6ba64b384c2e3410.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8a18d04b2e10acf54755c8ebc333a6ba64b384c2e3410.png?mw=700" alt="202307__maui__16-1448--namespace-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューに ネームスペース<br /> <code>xmlns:skia="clr-namespace:SkiaSharp.Views.Maui.Controls;assembly=SkiaSharp.Views.Maui.Controls"</code><br /> を追加して」</p> <p><a href="https://crieit.now.sh/upload_images/be1885552b2ff6b37495474ff71c5c7764b3857313095.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/be1885552b2ff6b37495474ff71c5c7764b3857313095.png?mw=700" alt="202307__maui__16-1451--SKCanvasView-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>SKCanvasView</code> 要素を配置」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 今回、<code>Touch</code> イベントは要らないんじゃない?」</p> <p><a href="https://crieit.now.sh/upload_images/bdf7c758076244f5c4fce4a920e80ea264b387626f71f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bdf7c758076244f5c4fce4a920e80ea264b387626f71f.png?mw=700" alt="202307__maui__16-1459--SKBitmap-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ビューモデルには、 <code>SKBitmap</code> を格納できるようにしておくぜ」</p> <p><a href="https://crieit.now.sh/upload_images/46add945c1cbf086b96024868c0d991764b391a44f3fc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/46add945c1cbf086b96024868c0d991764b391a44f3fc.png?mw=700" alt="202307__maui__16-1542--PaintSurface-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 描画処理は、ただビットマップを描画するだけにするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 コード・ビハインドに 画像処理をベタ書きするのが、 MVVM の思想では イケてないんだろうな」</p> <p><a href="https://crieit.now.sh/upload_images/cec0eee886b2eb5e996cc45c4d3b7bd164b39701f0ab9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cec0eee886b2eb5e996cc45c4d3b7bd164b39701f0ab9.png?mw=700" alt="202307__maui__16-1606--Loaded-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ページの読込完了時に、画像読込と、明度を下げるのを 済ませてしまおう」</p> <p><a href="https://crieit.now.sh/upload_images/008629511836cb528e89bf240ca0dc9764b3975c89eb5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/008629511836cb528e89bf240ca0dc9764b3975c89eb5.png?mw=700" alt="202307__maui__16-1607--run.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そして実行。 位置とサイズが合ってないな」</p> <p><a href="https://crieit.now.sh/upload_images/d24447be279dbdbf34d00cfee02fbbb964b398645a4fa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d24447be279dbdbf34d00cfee02fbbb964b398645a4fa.png?mw=700" alt="202307__maui__16-1611--adjust.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 位置とサイズを調整」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 明度を下げたタイル・セット画像の上に、<br /> 半透明のグレーの画像を置いているけど、<br /> その2枚は MAUI によって どうブレンドされているの?<br /> 加算合成なのか、乗算合成なのか」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/maui/user-interface/graphics/blendmodes">ブレンド モード</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 半透明のときの説明は無いな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 選択領域か、そうでないかが 明確に見分けられなければ いけなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/84c4a28d3992d262d960d47e82d4dc3764b39ffecb67e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/84c4a28d3992d262d960d47e82d4dc3764b39ffecb67e.png?mw=700" alt="202307__maui__16-1638--roundedRectangle.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 角丸の矩形でどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 暗い場所が残ってると 残差業が残ってるみたいに感じるじゃない。<br /> 選択されていないところを 暗くして、 選択されているところは 元の色調にしたら いいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 元画像 は どこかに残しておかないといけないのかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 カラード・マップ(Colored Map) は色分けだろ。<br /> 色で分けろよ」</p> <p><a href="https://crieit.now.sh/upload_images/52582545baf6e25f1ebb4fe1d53d0fb864b3aa082cd68.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/52582545baf6e25f1ebb4fe1d53d0fb864b3aa082cd68.png?mw=700" alt="202307__maui__16-1727--tone.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 青が 暗くなってしまうなあ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 青値は 多めになるよう 補正を掛けたら?」</p> <h2 id="登録タイルの削除ボタンを作れだぜ"><a href="#%E7%99%BB%E9%8C%B2%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%AE%E5%89%8A%E9%99%A4%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8C%E3%81%A0%E3%81%9C">登録タイルの削除ボタンを作れだぜ</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 登録タイルが こんな ぐちゃぐちゃ しているのが悪いんだ。 削除できるようにしよう」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 追加ボタンと 削除ボタンが こんなに近くにあるのは 悪いデザインでは?」</p> <p><a href="https://crieit.now.sh/upload_images/a335351828700f41cc8c6586decfa26164b3c5ac17423.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a335351828700f41cc8c6586decfa26164b3c5ac17423.png?mw=700" alt="202307__maui__16-1924--deleteButton-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これぐらい 離したらいいかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 削除ボタンだけ 左に持っていったら?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 削除したいときに 不便なのでは……」</p> <h2 id="ボタンに押した感じを付けれないの?"><a href="#%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AB%E6%8A%BC%E3%81%97%E3%81%9F%E6%84%9F%E3%81%98%E3%82%92%E4%BB%98%E3%81%91%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%EF%BC%9F">ボタンに押した感じを付けれないの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 MAUI のボタンって 反応しないから 押した感じがしないけど<br /> ボタンを押したという演出を 付けれないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんなものは ボタンには最初から付いているものと 思っていたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 記事を読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://marunaka-blog.com/net-maui-button-animation/7708/#index_id6">【.NET MAUI】Buttonにアニメーションを付けて表示をカスタマイズする</a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/dotnet/communitytoolkit/maui/behaviors/animation-behavior">Microsoft > AnimationBehavior</a></p> <p><a href="https://crieit.now.sh/upload_images/09a57761a4d350ab4e46d4041cde23ac64b3c81b3cb6d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/09a57761a4d350ab4e46d4041cde23ac64b3c81b3cb6d.png?mw=700" alt="202307__maui__16-1935--toolkit-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 名前空間を書いて」</p> <p><a href="https://crieit.now.sh/upload_images/fa69d6d8a163f28e8f6244ee20756d3164b3c9050104e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fa69d6d8a163f28e8f6244ee20756d3164b3c9050104e.png?mw=700" alt="202307__maui__16-1939--animation-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ボタンに ビヘイビアを書いたが、アニメーションする様子は無いぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8dccdf9c1a532264541c056a4f35584164b3c990283a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8dccdf9c1a532264541c056a4f35584164b3c990283a6.png?mw=700" alt="202307__maui__16-1941--use-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この書き方で いけてないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/00035a4e30f4525c1f28fdd2464f114164b3ca9fa97a1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/00035a4e30f4525c1f28fdd2464f114164b3ca9fa97a1.png?mw=700" alt="202307__maui__16-1945--builder-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 チェーンにした方がいいのか?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ダメだ ボタンは アニメーションしないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/29d17c6910120efaa8f9db74a83c160d64b3d90b6ef4a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/29d17c6910120efaa8f9db74a83c160d64b3d90b6ef4a.png?mw=700" alt="202307__maui__16-2047--FadeTo-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 XAML をどう書いても ボタンはアニメーションせず クソだったので<br /> コード・ビハインドに コードを書くことにしたら アニメーションしたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なぜ XAML の設定では アニメーションしなかったのか 謎のままだぜ」</p> <h2 id="ボタンの上をマウスがホバーしたときに、ボタンの色を変えれないの?"><a href="#%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E4%B8%8A%E3%82%92%E3%83%9E%E3%82%A6%E3%82%B9%E3%81%8C%E3%83%9B%E3%83%90%E3%83%BC%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%80%81%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E8%89%B2%E3%82%92%E5%A4%89%E3%81%88%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%EF%BC%9F">ボタンの上をマウスがホバーしたときに、ボタンの色を変えれないの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ボタンの上をマウスがホバーしたときに、ボタンの色を変えれないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👇 ご存じの通り MAUI は マウス操作ではなく タップ操作を前提とした設計なんで マウス・ホバーなんて無いぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/73088203/mouse-hover-detection-in-net-maui">Mouse hover detection in .NET MAUI</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 デスクトップ・アプリとしての 体験が 悪い……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 ジェスチャーでなんとかならないのかだぜ?」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/dotnet/maui/pull/9592">Implement PointerGestureRecognizer #9592</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ボタン毎に ジェスチャー付けるの クソ めんどくさいが やってみるかだぜ」</p> <h3 id="Colors.xaml に定義されている primary という名前の Color インスタンスはどうやって取得できるんだぜ?"><a href="#Colors.xaml+%E3%81%AB%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B+primary+%E3%81%A8%E3%81%84%E3%81%86%E5%90%8D%E5%89%8D%E3%81%AE+Color+%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AF%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E5%8F%96%E5%BE%97%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">Colors.xaml に定義されている primary という名前の Color インスタンスはどうやって取得できるんだぜ?</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Colors.xaml に定義されている primary という名前の Color インスタンスはどうやって取得できるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👇 これを読めだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/72591153/how-to-find-a-resource-with-key-in-code-behind-maui">How to find a resource with key in code behind? [MAUI]</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いくつかあるディクショナリーのどこかにあるから 探索しろということかだぜ」</p> <pre><code class="cs">namespace _2D_RPG_Negiramen.Models { /// <summary> /// リソース・ヘルパー /// </summary> internal static class ResourcesHelper { /// <summary> /// 探す /// /// <list type="bullet"> /// <item>TODO ★ 実装をもっと書いてほしい</item> /// </list> /// </summary> /// <param name="key">リソースのキー</param> /// <param name="resource">見つけたもの</param> /// <returns>見つかった</returns> internal static bool TryFind(string key, out object resource) { if (App.Current==null) { resource = 0; return false; } // 愚直な探索 foreach (var resourceDictionary in App.Current.Resources.MergedDictionaries) { if (resourceDictionary.TryGetValue(key, out resource)) { return true; } } resource = 0; return false; } } } </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ これでいいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/48246edb736b70577f111a758610b6ec64b3e8e939ae0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/48246edb736b70577f111a758610b6ec64b3e8e939ae0.png?mw=700" alt="202307__maui__16-2155--MouseHover-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マウスのホバーで色変えるぐらいのことで ジェスチャーのコード 書くことになるの うんざりするが<br /> 仕方ない」</p> <p><a href="https://crieit.now.sh/upload_images/e68d93220b3ebc9e47054f8dc6a9243564b3e9e94a539.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e68d93220b3ebc9e47054f8dc6a9243564b3e9e94a539.png?mw=700" alt="202307__maui__16-2200--MouseHoverCode-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 イベントハンドラは こんなもんでいいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そういえば ボタンにマウスカーソルが被さった時の カーソルの見た目の変更も やり方が分からないな」</p> <p><a href="https://crieit.now.sh/upload_images/e6134cc012763af6400942d952d229ee64b3ec5c3b689.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e6134cc012763af6400942d952d229ee64b3ec5c3b689.png?mw=700" alt="202307__maui__16-2210--Coloring-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マウス・ホバー時の色味を落ち着かせて、 画面の配色のコントラストも落とすように 変更したぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ネギラーメンという名前なのに 青が基調でいいのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 青は 集中力を高める色という俗説もあるし、 まあいいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/baa22cc23ea9ed5dd9270f151df4f71764b3f176b5b4e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/baa22cc23ea9ed5dd9270f151df4f71764b3f176b5b4e.png?mw=700" alt="202307__maui__16-2231--UI.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 マウスカーソルが ボタンに被さると ボタンが少し 明るく見えるとか 1個1個 設定しないといけない<br /> これは大変だ」</p> <h2 id="&quot;Tile Set&quot; ではなくて &quot;Tileset&quot; なのでは"><a href="#%26quot%3BTile+Set%26quot%3B+%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6+%26quot%3BTileset%26quot%3B+%E3%81%AA%E3%81%AE%E3%81%A7%E3%81%AF">"Tile Set" ではなくて "Tileset" なのでは</a></h2> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>Tileset</code> は 1単語として よく使われているようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ リネームするか~」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>タイル・パレット編集画面</code> という名前は 実態に合ってんの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイル切り抜き画面だよな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 英語にすると <code>Tile Crop Page</code> ぐらいかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 意味が伝わるだろうか?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 まだ タイル・パレット本体も無いし、<br /> タイル・パレット編集 と言われても 分かんなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 とりあえず 文字数が減るのは嬉しいから リネームするか」</p> <pre><code class="plaintext">TilePaletteEditPage ----> TileCropPage </code></pre> <h2 id="文字列リソースにはどうやってアクセスすんの?"><a href="#%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%93%E3%81%AE%EF%BC%9F">文字列リソースにはどうやってアクセスすんの?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? C# スクリプトから 文字列リソースを取得するには どうやったらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>LocalizationResourceManager</code> を直で呼び出したらどう?」</p> <pre><code class="csharp">var text = (string)LocalizationResourceManager.Instance["Add"]; </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じで いけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/36f6b963b32815cbc3c0246adb8648b964b40bd4bdf3d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/36f6b963b32815cbc3c0246adb8648b964b40bd4bdf3d.png?mw=700" alt="202307__maui__17-0023--NewLine-o2o0.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ローカライズしたら <code>&#10;</code> という改行コードが そのまま表示されてしまった!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 インジェクション対策だろう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>\n</code> でも <code><br></code> でもダメ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 しゃーない いい感じのところで改行するのは 諦めよう」</p> <h2 id="ウィンドウ・サイズってどうやって設定するんだぜ?"><a href="#%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%83%BB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%A3%E3%81%A6%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%82%93%E3%81%A0%E3%81%9C%EF%BC%9F">ウィンドウ・サイズってどうやって設定するんだぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 MAUI って デスクトップ上のウィンドウの位置 という概念も無いよな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 デスクトップ・アプリではないんで」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👇 記事を読みなさい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://developers-trash.com/archives/974">.NET MAUI でウインドウサイズを指定する方法(Windowsで実行した場合)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんな Win32 みたいなコード 書くのかだぜ?」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 書いた。 うまくいった」</p> <h2 id="画面遷移から戻ってきたときに呼び出されるイベントハンドラはあるかだぜ?"><a href="#%E7%94%BB%E9%9D%A2%E9%81%B7%E7%A7%BB%E3%81%8B%E3%82%89%E6%88%BB%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%81%AF%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A0%E3%81%9C%EF%BC%9F">画面遷移から戻ってきたときに呼び出されるイベントハンドラはあるかだぜ?</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>Loaded</code> は最初の1回しか呼び出されないらしい。<br /> 画面遷移で 戻ってきたときに呼び出されたいときは どうすんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 とりあえず いろんなイベントハンドラ実行したら <code>NavigatedTo</code> が それっぽいかな」</p> <p>(カタ カタ カタ カタ)</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 よし、いけた」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ブログの編集画面が なんか重くなってきたので 次の記事へ飛ぶかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 よっしゃ」</p> <h1 id="次の記事"><a href="#%E6%AC%A1%E3%81%AE%E8%A8%98%E4%BA%8B">次の記事</a></h1> <p>📖 次の記事: <a href="https://crieit.net/posts/2D-RPG-2">2D RPG 制作ツールを作ろうぜ(^~^)? <その2></a></p> むずでょ