プロフェッショナル Visual C++ 2010

ProVCpp2010

ぜんぜんプロフェッショナルなプログラマーではないのに、絶版の『プロフェッショナル Visual C++ 2010』(矢嶋聡著)を古書で買った。定価よりは安かったが古書の割にはいい値段がした。今見たら日経BPのオンラインショップではまだ手に入るっぽい。

自分の開発環境がVisual Studio 6(Visual C++ 6.0)でほぼ止まっているので、アマゾンの評価は星5つで内容的にも「良書」となっているこの本を選んだ。結論からいうと自分にはちょうど良い「読み物」にはなった。VC6やC++/CLIの基礎で覚えたことを継承しつつ、Visual Studio 2010/2013/2015に知識をアップグレードするのに十分な内容。

ただ、ほかの人に薦められるかどうかは微妙。基本的にはVisual C++でできることのMSDNライブラリ的なチュートリアルというかウォークスルーなので、前提としてC++の基礎が身についていること、クラスライブラリやテンプレートライブラリが何物か理解してること、Visual Studioのだいたいの操作ができること、C++/CLIと他のCLRな言語との対応がなんとなく分かってること、MFCの概念がなんとなく分かっていること、COMとは何たるか、くらいが分かってないと通しで理解するのは無理な気がする。前のC++/CLIの本と同じで、インストールの次からいきなりCOMですか、ってなるし。

あとVisual Studio自体の使い方の説明はほとんど無い(本当に重要なことは丁寧に書かれている)、というか、むしろVisual Studioの機能を使わずにコーディングしましょうという趣旨なので、この本だけでVC++2010をマスターしようというのは無謀だ。

良書なれども、読み手を非常に選ぶ。理解できれば今でも通じる知識が広がること間違いなし。

Visual C++ 2012以降は解説本が急速に減っている。UIデザイナがサポートされなくなってきたのが大きいのだろう。Visual C++を学習するならVisual Studio 2010対応の本を使うのが今のところ良いのかもしれない。ただしVS2010はC++/CLIのインテリセンスが使えないという最大の欠点があるから使う環境はVS2012/2013にしよう。

C++/CLIの本を最近のVisual Studioで試す

IMG_4235.JPG

アマゾン古書のぼったくり価格で買った『実践 C++/CLI 極めるための基礎と実用テクニック』(中 博俊 )

C++/CLIは、.NET Frameworkの共通言語基盤 (CLI)上で実行するプログラムを作るためにC++を拡張したプログラミング言語である。Wikipediaより

VS構成員の中ではJ#やF#並みにマイナーな扱いのC++/CLIはVisual Studio 2005でデビューしたが、実際のところ次バージョンのVS2008以降サポートが縮小されて続けている。2008ではASP.netのテンプレートが無くなり、2010ではインテリセンスがなくなったり(2012で復活はした)、データセットテンプレートも無くなり、2012でWindowsフォームが無くなり、2017だとフォームUIを後から追加することすらできないとか、MS自身もC++/CLIでUI作るの非推奨と言っているから、もう既存プロジェクトの保守以外は使うなってことみたいです。今後はC++/CLIはグルーコードに徹して他はC#でもおとなしく使ってろってことだ。まあ、グルーコード書けるのはILアセンブラだけだよ、って言われるよりはいいかもね。

そんなわけでC++/CLIは資料も本も少ない。「C#でもできるようなことだけ」を「わざわざC++/CLIに置き換えただけ」の解説本も多くて、そんなのは読むだけ時間の無駄だ。冒頭で挙げた書籍はそうではく、きちんとレガシーC++の世界やC++ライブラリの世界とCLRの境界を意識した解説を(かつ日本語で)しているのでそういった意味で希少。C++/CLIの前身であるC++マネージ拡張の解説も載っててちょっと嬉しい。そういうのはVS.net(2002)でC#のデリゲート、アンマネージドコード・Win32 API呼び出しあたりの吐き気のする構文避けてきたし。

でもVS2005時代の本なのでさすがに内容が古くなっている。VS2013で動くかどうか確認してみた。

  • 第1部Chapter1 ~ 4 は文法解説だけなので特に問題なし。

第2部は「Visual C++ 2005 Express EditionによるC++/CLIプログラミング」で、苦労しそう。

  • Chapter5 Visual C++ 2005 Express Editionの導入
    読み飛ばして問題なし。動作確認としてMFCアプリを作っているので、2008以降のExpress Editionでは無理。ProfessionalかCommunityを用意する。VS2013Proでは操作が異なるが、特に問題なし。
  • Chapter6 より実践的なC++/CLIプログラミング
    COMとの連携。いきなりCOMですか、て感じなのでMFCの本でCOMの使い方を勉強してから読むこと。無理なら後回しでも良い。WindowsフォームCLRアプリが出てくるのでVS2013では無理。VS2010以前も必要。

