ByProduct - 副産物

IT FukuSanButsu Blog

社内インフラエンジニアの自宅からはじまるIT
自宅のPCに向き合いながら気づいたことや個人的な知見をまとめています


プロフィール
しらせ(HN)
とあるIT企業のインフラエンジニア。プライベートでは開発もちょっとやります。
※本ブログの内容はすべて個人の見解であり、所属する企業とは関連ありません。
2023/09/30 暫く更新停止中m
プロフィールを読む
カテゴリ別
内部リンク
相互リンク
Twitter
来訪
1069500 [合計]
23 [今日]
756 [昨日]
Powered by
Powered by AWS Cloud Computing

【まとめ】VisualStudio2019でフォームアプリを作って公開するまでの流れ

2021/07/11
2021/07/11

PCアプリ


お疲れ様です。
しらせです。

本日はVisualStudioを使ったWindowsフォームアプリの開発から公開までの流れをまとめてみます。

私自身これまでにいくつかデスクトップアプリを手掛けてきましたが、
そういえば開発の流れとか公開までの手続きとか、
ちゃんとまとめていなかったなと気づいて今回まとめてみようと思いました。

今回ご紹介する流れは初心者の方にも分かるように考慮しています。
環境はWindows限定ですみません。以下のような構成を予定しています。

開発PC:Windows10
開発環境:VisualStudioCommunity2019(.NetFramework)
開発言語:C#
アプリ:単独実行形式(インストールしない形式)

もくじ

なぜVisualStudioか?

Windows向けのフォームアプリの作成は他にもJavaとEclipseを利用したり、Win32APIを利用したC++での開発などもあります。

正直、作りたいアプリが作れる環境であれば何でも良いと思います。

だた、私がVisualStudioを選んだのには理由があります。
それは、、

とにかく直感的で簡単だから。

です。
他にも、将来的に.NetFrameworkは今後のWindowsに普及することが見えていたことや、VisualStudio関連のドキュメントは豊富で学習しやすかったから、などいくつか理由はあります。

言語についても何でもよいのですが、
JavaやC++,VisualBasicなどいろいろ触ってきた中で最も扱いやすく癖が無いと思ったのがC#でした。
つまり選ぶ言語も好みです。

VisualStudio(最新は2019)は学習用途や個人で利用したい場合はCommunity版が利用可能です。
これからプログラミングを学ぶという方にもおすすめです。
Microsoft社の公式ページからダウンロードができます。

Visual Studio をダウンロードいただきありがとうございます - Visual Studio - visualstudio.microsoft.com
https://visualstudio.microsoft.com/ja/thank-you-downloading-visual-studio/?sku=Community&rel=16

アプリの作成

VisualStudioを利用したアプリ開発は、ここで紹介するまでもなくWebで検索すれば他の開発者のブログで豊富に取り上げられています。
そのため、ここでは公開までの流れを中心にまとめたいと思いますので詳細なコーディングやデザインは割愛します。

1点、アプリの作成はVisualStudioのスタート画面から始まりますが、いきなり紛らわしい箇所がありますのでそこだけ補足します。

アプリは「プロジェクト」という単位で作りますが、VisualStudioの新規プロジェクトの画面だけ注意です。
C#,Windows,デスクトップで絞り込むと、紛らわしい2種類が見つかるはずです。

違いは、.NetFramework4.x系で動くアプリか、5.x系/Coreかの違いです。
私は基本的に.NetFramework4.7系で動くWindowsOS向けのアプリを作っていましたので、青矢印の.NetFramework版の方を利用しています。
※この後の説明もこちらをベースにしています。

2種類それぞれは選べるフレームワークが異なりますのでそこが注意です。
いずれにしても今後は.NetCoreか5.x系で作っていくことがメジャーになりそうですね。
※上:Windows フォーム アプリケーション (.NET Framework)、 下:Windows フォーム アプリ

この先は見慣れた画面ですね。
自分が作りたいようにコードを書いたりフォームのデザインを作ればOKです。

リリースビルド

ある程度アプリが完成して自分が思い描くような動作になってくると、全世界に向けて作ったアプリを公開したくなってくるはずです。

私はデバッグをしている最中にTwitterで発信したくなります。
ぐっと堪えながら作ってます。

今回ご紹介しているアプリは単独実行形式です。
インストールは必要無く、zipファイルを解凍したら含まれている実行ファイル(.exe)を叩くだけで動く形式です。

レジストリを変更する必要もなく、不要になったらファイルごと削除すればよいので私は好きです。

公開する前にアプリのビルドをする上で重要な作業があります。
それが以下の2点です。
それぞれ見ていきます。

  1. アプリ(プロジェクト)の情報をセットする
  2. アプリをリリース用にビルドする

アプリ(プロジェクト)の情報を明記する

VisualStudioの上部メニューから「プロジェクト」を選び、ドロップメニューの最下部にある「(アプリ名)のプロパティ」を開きます。

単独実行形式のアプリの場合はここで指定する情報がめちゃくちゃ重要になります。
実行ファイルの詳細情報になるだけでなく、アイコンの設定やデバッグ情報の設定、バージョン情報などをここで指定するためです。

特に重要な項目が上2つです。

まずは「アプリケーション」です。
ここでは特に「アセンブリ情報」とアプリの「アイコン」を設定したりしています。

