ラベル 開発雑記 の投稿を表示しています。 すべての投稿を表示
ラベル 開発雑記 の投稿を表示しています。 すべての投稿を表示

2016年6月17日金曜日

無料で .NET アプリを難読化

.NET では逆アセンブルが容易です。.NET Reflector などを使えば簡単にコードが見られます。有償ソフトウェアでは死活問題にもなります。そこで生まれたのが難読化です。

Microsoft も難読化が必要としており、Visual Studio には Dotfuscator の簡易版が同梱されております。ただし簡易版は最低限の難読化のみで文字列の暗号化などは行えません。Professional 版のライセンスは日本で購入するとマシンライセンス1台とユーザーライセンス1人で ¥774,200(税抜) からになります。

無料の難読化ツール

  • ConfuserEx
    文字列の暗号化:対応
    オープンソース
  • DotNet Patcher
    文字列の暗号化:対応
    オープンソース、開発終了?
  • NanDoKu
    文字列の暗号化:非対応
    日本語です
  • Obfuscar
    文字列の暗号化:対応
    オープンソース
  • Phoenix Protector
    文字列の暗号化:対応
    動作に .NET Framework 3.5 が必要
  • PreEmptive Dotfuscator and Analytics CE(Community Edition)
    文字列の暗号化:非対応
    Visual Studio に同梱されている簡易版
  • SharpObfuscator
    文字列の暗号化:非対応
    オープンソース、開発終了?

海外の有名どころは Wikipedia の .NET 用難読化ツールの一覧にまとめてありました。無料で一番高機能なのは ConfuserEx です。過去に無料だったツールも幾つかあります。

私は基本的な難読化と文字列の暗号化が行えれば良いので簡単な Phoenix Protector を使っています。

--2017.02.05
Wikipedia のページが消えていたので Internet Archive のリンクを貼っておきます。

■参考リンク
難読化が必要な理由
.NET 用難読化ツールの一覧 - Wikipedia
Silverlight アプリケーションを Dotfuscator で難読化する - Silverlight - ソーサリーフォース

2014年11月25日火曜日

ClipTimer バージョンアップ雑記

Windows XP のサポートが終了したタイミングで開発環境 を Vista に移行しました。開発用の PC は元々 Vista がインストール済みで、別パーティションに XP の開発環境を入れてデュアルブートで使っていました。移行はブートローダーのデフォルト変更を Vista にして完了です。

ソフトウェアの移行は、フリーウェア等はショートカットの貼り直しで完了、Office や Visual Studio など大きいものはインストールし直し、他はブラウザベースで何もしませんでした。あまり意識していなかったクラウド化が自分にも起きていたのを実感しました。

サブマシンは Windows 7 ですが、ほとんど使っていません。Windows 8 は OS だけ買いました。Windows 8 は 軽い?という評判なので HDD に余裕が出来たら試してみたいですね。

本題です。上記の通り ClipTimer の開発環境を Vista に移行しました。IDE も Visual C# 2008 Express に移行しました。Visual Studio Professional 2013 にしよう、と思ったら Vista に対応しておらず、手持ちの Express で一番軽い 2008 にしました。

元々 ClipTimer は VB.NET で開発しておりました。今回の IDE 移行に伴い C# へ移植しました。移植作業中にアプリケーションタイトルのスペルミスなど気になったところを修正変更しております。

各設定値をコマンドライン引数で指定できる様にしました。ショートカットのプロパティから指定してください。

■コマンドライン引数の使用例
インターバル 300秒、バルーン OFF、Beep ON で起動する場合

 ClipTimer.exe -I:300 -BA:off -BE:on
 

ターゲット .NET Framework は 3.5 にせず 2.0 のままにしてあります。試していませんが Windows 2000 でも動くと思います。

■バージョンアップ内容
  • 開発環境 OS を Windows XP から Windows Vista へ変更
  • 開発環境 IDE を Visual Studio 2005 Standard から Visual C# 2008 Express へ移行
  • C# へ移植
  • CilpTimer になっていた箇所を ClipTimer に修正
  • フィールド変数と Clipboard 関連イベントをリファクタリング
  • フォームの文字などを少し大きく
  • コマンドライン引数に対応
  • マイナーバージョンを1アップ

■開発環境
OS:Microsoft Windows Vista Business 日本語 ServicePack 2
IDE:Microsoft Visual C# 2008 Express Edition 日本語 Service Pack 1
Framework:Microsoft .NET Framework Version 2.0 SP2