第3部「C++/CLI実践プログラミング 過去の資産活用事例」と副題。

  • Chapter 7 アプリケーションの設定情報をXML化する
    過去の資産といいつつ、現在でも使えるテク。XMLといいつつ.configに保存する方法にさりげなく変更。コンソールCLRアプリで、VS2013でも問題なし。
  • Chapter 8 C++で保存していたデータを他言語から利用する
    「シリアライズ」というキーワードがあるがMFCのArhiveではないので混乱する。WindowsフォームCLRアプリが出てくるのでVS2013では無理。VS2010以前も必要。
  • Chapter 9 データベースアクセスプログラムをADO.NETに変更する
    ADO、ADO.net、DBのスタティックバインドなんかを非常にあっさり説明してるので、データベース接続のプログラムを組んだ経験がないと難しい。しかもサンプルがOracle DBのネイティブ接続だからOracle無いと試せんし。Access2016で.accdb作ってODBC経由で試した。さらに三重苦としてVS2013にはデータセットテンプレートが無いのでそのままは無理。C#で組んでからインポート後、少しいじる。

第4部「.NET Frameworkクラスライブラリの活用」となっていて、ネイティブC++は使わないのだが、WindowsフォームCLRアプリがそこかしこに出てくるのでVS2013はそのままでは無理。この章はC#でさらってもいいくらい。

  • Chapter 10 暗号ライブラリの利用
    すべてWindowsフォームCLRアプリで組んでいくので一工夫必要。
  • Chapter 11 .NETリモーティング
    コンソールCLRアプリなのでVS2013でも特に問題なし。実行方法などはもう少し解説があったほうがいいかも。この辺から誤植が多い。
  • Chapter 12 XML Webサービスの作成と利用
    VS2008以降はC++Webサービスのサポートが無いので無理。ソリューションのコンバートを行ってもうまくいかなかった。XP+VS2005Proでないと動かない。C#で組みなおせばVS2013でもできるがそれでは意味が無い。

ひととおり試したら最後のChapter12以外はなんとか動かせたけれど結構苦労する。特にChapter9。苦労したくなければXP+VS2005Proの環境を構築するのが手っ取り早い(今回はVirtual Box上にWin XP+VS 2005とWin8.1+VS2010+VS2013を構成した)が、それ以外は対処方法もあるので後日追記予定。ただ、サンプルを動かすにはMSDNでVisual Studio Pro 2005/2010/2013を同時に使える環境を用意するのが手っ取り早い。無償で使えるVisual Studio 2017 Community(MSDNサブスクリプション無し)では困難が多い気がする。

今日のおもしろQ&A。

VisualC++で、windowsフォームアプリケーションを作りたいです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10144686995

VC++でオヌヌメの本ありますか?って聞いたら「書籍としてどういうものがあるのか分からない」と個人的経験を述べられたうえで「C++/CLI で作っても意味無い」とぶった斬られたでござるの巻。

C++/CLIベースのUIがすでにMSからも見捨てられてるっていうのは明らかだとしても、ILアセンブラでフォームアプリ作りたいんですっっ!、て技術的興味がある人も世の中にはもいるよね。VC++でフォームでCLR部分だけの本なんてVisual Studio 2010前後のならこれとかこれとか結構あると思うし。

インテルRSTとスリープ・休止状態

NUC6i7KYKでせっかくSSD二枚挿しにしたからRAID0で最速構成。

でもスリープの復帰ができない。休止状態からの復帰もできない。ブルースクリーンとか変なピンクスクリーンで、CRITICAL_PROCESS_DIED。どうもRAIDコントローラを見失うらしく当然ページファイルその他も見失ってBSODしかできない様子。

IDEというかメインストレージコントローラまわりのインテル製ドライバって鬼門だわ。430TXのバスマスタドライバとかそのあたりから始まって、AHCIモードとか、さんざん不具合で結局MS純正ドライバが一番安定してるとか。

 

FLAC、ALACを陥落。

iOS11、無劣化圧縮のハイレゾ音源形式FLACに対応! – iPhone Mania
http://iphone-mania.jp/news-170816/

遅い。遅すぎる。囲い込み以外、何の利点も無いALACを黒歴史として葬り去る時が来た。

