はじめに
今回は、私が個人開発者として手掛けている Logging Foot というログ可視化ツールを Microsoft Store に公開するまでの試行錯誤したリアルな苦労をお話ししようと思います。
特大ボリュームなので前編と後編に分けています。
前編:コード署名を取得するまで
後編:Microsoft Store でアプリが公開されるまで
個人開発者であれば、誰しもが「自分のアプリやサービスを公開して多くの人に使ってもらいたい」という願望があると思います。私もそうです。
ただ作って自分のサイトで公開するだけでは誰も見に来ません。
どこか有名なソフト配布サイトでの登録が必要だと思いました。
まず思いついたのは、かつて自作アプリを公開したことがある老舗サイト Vector。
パソコン黎明期には多くの開発者とユーザーで賑わっていた場所です。
しかし調べてみると、現在は当時の勢いはなく、審査も非常に遅いとの情報が多数。シェアウェアの審査が優先で、フリーウェアは1か月放置されたという情報もあり、ここでの公開は一旦見送ることにしました。
次に考えたのが 窓の杜。こちらも老舗の有名サイトですが、掲載する価値があると運営側が判断した場合のみ紹介される仕組みです。知名度ゼロ、サイトも立ち上げたばかり。現実的ではないと判断しました。
そのような中で、個人開発者でも Microsoft Store で公開できることを知りました。天下の Microsoft が運営する公式ストアです。胸が高鳴りました。
しかし、ここからが本当の苦労の始まりでした。
個人開発者に立ちはだかるコード署名の理不尽
Microsoft Store にアプリを申請する際、
「コード署名は Microsoft が代わりに行うので不要」という情報を見かけることがあります。これは MSIX 形式でパッケージングされたアプリに限った話です。
MSIX は Windows 10 以降に導入された新しい配布形式で、Store との相性も良く、Microsoft が署名してくれます。
一方で、従来の MSI/EXE パッケージ形式でもアプリ申請可能なのですが、こちらの場合は自分でコード署名をしなければなりません。
MSIX アプリは安全にインストール・アンインストールができ、ユーザーはアプリがどこにインストールされているか意識せずに使用できる形式ですが、Logging Foot は、開発者向けツールでありインストールフォルダにサンプルプログラムや SDK を展開する必要があります。このため、MSI/EXE 形式でのパッケージングが必須でした。
個人開発者に向けられる仕打ち
まず、個人向けにコード署名を発行している認証局が非常に少ないという点です。大手のほとんどは発行対象が法人です。そして次に価格です。
個人でも取得できる数少ない選択肢のひとつが セクティゴジャパンなのですが、
年額 55,000 円 (2026年2月時点)
https://comodo.jp/products/codesign.html
であり、決して安くありません。
一般的に、個人が取得できるコード署名は標準証明書(OV証明書)に限られ、この証明書では即座に SmartScreen が回避できるようにはなりません。
一方で、即座に回避できるEV証明書は法人限定です。
つまり、個人開発者は、高額な費用を払っても SmartScreen が完全に回避できるわけではない という現実を受け入れなければならないのです。
コード署名をどこで買うか 救世主 Certum
検索に疲れてきた時、Certum という認証局がヒットします。
ポーランドに拠点を置き、個人開発者がコード署名を取得できる数少ない認証局として世界的に知られているようです。(https://certum.store/)
上記の URL から Code Signing Certificate [Learn more!] のボタンを押すとコード署名の商品一覧が表示されます。(https://certum.store/catalog/category/view/id/5)
神認証局 Certum
まず、目に付いたのが圧倒的に安価であること。
どれも $200 前後で、当時150円/$ としても3万円前後です。
こうれはもう、神だと思いました。この時点でここに決めようと思いました。
Certum で扱っているコード署名は大きく分けて下記の3種類です。
- EV Code Signing (EV証明書 法人向け)
- Standard Code Signing (標準証明書 個人も可)
- Open Source Code Signing (オープンソース開発者向け 制限多い)
ここは、二番目の Standard Code Signing の一択です。
次に、Standard Code Signing の中でも署名方式が2つ用意されており、クラウド署名と物理トークンを使用した署名です。ストア上では、下記のように3つ商品に見えます。
(※ カッコ内は 1年更新、新規の場合 2026.02 時点の価格)
- Standard Code Signing in the Cloud ($249)
- Standard Code Signing - electronic code ($189)
- Standard Code Signing - set ($219)
一番目の Standard Code Signing in the Cloud は、秘密鍵がクラウド上に保管されており、物理トークンが不要な方式です。月間の署名回数に一定の制限があるようですが、通常の個人開発者であれば、せいぜい月数十回程度ですので制限に到達することはほぼ無いと思います。
二番目の Standard Code Signing - electronic code は、一番安価です。これは、三番目の Standard Code Signing - set を持っている人が年次更新する場合に 秘密鍵を電子メールで受け取るものです。
三番目の Standard Code Signing - set は、秘密鍵が物理トークン(USB)に格納されており、署名するたびに USB を PC に接続して使用します。物理トークンとセットでの購入になります。こちらは、署名回数に制限はありません。
これはかなり迷いましたが、年次の更新が割安になる三番目の Standard Code Signing - set を購入することに決めました。
次に決めるのが更新年です。1年~3年まで選択できます。
(※ 2026.03.01 より最大有効期間が3年から15か月に短縮されるそうです)
Standard Code Signing - set 1年 ($219)
Standard Code Signing - set 2年 ($349)
Standard Code Signing - set 3年 ($469)
今回は初めてということもあり、とりあえずは1年 新規 $219 を購入することに決めました。この時のレートで確か 153円/$ だったので 34,000円前後くらいです。
まさかの追加料金 国際発送で +$66
購入するには、Certum のアカウント登録が必要です。サクッと済ませ、いよいよ購入ボタンを押すだけ。しかし、最後の注文確認画面に進んだ瞬間、見覚えのない金額が追加されています。

Shipping & Handling $66.00
... これは何?
調べてみると、どうやらこれは、物理トークンの国際送料と海外発送手数料とのことらしい。
合わせて $285 (約43,600円)。予想外の出費です。これでもまだセクティゴジャパンの 55,000円より安い と自分に言いきかせ、[確定] しました。
カード決済できず…楽天カードのセキュリティに引っかかった話
普段ネットショップの買い物に使っている楽天カードを登録し、
決済完了!
とはいきませんでした。
最後のセキュリティコードを入力するも何故か決済に失敗してしまいます。何が起きているのかよくわからず、「楽天e-NAVI」でカードの状況を確認してみると
「カードの利用を制限しました」
という表示が。
詐欺?不正利用?
血の気が引いたのを覚えています。
この買い物ができないことよりも、このカードでいろいろ支払いしていたので、利用停止になるのは非常にマズイのです。
当時の状況はかなり焦っていたので記憶は曖昧なのですが、よく見ると不正利用を防止するためのセキュリティ機能が発動したようでした。海外サイトでの決済が初めての場合、よくあることのようです。画面の案内に従い、本人確認などいくつかの確認や設定があったと思います。数分後には元通り使えるようになり、再度決済したら通りました。
ようやく購入完了したわけです。
必要書類を揃える
購入後の流れとしては、
1.本人確認 (Identity Verification)
2.提出資料の検証 (Data Verification)
3.証明書のアクティベーション (Certificate activation)
となります。物理トークンが届くまでに1~2週間はかかるようなのでこの間に1と2は進められそうです。もう一度、本人確認に必要な書類などを確認します。(https://support.certum.eu/en/code-signing-required-documents/)
パスポート
期限が過ぎていたので、コード署名の購入を検討し始めた頃に更新しておきました。
公共料金の請求書
これはつまり、住所を英語で証明できる書類のことです。水道・電気・ガスなどの契約者の住所が記載された英語の請求書が必要です。
しかしながら、水道・電気について、私が調べた限りでは英語で請求書を発行するサービスはありませんでした。(ガスについては未確認)
他の手段としては、これら請求書を英訳する業者がいるようで、納期は1週間、料金は5,000~10,000円前後と、なかなかのコストです。
どうするか
ゆうちょ銀行の残高証明を住所付き・英語で入手して本人確認をパスした人がいるとの情報を発見。私の場合、楽天銀行から取り寄せました。申請は電話でする必要があり、500円の発行手数料が口座から引かれます。
屋号で取得するには
個人名で取得するなら、用意する書類はここまでで OK です。
しかし私は、個人事業主の屋号で取得したいと思っていました。
個人名の場合、SmartScreen の発行元に自分の本名が表示されてしまいます。

大げさかもしれませんが、私の本名を世界に晒す勇気はありませんでした。
DUNS Number の取得
Certum のドキュメントには明記されていませんが、個人事業主として屋号で証明書を取得する場合、DUNS Number の取得が必須 です。
DUNS Number は世界で一意の企業識別コードで、日本では 東京商工リサーチ が管理しています。法人は自動で発番されますが、個人事業主は 自分で申請する必要があります。
2026年時点での新規発番は、以下のプランになっています。(https://duns.tsr-net.co.jp/duns-web/index#price-list)
- 7営業日以内: 15,000円
- 30営業日以内:無償
物理トークンが到着するまでに、全てを揃えておきたいと思ったので 15,000円の有料プランにしました。
必要書類としては、開業届、確定申告書、納税証明書 などから1点必要で、私の場合は開業届を提出しました。水曜日に申し込み、翌週月曜日には提供が可能になったとの通知が来ました。有料プランの場合、下記のような通知書が電子データでもらえます。

役者は揃った
DUNS Number の取得ができたところで、書類が揃いました。
購入後、Certum より「Identity verification」というメールが届いています。そこには、IDnow を使用した自動本人確認のためのリンクが載っています。早速始めました。
本人確認 (Identity Verification)
自動本人確認でエラー連発、メンタル崩壊寸前
IDnow の画面指示の通りにパスポートを撮影し、アップロードするもエラーになってしまいます。画像サイズが大きすぎるだとか、写真が不鮮明だとか、反射が入っているだとか。調べたことは全て試しましたが、結果は全て同じ。
しまいには、IDnow のリンクには回数制限があるらしく、アクセス不能に。Certum サポートにメールで助けを求めると新しい IDnow のリンクを送ってくれるのですが、返ってくる助言は「正しい撮影の仕方」の定型文だけ。
こんなやりとりを3日間繰り返しました。心は折れかけ、キャンセルポリシーを確認しようとしていたところ、これまでとは違う文面のメールが届きます。相変わらず IDnow のリンクは載っているのですが、手動でドキュメントをアップロードする方法が載っていました。
そして、サラッと書かれていた一文。
「契約者が身分証明書を保持した写真で、書類全体が映っていること」
それを早く言ってよ!
パスポートを保持した状態で家族に写真を撮ってもらい、もう IDnow でアップロードするのは懲り懲りだったので、手動でアップロードしました。併せて本人確認書類として銀行の残高証明もアップロードしたのですが、何故かこちらはリジェクトされました。
そして、ようやく本人確認をパスしました。
例外発生!?も... 物理トークン無事到着!
怒涛の日々が過ぎ、購入から約1週間。DHL Express というところからメールが届きます。
ご丁寧に配達予定日を伝えるメールでした。

到着が待ち遠しいです。
数日後、また DHL Express からメールが届きます。
今度は、様子が違います。

Notification for shipment event group "Exception" for 13 Oct 25.
のように記載されています。
例外発生?
プログラミングの世界で、Exception とは良くない出来事に使います。
何が例外なのか、要対応なのか、何もかも良くわからず、様子を見ることにしました。
すると、同日またメールが届きます。

どうやら関税の支払いが必要なようです。
$66 の国際送料とさらに 4,380円 の輸入関税。
これで合計 約48,000円 になりました。これでもなおセクティゴジャパンの 55,000円より安いことを確認し、自分の選択が間違っていなかったことを再確認します。
メールのリンクから支払いを済ませると、すぐに支払い完了通知のメールが届きました。そして翌日、物理トークンが到着しました。
海外あるある!?不安な簡易梱包
外装は破棄してしまったのですが、一応、耐水性のありそうなツヤツヤで厚手の紙袋だったと思います。
それを開けるといきなり中身の箱が。

しかも振るとカタカタ音がします。
「これでポーランドから届いたのか」
海外ではこの程度の梱包が一般的らしいです。
内容物はこんな感じです。

メインのUSBは一応プチプチに入っていましたが、これがカタカタしているようでした。
カードに穴が空いているは、そこにチップが付いていました。折り取ってUSBの後ろの蓋を開けて挿入します。
あとは、紙ぺら2枚の取説ですね。
証明書のアクティベーション
提出した資料と入力した内容の有効性を検証するフェーズです。流れとしては、
提出資料の検証 (Data Verification)
↓
証明書のアクティベーション (Certificate activation)
になります。
提出資料の検証 (Data Verification)
Certum Store にログインし、My Account のページを開きます。ページ内左側の Data Security Products というメニューを選択します。
下図の Dashboard が表示されますので、Code Signing の Data Verification を選択します。

以降は画面の指示通りに選択及び入力をしていけば、特にわかりずらいところは無かったと思います。
ただ私の場合、個人事業主として取得したかったので、「検証対象となるデータ」を選択する場面で Organization を選択しました。
- Individual
- Organization
- Sponsor
これ以降は、だんだん記憶が無くなってきていて申し訳ないのですが、画面に従いながら進めていき、Subscriber data というページの Name は本名(もちろんローマ字で)を入力し、Organization data ページの ORGANIZATION だったか、Common name だったかの入力項目では、屋号を入力したと思います。
あと、DUNS を入力するところもありますので、忘れずに DUNS Number を入力します。
最後まで進み、うまくいくと

の表示になりますので、Go to dashboard のボタンを押して戻ります。

Dashboard に戻ると、Data Verification にチェックが付き、Certificate activation が選択できるようになっています。
証明書のアクティベーション (Certificate activation)
Certificate activation を選択後は、同じように画面に従いながら進めていけば問題ないです。選択項目は基本デフォルトのままにしたと思います。こちらは画面キャプチャが残っていたのでお見せしますね。

暗号化の長さは強度と処理時間のバランスを考慮して RSA 3072 を選択したと思います。

ここでは、幾つかアプリをインストールするよう指示が書いてあります。
1~8をよく読んで対処していきます。

途中で 物理トークンの USB を PC に挿して proCertum CardManager というアプリを起動し PIN や PUK の各暗証番号を設定したと思います。このあたりは、少々わかりずらかったですが、ドキュメントやヘルプをよく読みながら進めていけばできたと思います。

指示通り進めていき、うまく終わると Summary 画面が表示されますので続けて、Activate certificate ボタンを押下します。

成功すると Success! が表示されます。
続けて Go to certificate を押下します。

証明書のインストール
いよいよ、このUSBトークンに「命を吹き込む」ような作業です。
ここからは、今までの作業で有効化した証明書を USBトークンにインストールします。
前段の証明書アクティベーションの際、USBトークンは PC に挿した状態になっているかと思います。そのまま挿してあることを前提に進めます。
下図画面で Install certificate を押下します。

インストール手順を示す画面が表示されますので、Install the certificate ボタンを押下します。

Certum SignService というアプリが起動してきますので、Common profile PIN: のところに証明書アクティベーション時に決めた PIN を入力します。

PIN を入力したら OK ボタンを押下します。
proCertum CardManager アプリを起動し、Common profile タブの Certificates のところに証明書が表示されているのを確認できます。

これで完了です。
ここまで本当に長く大変な苦労がありました。アプリは既に出来てます。これで署名できるはずです。
実践! アプリに署名する
本来であれば、ビルドのポストスクリプトなどに記載して実行する予定なのですが、試しに直接コマンド入力で署名してみます。
署名には signtool というツールを使います。これは、Windows SDK に含まれるツールです。私の場合は Visual Studio と一緒にインストールしています。通常は、下記パスに存在します。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
10.0.26100.0 のフォルダ部分は最新のもので良いかと思います。
コマンドは、こんな感じで入力します。
signtool.exe sign /v /n "Quantyworks Software" /t http://time.certum.pl/ /fd sha256 /v MyApp.exe
"Quantyworks Software" は証明書の名前です。個人名で取得すると、ここが本名になってしまいます。
http://time.certum.pl/ は Certum のタイムサーバーです。これを指定しないと、署名後に有効期限が過ぎると「不明な発行元」のアプリになってしまいます。指定することで、一度署名すれば、そのアプリは有効期限が過ぎた後でも永続的に信頼される というものです。
MyApp.exe は署名対象のモジュールです。実際には、signtool.exe に対する相対パスか絶対パスで指定します。DLL や MSI などのインストーラーも指定可能です。
最期の戦い
先の signtool コマンドを実行すると
Signtool Error: No certificates were found that met all the given criteria.
なんと、ここまで来てまさかのエラー発生です。
要するに、条件に一致する証明書が見つからない というエラーのようです。
もちろん、自分なりに色々調べます。
証明書アクティベーションの際にインストールしたいくつかの Certum アプリがありますが、それらを再インストールしたり、物理トークンのUSBドライバーを再インストールしたり。
証明書は、OS側の方にも正しくインストールされています。

詰みました。。
万策尽き、Certum サポートにメール連絡しました。
時刻は深夜、日付が変わっていました。
翌日、Certum サポートから返信が届いていました。まずは、向こうが指示する操作を行い、その結果を返信したり、要求する画像キャプチャや Certum アプリの診断モードでログを取得して送付したり。そんなやりとりが1日2往復くらいの頻度で2~3日間続いたころ、
異常なし
との診断結果です。
いやいや、異常あるんだけど と思いながら次の指示を待っていると、ドライバーやアプリの再インストールを指示してきました。それ試したんだけど と思いながらもその結果を報告したところで、週末を迎えます。
続きは週明けになりました。
希望の光
Certum サポートとのやりとりができない土日の間、開発環境が入っていない別用途の PC に Certum アプリ一式をインストールし、署名できるかダメ元で試してみました。
signtool コマンドを実行すると、なんと、USB のアクセスランプが点滅し、PIN の入力ダイアログが表示されました。今までには無かった動きです。
興奮気味に PIN コードを入力し、OK すると無事、署名が成功しました。

別 PC なら署名が成功したという事実。
早速、Certum サポートにも報告しました。そして、最悪、この PC で署名できるということが大きな安心になりました。
週が明けると早速、Certum サポートから返信が届きました。「別 PC なら署名が成功した」という報告は軽くスルーされました。そして、先週と担当者が違うのか、指示の内容が先週やったことと同じです。
「1日2往復くらいの頻度で2~3日間続いた」
というのをまた繰り返すのか
と気が遠くなり、もうサポートは諦めることにしました。
その指示は、先週実施したということ、別 PC なら署名が成功するので、署名はその PC で行うということ、そして最後にサポートしてくれたことのお礼文面を書き、返信しました。
奇跡の逆転劇
頭の中では別 PC を使用して署名する運用方法を考えていました。
署名対象となるモジュールは、様々な階層に複数存在するためビルドのポストプロセスを起点に、できるだけ自動で署名するようなスクリプトを考えていましたが、やはり別 PC 側で PINコード入力以外にも人為的な操作が発生してしまう。
何か、やっぱり納得がいきませんでした。
「そもそも何で開発 PC ではダメなんだろう、もしかしたらリフレッシュしたらうまくいくのかな。。」
そんな衝動に駆られていたところ、1日ぶりに Certun サポートから下記のようなメールが届きます。
「最新の Windowsバージョンがインストールされていることを確認してください。」
https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-24h2#3697msgdesc
リンクをクリックすると、Windows11 24h2 の既知の問題に関する情報が載っており、スクロールしていくとこのような問題が報告されています。

原因は Windows Update の不具合
まさにこれ。私が遭遇している問題と同じです。
さらにスクロールすると解決方法が載っていて、レジストリの一部を書き換えることで解消するようです。即試すと、あっけなく署名成功。
私はもう諦めていたのですが、Certum サポートは諦めていませんでした。
問題が解消したということ、サポートに対するお礼の言葉も込めて返信しました。
その後、Certum サポートからメールが来ることはありませんでした。
そして、遂に念願のコード署名が手に入りました。
最後の真実
Certum ショップの画面で購入時、$66 上乗せされて$285 (約43,600円) だと嘆いていました。しかし、実際にカードの請求額を見ると 47,080円です。
どうやらこれは、決済代行会社が自社の利益を含んだ手数料を上乗せした独自の為替レートで決済するようです。これは無知でした。
コード署名と輸入関税合わせると 51,460円、セクティゴジャパンは 55,000円でしたので、何とか逃げ切りました。
購入から署名できるようになるまでにかかった日数:15日
かかった費用:66,460円
内訳:
コード署名1年(手数料等込み)--- 47,080 円
輸入関税 ------------------------------- 4,380 円
DUNS Number 発行料 ----------------15,000 円
パスポート取得費用 (15,900円) や結局意味のなかった英語の残高証明書発行手数料 (500円) は除きました。
結局、高いです。
ストア店頭で初めて価格を見て安い!と思いましたが、いろいろな手数料を積まれて結局のところ、店頭価格の 1.5倍以上はかかったことになります。
来年からは、更新のみで物理発送も無いはず。
なので、円高にも期待して、だいぶ安くなることを期待しています。
前編はここまでです。長文を読んでいただきありがとうございます。
続きの後編は、Microsoft Store でアプリが公開されるまでの道のりです。ただいま執筆中です。近日中に公開を予定しています。