■関連ページ
ClipTimer(クリップボードを定期的に自動消去)

2013年12月12日木曜日

.NET Framework のサポート期限

2013.12.12 時点の情報になります。

.NET Framework のサポートライフサイクル』に記載されている通り
.NET 3.5 SP1 以降より、.NET Framework は Windows OS のコンポーネントとして扱われます。コンポーネントのサポート ライフサイクルは、コンポーネントをホストしている製品もしくはプラットフォームに従います。
という事になっています。実質終了日を参考にして頂けたらと思います。

なお、今後 .NET Framework 4.5.1 を使用した製品が登場したら 4.5.1 の実質終了日は、その製品のサポートライフサイクルに従い延長される事になります。

.NET
Framework
バージョン
延長
サポート
終了日
実質
終了日
付属しているOS開発ツール
2.0 SP22016/04/12
2020/01/14
3.5SP1に準拠
Windows Server 2003 R2Visual Studio 2005
3.0 SP22011/07/12
2020/01/14
3.5SP1に準拠
Windows Vista SP2
Windows Server 2008
Expression Blend
3.5 SP12020/01/14
OSに準拠
2020/01/14
OSに準拠
Windows 7
Windows Server 2008 R2
Visual Studio 2008
42020/09/08
VS 2010に準拠
2020/09/08
VS 2010に準拠
-Visual Studio 2010
4.52023/01/10
OS,VSに準拠
2023/01/10
OS,VSに準拠
Windows 8
Windows Server 2012
Visual Studio 2012
4.5.12024/04/09
VS 2013に準拠
2024/04/09
VS 2013に準拠
Windows 8.1
Windows Server 2012 R2
Visual Studio 2013

2.0 と 3.0 と 3.5 は全て共存できます。3.5 は 2.0 と 3.0 を内包しています。
2.0 や 3.0 向けに開発したアプリケーションは全て 3.5 SP1 で完全動作します。

4 と 4.5 は共存できません。4 と 4.5.1 も共存できません。4 がインストールされている環境に 4.5 系をインストールすると 4 は 4.5 系に置き換えられます。
4 向けに開発したアプリケーションは、極一部の例外を除き 4.5 や 4.5.1 でも問題なく動作します。

--2015.07.21
Visual Studio 2015 と合わせて 4.6 がリリースされました。近くリリース予定の Windows10 に搭載されるのも 4.6 です。この 4.6 はインプレース更新になり 4, 4.5, 4.5.1, 4.5.2 のいずれかがインストールされている環境だと置き換えられます。4.6 まで 4系という事です。

■参考リンク
.NET Framework のサポート概要
.NET Framework のバージョンおよび依存関係 - .NET Framework 4.5 移行ガイド
サポート ライフサイクル - 製品一覧
.NET Framework - Wikipedia

■関連投稿
.NET Framework のサポート期限
Visual Studio 2005 と .NET Framework 2.0 の寿命

2011年2月16日水曜日

フリーウェアとフリーソフトウェア

フリーウェアとフリーソフトウェアは同じ物と思われがちですが、全くの別物という事をシェアウェアも交えて紹介します。

  • フリーウェア(無償)
    日本では色々と歴史があり和製英語のフリーソフトと呼ばれる事が多いですが、英語圏でのフリーウェアが正式名称です。
    有償のシェアウェアと対に扱われる事が多いので、無償はその反対でフリーウェアと覚えれば良いかと思います。
    趣味の追求の為、精神的報酬や名声の為、社会貢献を目指す為に開発を行う作者が多いです。

    配布形態: exe 等の実行形態(バイナリイメージ)
    ソースコード:非公開(一部公開している物もある)
    改変:禁止(商用ソフトウェアと同様)
    複製:制限していない事が多い
    オリジナルの再配布:禁止している事が多い(一部に許可制の物もある)
  • シェアウェア(有償:無償の試用期間を設けている物もある)
    個人が有償のソフトウェアを公開した時にもシェアウェアと呼ばれる事もありますが、本来は開発費の一部をユーザーに分担(シェア)してもらうソフトウェアを指します。
    基本的に低価格での提供を目指す場合が多いです。

    配布形態: exe 等の実行形態(バイナリイメージ)
    ソースコード:非公開(一部公開している物もある)
    改変:禁止(商用ソフトウェアと同様)
    複製:制限している事が多い(1ライセンスにつき 2PC まで OK 等もある)
    オリジナルの再配布:禁止している事が多い(一部に許可制の物もある)
  • フリーソフトウェア(権利関係がフリーなので無償が多い、一部有償もある)
    フリーソフトウェア財団(Free Software Foundation)が提唱するフリー(あらゆる権利関係を自由にした)なソフトウェアを指します。代表的なものに GNU プロジェクトがあります。
    オープンソースソフトウェアとは異なる部分もありますが、オープンソースのカテゴリに含まれます。でも、フリーソフトウェア陣営は一緒にしないで欲しいと主張してます。
    また、後に商用化によりフリーが制限される可能性の残るフリーウェアよりも、派生ソフトウェアも含めて必ずフリー(非商用という意味ではない)が約束されるという理由から、より完全な社会貢献を目指し、あえてフリーソフトウェアとして開発を行う作者もいます。

    配布形態:ソースコードや exe 等の実行形態(バイナリイメージ)
    ソースコード:必ず公開(非公開はダメ)
    改変:自由、改変後の配布可(派生ソフトウェアは必ずフリーソフトウェアにする)
    複製:自由
    オリジナルの再配布:自由