マカーらのブログ(笑)で「WAV? FLAC? ( ´_ゝ`プッ。ALACに統一してCD断捨離(`・ω・´キリッ!」みたいな意識高いご意見を見た気がする。そもそも対応してなかったものだし、ない袖は振れないから仕方ないけどね。ALACのサポートがなくなるわけではないが、AppleがALACだからFLACなんかより良いはずとついてきた信者様。今、何思うか。

ズームレンズ広角端の歪

今使っているキヤノンのコンパクトデジカメはiPhoneなんかのスマホなナンチャッテ高画質と比較すると圧倒的にきれいなんだけど、電源オン時にズームが広角端になってるのがいまいち。スマホのカメラも起動時はだいたい広角側になってるので同じ。

このコンデジは広角は35mm換算で24mm相当になってて、広角側で直線のあるものを撮ると結構歪んでる。少しズーム側に動かすとか、後で中央部分をトリミングするとか簡単に対処できるんだけど、撮って出しで掲載したらそれは気になる。コンデジの電源オン時とか、スマホアプリ起動時は最後のズーム比くらい覚えててほしい。

新聞記事(新聞社の記者が撮ってるようなやつ)なんかですら、人物集合写真なんかだと、どうも広角端で撮っているようで端っこの人がぐにょーてなっててなんだかなーとか思う写真もときどき見かける。

ボリューム歪像とは何か
http://www.dxo.com/jp/photography/…

 

 

暇なんで動画でも見る

連休で暇すぎるのでバカ動画、事故・グロ・ドッキリ動画なんかを延々と見て無駄な時間を過ごした。

ユーチューバーはゲームのアイテム課金に100万円使ってみたとかいう動画で無駄なことしてるなとか思ったが、ここ数年で自分も100万円くらいはデジタルアイテム・デジタルガジェットに浪費してる気がした。無駄遣いだったと感じるものをあげると…

Mac18万、iPhone10万、MSDN 15万、Windows OS 10万、Office Mac 4.5万、Offce Pro Plus 10万、ATOK 1万、Android有料アプリ2万、iPhone有料アプリ2万、Windowsストア有料アプリ2万…

すぐに思い出すものだけで75万円以上浪費してて、ここのブログネタ以外では結局いらんわーてっなってるのが多い気がする。広告設定もしてないからwordpressが儲かるだけで特に見返りがあるわけでもなく。

トップなユーチューバーは広告やアフィ収入がっぽがっぽで100万円くらいすぐ回収できるんだからううらやましいのです。

自宅使用プログラム(HUP)でOfficeを使ってみる。

個人なのにMS Office Pro PlusをSA付きで買ってしまったので、SA特典の自宅使用プログラムでOffice Pro Plusを一個買ってみた。

Home Use Program
https://www.microsofthup.com/hupjp/home.aspx?culture=ja-JP

ボリュームライセンスのOfficeをSA付き契約すると自宅使用プログラムを使って格安に1,400円でOfficeを1契約ぶん使うことができる(本当は1,400円などといわずにタダで使わせてほしい)。ケチな会社だとSA無しの場合もあるので、職場がPro Plusを導入してるからといって必ず使えるわけでもないあたりは注意。

買い方は特に難しくは無くて、よくある会員登録のあるオンラインショップと同じ。

  1. VLSCで管理者がユーザ(従業員)にHUPの招待メールを送信。
  2. ユーザが招待メールを受信したら文中のリンクをクリック。(VLSCで指定したドメインに限る。)
  3. もう一度メールが送信されてユーザを確認。二回目のメールの文中にそのユーザ専用のHUPショッピングサイトの入り口がある。
  4. ショッピングカート方式で品物を購入してクレジットカードで決済。
  5. その場でプロダクトキーの提示とインストーラのダウンロードを行う。
  6. 自宅PCでインストール、ライセンス認証。

ユーザ側の操作でメールが二回送られてくるところが若干手間なのと、1~2の手順がGmailやoutlook.comのフリーメールでは完了できなかったので普段使ってないISPの.ne.jpドメインのメールを使った。

WindowsではPro Plus、MacではHome and Businessらしいが、両方いっぺんに買おうとしたらなぜかエラーになって決済が進まなかったので、今回はWindowsのPro Plusだけにした。フレコミでは「職場と自宅で同じ環境だから生産性が上がる」と在宅でのサービス残業を勧めるブラック感満載のキャッチだが、どうもVL版とは少し違うっぽい。HUPで買えるのは次のページでも分かるとおりFPP版(パッケージ版)のPro Plusてことになっている。職場で使うPro PlusはVL版。

自宅使用プログラムで Office をインストールまたはアンインストールする

「Pro Plusはボリュームライセンス専用」てさんざん書かれてるのに。HUPでインストールしたWordでライセンス情報を表示させたら、さらに意味が分からなくなった。

officehup1

クイック実行形式でインストールされたのはいいとして、いきなりライセンス認証が必要とか警告してて、初期状態では隠れている追加ライセンス情報を表示するとPro Plusのライセンスが通っていることが分かる。Proのライセンスは認証ボタンで認証ウィザードが動くのだが当然のように蹴られる始末。

officehup2

時計を進めて6月にすると「ライセンス無し」になった。この状態でもPro Plusのライセンスは保持されてるので制限モードにはならず、通常通り編集や保存の操作ができる。

どちらの画面でも「Officeの更新プログラム」ボタンがあるから、これがVL版では無くてFPP版であることが分かる。次の画面は以前も出したVL版のExcelのライセンス表示。MSIインストールのVL版はWindows Updateで更新するからここには更新ボタンが無い。つまりHUPで買うOfficeはPro PlusだけどFPP版とかいう超レアなアイテムだってことが分かった。

office2016-VL1

で、FPP版のPro Plusでここにある更新ボタンで更新をかけるとPro Plusが消えて通常のProになった?!?! 起動するたびにライセンス認証ウィザードが出て制限モードのカウントダウン始まる orz

な・ん・な・の・こ・れ!!!

いったん削除して元のHUPのPro Plusインストーラを使ったら元の状態には戻ったけど、更新すると認証が外れるとか意味分かんない。このエディションはレア過ぎて検証してないんだろうか。これ生産性が上がるどころかシス管のサポートが増大するだけじゃない?

デジタルリテラシー CBT

この顔で画像検索したら、「Microsoft デジタル リテラシー カリキュラム」が引っかかった。

avator

Microsoft Digital Literacy Curriculum
https://www.microsoft.com/ja-jp/digitalliteracy/default.aspx

て、これ前にエントリに書いたWindowsボリュームライセンスのSAで特典として提供されてるのと同じだ。

lifestyle.jpg

道路でインラインスケートしながら隣にいるタブレットで映画を見る人とスマホでテキストチャットしつつイヤホンで音楽を聴くとかいう素敵なデジタルライフを紹介するよ!

 

Windows Enterprise を Creators Update してみた。

世間ではWindows 10のCreators Updateが解禁されたとかいって一部で騒いでるけど、待ってても一向に入ってこないのでよく確認したら使ってるのがVL版のWindows 10 Enterpriseだった。

手動で更新アシスタントを使ってみても次の表示。Entreprise版は対応してない。管理者に連絡しろって、だから自分が管理者なんだって。「このPCはWindows10を実行できません」っていう表示もおかしい。Anniversary Update(1607)のWindows10で動かしてるし。

cannotupdate

VLSCでのCreators Update提供は5月1日ってことらしい。でも改善されたWSLが結構便利だから、一刻も早く使いたいし、先にMSDNサブスクライバーで公開されたVL版のEnterprise ISOイメージを使って更新をかける。

ja_windows_10_enterprise_version_1703_updated_march_2017_x64_dvd_10204231.iso をダウンロードしてそのままマウント。勝手にインストーラが動くので更新を開始。

cannotupdate2

今度はインストール準備が進んだ。

cannotupdate3

i5ノートで思ってたより時間がかかったが、終了。

cannotupdate4

MSDNを使えない場合は、評価版のWindows 10 Enterpriseで入手できるISOでも更新できる気がするが面倒なので未確認。

EnterpriseがProやHomeと違うのは自動で更新がかからないという点であって、ISOイメージがあればアップグレードはできる。現在はVLSCで1703も公開されてて通常のVL契約だけでMSDNの契約がなくてもISOイメージをゲット可能。

2017年6月上旬追記

もう一台のドメインコントローラ無しのスタンドアロンで使ってるWin10 Entは6月に入ってからWindows Updateをかけたら勝手に1703になった。そこそこ良いスペックなので更新1時間+クリーンアップ1時間ほどだったが、これが企業の「特定用途向けPC」(低スペック低価格PC→安いだけの日常業務用PCに転用)だったら地獄だろう。

よく分かってない人が出社時、無意識に更新開始すると、半日~1日は仕事にならないと思うのでグループポリシーで自動更新にならないようにするとか、事前に夜間に更新するとかしとかないとヤバい。