|
検索
タグ
ASP.NET
.NET
ASP.NET MVC
F#
Visual Studio
Azure
ASP.NET Core
ライトニングトーク
Plone
Selenium
AJAX
C#
jQuery
JavaScript
SQL Server
ADO.NET Entity Framework
WebMatrix
LINQ
EFCore
TypeScript
カテゴリ
最新の記事
最新のコメント
記事ランキング
最新のトラックバック
以前の記事
2026年 01月 2025年 12月 2025年 11月 2025年 10月 2025年 09月 2025年 08月 2025年 07月 2025年 06月 2025年 05月 2025年 04月 2025年 03月 2025年 02月 2024年 12月 2024年 11月 2024年 10月 2024年 09月 2024年 08月 2024年 04月 2024年 03月 2024年 02月 2024年 01月 2023年 12月 2023年 11月 2023年 10月 2023年 09月 2023年 08月 2023年 07月 2023年 06月 2023年 05月 2023年 04月 2023年 03月 2023年 02月 2023年 01月 2022年 12月 2022年 11月 2022年 10月 2022年 09月 2022年 08月 2022年 07月 2022年 06月 2022年 05月 2022年 04月 2022年 03月 2022年 02月 2022年 01月 2021年 12月 2021年 11月 2021年 10月 2021年 09月 2021年 08月 2021年 07月 2021年 06月 2021年 05月 2021年 04月 2021年 03月 2021年 02月 2021年 01月 2020年 12月 2020年 11月 2020年 10月 2020年 09月 2020年 08月 2020年 07月 2020年 06月 2020年 05月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 12月 2019年 11月 2019年 10月 2019年 09月 2019年 08月 2019年 07月 2019年 06月 2019年 05月 2019年 04月 2019年 03月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 09月 2018年 08月 2018年 07月 2018年 06月 2018年 05月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 11月 2017年 10月 2017年 09月 2017年 08月 2017年 07月 2017年 06月 2017年 05月 2017年 04月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 09月 2016年 08月 2016年 07月 2016年 06月 2016年 05月 2016年 04月 2016年 03月 2016年 02月 2016年 01月 2015年 12月 2015年 11月 2015年 10月 2015年 09月 2015年 08月 2015年 07月 2015年 05月 2015年 04月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 09月 2014年 08月 2014年 06月 2014年 04月 2014年 03月 2014年 02月 2014年 01月 2013年 12月 2013年 10月 2013年 09月 2013年 08月 2013年 07月 2013年 06月 2013年 05月 2013年 04月 2013年 03月 2013年 02月 2013年 01月 2012年 12月 2012年 11月 2012年 10月 2012年 09月 2012年 08月 2012年 07月 2012年 06月 2012年 05月 2012年 04月 2012年 03月 2012年 02月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 10月 2009年 09月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 |
2015年 12月 09日
少し昔話をさせてください...。
A long time ago in Japan...自分が本格的に "仕事" としてパーソナルコンピューターのプログラミングを始めたのは、まだ Windows は 3.0 が出回り始めた頃。ハードディスクはあったけどまだまだ高価で容量は 20MB (GBの書き間違いではない。メガバイト。) 程度、メモリ容量もたかだか 1MB 程度で、CPU のbit幅は実質16bitでクロックは 25MHz、画面の解像度は 640x400、色深度は 3bit (8色) というのどか(?)な時代だった。 初めの頃は NEC PC-9801 及び EPSON による互換機の上で、OS としては MS-DOS 上で、Microsoft C コンパイラを使って C 言語で CAD っぽい何か的な GUI プログラムを書いていた。 ちなみにエディタは RED を使用。MS-C 付属の Programmer's Work Bench は重くて使う気になれない代物だった。 そうこうしているうちに、一部の層とはいえ徐々に Windows 3.0 が認知され始め、自分の "仕事" でも Windows 用のプログラム開発が始まった。 当時、C++ 言語も広まり始めていた。 とはいえ、すぐには C++ 言語を使っての Windows 3.0 用プログラムを開発とはならず、暫くの間は C 言語での開発が続いた。 すなわち、C 言語のソースコード中でゴリゴリと Windows API を呼び出し (※まだ 16bit 時代なので Win"32" API ですらない)、ウィンドウハンドル相手にコーディングしていたものである。 C++ 言語に移行したのは、Microsoft のコンパイラ製品に、MFC、すなわち Microsoft Foundation Class ライブラリが同梱されるようになって以降であった。 ...というのが、恐らくは 20 年かそれ以上前の頃のはずだ。 そして突然話は変わって現代 - ちょっと宣伝拙作の Windows 用デスクトップアプリに「Switch to Demo for Presentation」というのがある。起動するとタスクトレイに常駐。 そして、PowerPoint によるスライドショーの最中に、キーボードの Windowsキー + Shift + H を押すとスライドショーがフェードアウトして Windows のデスクトップが現れ、 もういちど同じキーコンビネーションを押すとスライドショーがフェードインして戻ってくる、 というもの。 手元の Windows 10 & PowerPoint 2016 でも正常動作している。 ソースコードは、現在は GitHub に移管、GNU GPL v2 ライセンスで公開している。 https://github.com/jsakamoto/Switch-to-Demo-for-Presentation .exe ファイルの Zip アーカイブも、上記 GitHub リポジトリの release ページからダウンロード可能である。 ...で、どう話がつながるのか?さて「Switch to Demo for Presentation」のソースコードなのであるが、ズバリ、実質 C 言語な C++ 言語ソースで、Win32 API を素で呼び出す実装なのである。MFC はもちろんのこと、C++ の標準ランタイムライブラリを除く一切の他のライブラリを使っていない。 変数スコープの記述が楽になるので C++ 言語を採用してはいる。 が、クラスや例外などなど、C++ ならではの言語機構は一切使わず、実質、C 言語と概ね同等のコードとなっている。 なので、
なにせ実質 C 言語で素の Windows API 呼び出して構築してあるため、グローバル変数も満載で、前方参照のために関数プロトタイプ宣言もばらまかれており、ぶっちゃけ汚いソースコードではある。 ...で、何が言いたいのかというと、 20年以上前の知識で、いまだに Windows 10 でも動くプログラムが作れるという、Windows OS の互換性の高さってちょっとすごくない? と思った次第。 まぁ、過去との互換性が高くてもそれってただの遺物じゃん、とか、別にユーザー体験の向上に与しないのでわ、等々、辛口の感想もあろうかと思うが、まぁなんというか余興というかネタ的なものなので、「おお、そうきたかw」と受け取っていただけると嬉しい。 いやホント、「Switch to Demo for Presentation」を C# + WinForms or XAML で書かなかったのは、上記オチを言いたいためだったりします :P おまけちなみに、「Switch to Demo for Presentation」本体は先述のとおり素の Windows API 呼び出しな C/C++ 言語で書かれたプログラムなので .NET Framework をはじめとした他のランタイムライブラリを必要とせず、.exe ファイル一本で動作する。だがそのいっぽうで「Switch to Demo for Presentation」は ClickOnce アプリとしても下記サイトで配布している。 ClickOnce Get http://j.mp/clickonceget ClickOnce 配布できるアプリは、.NET Framework 上で動作するマネージドアプリケーションに限定されるはずなのに、なぜ Win32 ネイティブな「Switch to Demo for Presentation」が ClickOnce 配布できるのか、その話題はまた別の機会にでも。
by developer-adjust
| 2015-12-09 07:54
| Windows
|
ファン申請 |
||