フリーソフトウェアの思想は素晴らしく、ユーザーや開発者側には良い事ばかりですが、商用ソフトウェア側から見ると色々と条件が厳しすぎる為、商用化されているフリーソフトウェアは少ないです。その辺りを若干緩和したのがオープンソースソフトウェアという事になっています。とはいっても、オープンソースソフトウェアの約半数はフリーソフトウェアに属しています。

自分のソースコードを公開するというのは結構勇気のいる事だと思います。

■参考リンク
フリーソフトウェアの定義
オープンソースの定義
フリーソフトウェア財団(Free Software Foundation)
sourceforge(オープンソース向けポータルサイト)

2011年1月31日月曜日

Visual Studio 2005 と .NET Framework 2.0 の寿命

 世間では Visual Studio 2008 や 2010 が .NET Framework の IDE として大活躍しておりますが、私は特にバージョンアップの必要が無かったので、未だに Visual Studio 2005 を使用しています。

.NET Framework 3.5 には .NET Framework 2.0 が含まれる為 .NET Framework 2.0 で開発したアプリケーションは .NET Framework 3.5 上でも動作します。従って、ターゲット環境が .NET Framework 3.5 の動作する Windows であれば Visual Studio 2005 でも開発が可能という事になります。

しかし、いくら開発が行えても MS のサポート期限が切れてしまっては安心して配布できません。.NET Framework のサポート ライフサイクルが、これまた複雑です。.NET Framework 2.0 のメインストリームサポートは今年 2011年4月12日で終了しますが、延長サポートは2016年4月12日まであります。
ところが .NET Framework 3.5 は Windows 7 に最初から含まれているので、ライフサイクルは Windows 7 に準拠します。Windows 7 のビジネス向けエディション(Professional, Enterprise)の延長サポートは2020年1月14日まであるので、実質これが .NET Framework 2.0 アプリケーションの寿命となります。

とはいっても、来年には Visual Studio の次期バージョン 2012? か 2010 にバージョンアップする予定です。

余談...今さらですが、今度 Visual Studio 2005 extensions を入れてみようと企んでます。

--2016.02.15
Windows 10 も Windows 8 同様 .NET Framework 3.5 が同梱されています。Windows 10 のサポート期限は2025年10月14日になります。これにより .NET Framework 2.0 の実質寿命も同日まで延長されております。

■参考リンク
.NET Framework デベロッパー センター:.NET Framework のサポート概要
Wikipedia:Microsoft Windows 7 サポート期限

■関連投稿
.NET Framework のサポート期限
Visual Studio 2005 と .NET Framework 2.0 の寿命

2010年12月19日日曜日

地図に複数住所をマッピング

数100件程度の簡単な名簿を Excel (エクセル)等で管理している人は多いと思います。それを活用して年賀状の宛名を印刷したり、会社であれば宛名シールを印刷したり、などなど。
低予算で、その名簿と地図を連携させる方法はないものかと、相談を受けて色々と調べてみました。

真っ先に思い浮かぶのが Google Maps (グーグルマップ)です。名簿の住所を API に投げてやれば出来そうな感じです。ただ商用のPCソフトウェアから Google Maps API を利用するのはライセンス上問題がある様で、そういった場合は Google Maps API Premier の契約が必要になるらしいです。Google Maps API を無料で利用する為のキーワードは『地図自体を、いつでも、誰でも、どこからでも、無料で利用できる状態』との事でした。