アセンブリ情報は、実行ファイル(.exe)のプロパティ情報に書き込まれる内容になります。
ファイルを右クリックして「プロパティ」の詳細から確認できる内容になります。
タイトルや説明、著作者情報やバージョン情報を埋め込むことができます。

続いてが「ビルド」の設定です。
ビルドには大きく「Debugビルド」と「Releaseビルド」があります。

画面上部の「構成」からそれぞれ選ぶと設定が違うことが確認できます。
ここで構成に「Release」を選択してから、下部にある出力の設定箇所から「詳細(D)...」を開きます。

開いた画面の中でさらに出力設定箇所にある「デバッグ情報」について「pdb のみ」から「なし」に変更します。

これは何をしているかというと、
リリースビルドで作成される実行ファイル(.exeファイル)の中に、デバッグ情報を書き出さない設定にしています。

既定で設定されているpdbの状態だと、作成された実行ファイルをメモ帳で開いてみると、、、
pdbファイルのフルパス情報が残ってしまっていて、ログイン中の自分のアカウント名が丸見えですw
※気にならない人は気にしなくてOKです。

設定が終わったら最後はリリースビルドをします。
リリースビルドで指定されているフォルダに実行ファイルが保存されていればリリースビルドは完了です。

難読化

VisualStudioを使った.NetFramework向けの実行ファイルは他の一般的な実行ファイルと見た目は同じですが実はちょっと違いがあります。

実行ファイルの内部では容易に逆コンパイルが可能な中間共通言語(CIL)に変換されたバイトコードが格納されています。
そのため理解がある人であれば元のソースコードを簡単に復元することが可能です。

一個人が趣味で作るアプリをそんなに隠すようなことも無いと思いますが、やはりソースコードは見えてほしくないということは大いにあります。

そこで私は昔から難読化ツールを利用しています。

うーわーさんが作っている「NanDoKu」は、10年以上前から使わせてもらっていて大変お世話になっています。
ご興味のある方は以下のリンクからどうぞ。

(参考)NanDoKu - うーわー Project Produced by Toki - uwa.potetihouse.com
http://uwa.potetihouse.com/soft/index.html

難読化ツールの詳しい使い方は作者のページよりご確認いただければと思いますが、
難読化の実行前と実行後でビルドされたファイルの中身が変わっていることが確認できます。
※数字のみで構成された名前変換の場合の例

単にリリースビルドされた状態のものはクラス名やメソッド名、コンポーネントの名前や変数名まで全てそのまま記載されていますね。

名前を秘匿化できるだけでなく、名前自体が長い場合などはデータの圧縮にもなります。

(参考).NET アセンブリ ファイルの形式 - docs.microsoft.com
https://docs.microsoft.com/ja-jp/dotnet/standard/assembly/file-format

パッケージング

リリースビルドや難読化が終わったら公開するための準備をします。

「そのままzipにしてばら撒けばいいんじゃないの?」

と、思うかもしれません。
アプリを公開する相手が分かっているのであればそれでも良いと思います。

たいていの場合、アプリはインターネット上で公開されて、不特定多数の人に利用されるものと思います。
そうなると、

このアプリは一体何なのか?
何ができるのか?
どう使うのか?
お問い合わせは誰に連絡すればいいのか?
誰が責任をもっているのか?

など、
利用者にはアプリの実行前に知っておいてもらう必要があります。

これらの情報をまとめてreadme.txtなどと一緒に配布することで、アプリを使う前に利用者に知ってほしい情報を抱き合わせることが可能になります。
これを製品を作るイメージでパッケージングと私は呼んでいます。

Readmeに何を書けば良いか分からないよ。。。
という方は、公開されているアプリをいくつかピックアップして、付属しているreadmeを参考にして自分なりに作ってみると良いと思います。

よろしければ一度私が過去に作ったアプリをご参照ください。
最近では、アプリの改ざんチェックのために実行ファイルのハッシュ値も載せたりしています。
アプリとツール - ふくさんぶつブログ

実行ファイルとreadmeを一緒にzipファイルにまとめたら完成です。

公開

全てが終わったらいよいよ公開します。

公開手段は多種多様です。
自分のブログで公開しても良し。クラウドストレージの共有機能を使っても良し。公開サイトを使っても良し。

専ら、私はこれまでずっとVectorを利用しています。
これはいくつか理由があります。

Vectorを利用している理由
・ソフトウェアのチェックをしてくれる(ウイルスじゃないことを証明してくれる)
・より多くの人の目につく
・ダウンロードの状況が分かる
・公開・非公開の制御も簡単

よくわからないサイトやURLからダウンロードしてきたアプリって実行するのに躊躇いますよね?
使う方のことを考えると少しでも安全だと思えるサイトから使いたいものです。

ベクターはPCソフトの公開や販売を仲介してくれます。
事前にソフトライブラリの作者登録が必要になりますが、ご興味のある方はこちらからご覧ください。

(参考)Vector:ソフトの公開・販売をされる方へ - www.vector.co.jp
http://www.vector.co.jp/info/web_form/webform_info.html

今回は、VisualStudioを使ったWindows向けフォームアプリの開発から公開までの流れをまとめさせていただきました。
一個人として特に重要そうなところだけを記載していますが、間違いや他に必要な考慮などがございましたらご連絡の程よろしくお願いいたします。

以上
おつかれさまでした。



View:20737 この記事をツイート!