<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Microsoft Store on /home/amgsk</title><link>https://amgsk.dev/tags/Microsoft-Store/</link><description>Recent content in Microsoft Store on /home/amgsk</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sat, 25 Jul 2026 07:01:13 +0900</lastBuildDate><atom:link href="https://amgsk.dev/tags/Microsoft-Store/index.xml" rel="self" type="application/rss+xml"/><item><title>Meguriアップデートログ</title><link>https://amgsk.dev/posts/meguri-app-update-log-1/</link><pubDate>Sat, 25 Jul 2026 07:01:13 +0900</pubDate><guid>https://amgsk.dev/posts/meguri-app-update-log-1/</guid><description>&lt;p>以前、写真と動画の管理アプリMeguriを作ったという記事を書いた。&lt;/p>
 &lt;a href="https://amgsk.dev/posts/meguri-app/" class="linkcard">
 &lt;div class="linkcard-content">
 &lt;div class="linkcard-title">/home/amgsk | 写真と動画の管理アプリ Meguriを作った&lt;/div>
 &lt;ul class="linkcard-summary">
 &lt;li>写真と動画をローカル完結で管理する無料アプリMeguri（巡）をリリースした&lt;/li>
 &lt;li>フォルダを選ぶだけでサムネイル付きの一覧になり、タグ・レーティング・コレクションで整理できる&lt;/li>
 &lt;li>こだわりはランダムに想い出を巡れるDiscovery機能&lt;/li>
 &lt;/ul>
 &lt;div class="linkcard-meta">
 2026/07/14
 &lt;/div>
 &lt;/div>
&lt;/a>
&lt;p>バグ修正、ストア追加、CI周りの強化など、継続して開発を行なっている。
ココ最近、力を入れたのはMicrosoft Storeへの登録と、Discovery機能のリデザインの2つ。&lt;/p>
&lt;h2 id="microsoft-storeに登録">Microsoft Storeに登録&lt;/h2>
&lt;p>Meguriを&lt;a href="https://apps.microsoft.com/detail/9NRSM11RRH8Z">Microsoft Store&lt;/a>で公開した。&lt;/p>
&lt;img src="ms-store.png" alt="Microsoft StoreのMeguri掲載ページ" width="100%" style="border: #ccc 4px solid;border-radius: 12px;box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
&lt;p>これまでWindows向けにはGitHub ReleasesでNSISインストーラとportable版を配布していたが、インストール時にSmartScreenの警告が出てしまう。
Store経由ならMicrosoftの審査・署名を通った状態で配布できるので、警告なしでインストールしてもらえるし、アップデートもStoreが勝手に面倒を見てくれる。&lt;/p>
&lt;p>やったことはざっくりこのあたり。&lt;/p>
&lt;ul>
&lt;li>electron-builderのターゲットに&lt;code>appx&lt;/code>を追加してStore用パッケージをビルドできるようにした&lt;/li>
&lt;li>申請に必要なプライバシーポリシーページを用意した（Meguriはローカル完結でデータを外部送信しないので、書く内容はシンプル）&lt;/li>
&lt;li>Store用のロゴアセット（StoreLogoや各サイズのSquare/Wideロゴ）を追加&lt;/li>
&lt;li>Store版だけはアプリ内のアップデート通知をGitHub ReleasesではなくStoreの製品ページに向けるようにした&lt;/li>
&lt;/ul>
&lt;p>Windowsユーザは下のバッジからインストール可能&lt;/p>
&lt;p>&lt;a href="https://apps.microsoft.com/detail/9NRSM11RRH8Z">&lt;img src="https://get.microsoft.com/images/en-us%20dark.svg"
 alt="Get it from Microsoft" width="300"loading="lazy">
&lt;/a>&lt;/p>
&lt;h2 id="discoveryのリデザイン">Discoveryのリデザイン&lt;/h2>
&lt;p>ランダムにメディアを巡る&lt;code>Discovery&lt;/code>機能を、没入型のビューに作り直した。&lt;/p>
&lt;img src="discover.gif" alt="リデザインされた没入型Discoveryビュー" width="100%" style="border: #ccc 4px solid;border-radius: 12px;box-shadow: 0 4px 12px rgba(0,0,0,0.15);">
&lt;p>以前はモーダルの中にメディア・メタ情報・シーングリッドが並ぶ、いわばファイル詳細画面のようなチープなレイアウトだった。&lt;br>
リデザイン後は画面いっぱいにメディアを表示し、背景にはぼかしたカバー画像を敷いて、ファイル名・解像度・レーティングなどの情報はグラデーションのオーバーレイに載せるような構成にした。 シーン一覧も、グリッドで場所を取っていたものを横スクロールのシーンレールに置き換え、コンテンツが画面いっぱいに表示されるように考慮した。&lt;/p>
&lt;h2 id="その他の改善">その他の改善&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>部分一致検索&lt;/strong>
&lt;ul>
&lt;li>SQLite FTS5のtrigram tokenizerを使って、単語の途中からでもヒットするsubstring検索に対応&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>重複ファイル検出&lt;/strong>
&lt;ul>
&lt;li>同一コンテンツのファイルを検出して、検索フィルタから絞り込めるように&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>再生履歴ビュー&lt;/strong>
&lt;ul>
&lt;li>ファイルを横断した再生履歴を一覧できるように&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>ホバープレビュー&lt;/strong>
&lt;ul>
&lt;li>一覧の動画サムネイルにカーソルを乗せるとスクラブプレビューが流れるように&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>フレーム書き出し&lt;/strong>
&lt;ul>
&lt;li>動画の表示中フレームをフル解像度の静止画としてエクスポートできるように&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>作成日フィルタ&lt;/strong>
&lt;ul>
&lt;li>ファイルの作成日時（birthtime）でのフィルタとソートを追加&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>パフォーマンス改善&lt;/strong>
&lt;ul>
&lt;li>検索用インデックスの追加、keyset pagination化、重いクエリのworker threadへのオフロードなど、一覧と検索の体感速度を改善&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="今後について">今後について&lt;/h2>
&lt;p>プライバシーポリシー等の要件を定義する中で、改めてMeguriはローカルファーストを貫こうと決めた。
メディアの表示は&lt;code>127.0.0.1&lt;/code>に閉じたローカルサーバ経由で、インデックスやタグ・レーティングといったデータは全部ローカルのSQLiteに収まっていて、
別プロセスがIPを知っていたとしてもアクセスできないように、ポートランダム化やトークン認証の仕組みを入れている。
外部への通信は新バージョン確認のためのアップデートチェック1本だけ（これも設定でオフにできる）&lt;/p></description></item></channel></rss>