ホームページを公開して、そこに複数住所を入力して Google Maps API を利用するのはライセンス上問題はない様です。ネットを検索してみると、そういったサービスを提供しているホームページが幾つか見つかりました。ただ、Google Maps 以外のサーバーへ個人情報を送信するのは避けたいという人もいると思います。

個人情報の流出リスクは抑えたい、となるとネット上のサービスは使えません。ゼンリンなどの地図 DVD を読み込んで表示する方法になります。それを自前で開発するとなると低予算という訳にはいきませんが、ゼンリンのホームページを見ていたら『ゼンリン電子地図帳Zi13』なるソフトがありました。価格も14,700円という事で、これで行けそうな感じです。

なお Google Maps API のライセンスについては Google Enterprise Japan 公式ブログに詳しく書かれています。

■参考リンク
Google Enterprise Japan 公式ブログ: Google Maps APIとGoogle Maps API Premier(有償版)の違いについて
ゼンリン電子地図帳Zi13(機能紹介 - データ展開機能:CSVデータ取り込み機能)
ゼンリン電子地図帳Zi14(機能紹介 - データ展開機能:CSVデータ取り込み機能)

2010年12月10日金曜日

Access で開発されたシステムのリプレース

 当初 Microsoft Access(アクセス) で開発した小規模システムが、データ量の増加、パフォーマンス低下、複数クライアントで使用したい等の理由で .NET(VB.NET, C#) + RDBMS にリプレースしたい、という案件はそれなりに多いと思います。

 RDBMS の候補としては幾つかありますが、無償提供されている、エンジニア人口もそれなりに多い、簡単な保守ならユーザーだけでも行える、Visual Studio との相性がバツグン等の理由で Microsoft SQL Server Express が人気です。
開発費を抑えたいユーザー、開発をスムーズに進めたい開発者の双方に都合が良いと、まさにマイクロソフトの思うつぼですが、やはり良いものは良いです。

 SQL Server も MSDE の頃は制限も多く保守も大変でしたが SQL Server 2005 Express になってからは Management Studio Express が使える様になり保守性が非常に高くなっています。あと問題になってくるのはデータベースサイズですが、これも元々 Access の小規模システムであればお釣りが来ます。
その他にもユーザーの指定で Oracle(オラクル)を採用したりオープンソースの MySQL 等を採用する場合もあります。

 また、スタンドアロン環境での使用が前提でクライアントに SQL Server は重過ぎる、といった場合は SQL Server の Compact Edition を採用する事もあります。
このあたりだと最近 SQLite が動作が軽く信頼性もそれなりの評価で人気がありますね。

■関連投稿
Access について
Access で開発されたシステムのリプレース

Access について

 Microsoft Access(アクセス) は Microsoft Office Professional 以上に含まれている製品でワードやエクセルの様に単体でも販売されています。データベースと開発環境が一つにパッケージされていて、開発側にとってもユーザー側にとってもコストパフォーマンスが非常に高い製品です。
同じだけの開発環境を Visual Studio で揃えたら数十万はかかると思います。

 また Access には開発に必須の各種コンポーネント(複数列コンボボックス、帳票など)が標準で、用意されていて開発時の生産性が非常に高いです。特にレポート機能は超が付くくらい高機能です。このレポート部分だけでも.NET版コンポーネントで売って欲しいです。

 互換性についても、独自コンポーネントを使用したり Win32API を多用したり、全てコードで処理する様な作り方をしない限りは、互換性は高いです。Access 97 で作成したシステムを最新の Access 形式に変換したらそのまま動作する、という事もあります。

 そんな良い事だらけの Access ですが、短所も幾つかあります。
MDI でしか使えないフォームは .NET の Windows アプリケーションと比較したら貧弱です。多くの方が割り切っている点だと思います。Access からネイティブ EXE がコンパイルできたら最強なんですけどね。
データ量が増大した場合にパフォーマンスへの影響が大きい。これがきっかけで .NET(VB.NET, C#) + RDBMS へリプレースするユーザーは多いと思います。
ごくまれに DB が破損するという致命的な障害が発生する事がある。これは、まめにバックアップを行ったり、システムと DB を別ファイルに分離する事で、ほぼ未然に防ぐ事は可能です。

 短所もありますが、ユーザーにとっての利点も後押しして Access で開発された(現在もされている)小規模システムは多いです。
ただ最近は .NET(VB.NET, C#) の開発環境が良くなってきたせいか、小規模システムでも Access を採用しない例が増えている様な気はします。

■関連投稿
Access について
Access で開発されたシステムのリプレース