プログラマという職業をしているとMicrosoft系の情報はブラックボックスで、知りたい情報が見つからないというときのアプローチ方法。今はオープンになっている部分もあるので、使えるものは使いたいという人向け。
#はじめに
この記事には一部正統ではない手法とかも書いています。
試してみる場合は個人の責任とモラルをもってお願いします。
#20年くらい前は・・・
圧倒的に情報がありませんでした。興味のある分野はメーリングリストに参加したり、ユーザグループに参加して最新の情報を集めるのが中心でした。
上下巻で数万円する専門書を買ってAPIを調べたりAPI Viewerで調べたりしていました。C++の場合は、見れる範囲でヘッダやコード見て調べたり。ただし、セキュリティやカーネル周り情報が少なくDLLを直接開いて末尾の関数名から推測して呼び出していました。
レジストリの中からキーワードを探すのも有効でした。TCP/IPの仕様が内部的に変更されたときは見慣れないキーからMicrosoftのエンジニアさんのブログを見つけて、どのように変更したかを調べたりもしました。
今はツールも充実していて、DLLの依存関係やらDependency Walkerで大体の情報は得られることが多いですが、MFCのバージョンアップでソートのアルゴリズムが変わったときなどはSDK周りやMFCからソースを探したりして裏を取ったりしました。
##.NETになってからは
10年くらい前は、
・API周りはpinvoke
・テクニック系のことはcodeproject
で情報を漁っていました。日本では相変わらずカーネル周りやセキュリティ周りの情報は少なかったのですが、海外には色々なテクニックとかを披露されていた方も多かったのでかなり勉強になりました。
##.NETが出た当初は
Visual Studioが出た当初ユニバーサルエディションを50万で購入しましたがバグも多く、これも日本語の情報量がまったくと言っていいほど少なかったです。
System.Windows.Forms.Controlというクラスに継承に致命的なバグがあり、該当箇所のCLR見てMicrosoftに「ここの継承はこうあるべき」と修正箇所をメールに添付して直してもらったり、ADOとDataGridのバインディングにも不具合があったり結構調べて直してもらった記憶があります。
##.NET周りのソースが知りたい場合は、
今は上記から探すことが可能。LINQ周りの挙動であるとか、ソートアルゴリズムの調査などはここで調べたりすることができます。
###この記事を書こうと思ったきっかけ
この「誰でも最初は初心者です」の一言から。
ゴミ記事問題について私が口を挟むことではないので言及しませんが、20年前と比べると確実に情報量が増えています。ひと昔前は、日本は情報公開とか情報共有という文化がまだ根付いていなかったので、このQiitaとか便利な世の中になったと感じています。
初心者であろうと、ベテランであろうと記事は書けばいいと思います。日本の記事が増えるということはイノベーションの促進にもつながるし、より良い未来を作るためには必要だと感じています。