<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ほげぐらまの別館 &#187; プログラム</title>
	<atom:link href="http://lain.heavy.jp/lain/category/computer/program/feed" rel="self" type="application/rss+xml" />
	<link>http://lain.heavy.jp/lain</link>
	<description>プログラムに限らずてきとーに、ね？</description>
	<lastBuildDate>Sat, 29 Aug 2015 14:47:38 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.41</generator>
	<item>
		<title>Windows Phone 8.1 Developer Preview (2)</title>
		<link>http://lain.heavy.jp/lain/2014/04/20/867</link>
		<comments>http://lain.heavy.jp/lain/2014/04/20/867#comments</comments>
		<pubDate>Sun, 20 Apr 2014 10:38:43 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[携帯電話]]></category>
		<category><![CDATA[WP8.1]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/?p=867</guid>
		<description><![CDATA[前の投稿で下準備が出来ましたのでいよいよ端末をアップデートです。私の場合ちょっと面倒な事情があって、LiveAccountを通常用途, 開発用途で分けていたのです。当然ながら端末は通常用途アカウントであり、WP Deve [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://lain.heavy.jp/lain/2014/04/20/849" target="_blank">前の投稿</a>で下準備が出来ましたのでいよいよ端末をアップデートです。私の場合ちょっと面倒な事情があって、LiveAccountを通常用途, 開発用途で分けていたのです。当然ながら端末は通常用途アカウントであり、WP Developer Program登録したのは開発用途のアカウントですから正直上手くいくかどうかは不安でした。結果的にはアップデートできましたけどね。</p>
<p>まずは『電話の更新』を行います。WP8.0の最終更新状態にしていても正常に端末が開発登録されているのであれば更新が降ってくるはずです。</p>
<table cellspacing="0" cellpadding="2" width="640" border="0">
<tbody>
<tr>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_1.png"><img title="20140420_wp81_update_1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_1" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_1_thumb.png" width="244" height="431"/></a></td>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_2.png"><img title="20140420_wp81_update_2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_2" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_2_thumb.png" width="244" height="431"/></a></td>
</tr>
</tbody>
</table>
<p>注意しないといけないのは、<strong><font color="#ff0000">WP8.1(DP)への下準備更新であってWP8.1(DP)ではない</font></strong>です。小さなパッチレベルなのでそのまま何も考えずに当ててしまいましょう。</p>
<table cellspacing="0" cellpadding="2" width="640" border="0">
<tbody>
<tr>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_3.png"><img title="20140420_wp81_update_3" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_3" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_3_thumb.png" width="244" height="431"/></a></td>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_4.png"><img title="20140420_wp81_update_4" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_4" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_4_thumb.png" width="244" height="431"/></a></td>
</tr>
</tbody>
</table>
<p>パッチが当たった後も『WP8.1(DP)を入手する準備が整いましたよ』アピールがすごいです。ちなみに更新が終わっても当然OSバージョンは8.0のままです。再度『電話の更新』を行うとようやくWP8.1(DP)のパッチに出会えます。</p>
<table cellspacing="0" cellpadding="2" width="640" border="0">
<tbody>
<tr>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_5.png"><img title="20140420_wp81_update_5" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_5" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_5_thumb.png" width="244" height="431"/></a></td>
<td valign="top" width="320"><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_6.png"><img title="20140420_wp81_update_6" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="20140420_wp81_update_6" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_update_6_thumb.png" width="244" height="431"/></a></td>
</tr>
</tbody>
</table>
<p>WP8.1(DP)の更新イメージをダウンロードして<strong>インストールボタン(左図)を押下した後に「詳細」ボタンが押せるのですが、これを押した後は大人しく待っていましょう</strong>。その後にMicrosoftサービス規約(右図)が出るのですが、何度も連打しているとこれが瞬間的に出ては消えているようで先に進みません。</p>
<p>サービス規約の内容的にはよくある感じでしたが、パッチアップデートして故障しても一切保証しないよとか、プライバシーポリシーとかその程度でした。(WP8.1(DP)情報出すなよ、とは書いてなかった・・・ハズ)</p>
<p>インストール時間に20分程度かかったと思いますが・・・・なんとかWP8.1(DP)のインストールまでたどり着きました！</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2014/04/20/867/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 8.1 Developer Preview (1)</title>
		<link>http://lain.heavy.jp/lain/2014/04/20/849</link>
		<comments>http://lain.heavy.jp/lain/2014/04/20/849#comments</comments>
		<pubDate>Sun, 20 Apr 2014 10:12:29 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[携帯電話]]></category>
		<category><![CDATA[Lumia]]></category>
		<category><![CDATA[WP8.1]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/?p=849</guid>
		<description><![CDATA[5日前に公開された次期Windows Phone OSの「Windpws Phone 8.1 Developer Preview」を何となく便乗して入れてみました。とはいっても、『単に入れただけ』に過ぎないのですが。元々 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>5日前に公開された次期Windows Phone OSの「Windpws Phone 8.1 Developer Preview」を何となく便乗して入れてみました。とはいっても、『単に入れただけ』に過ぎないのですが。元々入れるつもりではあったのですが、某全宇宙を統べる大先生から<strong>「最近更新怠っているよねー」なんて突っ込み</strong>が入ったので、なんとしても今回の稿を仕上げようと。</p>
<p>WP8.1(DP)を入れるにあたって条件は以下の通りです。</p>
<ul>
<li>Windows Phone Developer Programの所属ユーザー (17USD/year ＝ 1,847円/年, <strong><font color="#ff0000">自動更新</font></strong>らしい)  </li>
<li>WP8.1(DP)の対応端末の所持者  </li>
<li>同端末の開発端末登録済み(＝アンロック端末)</li>
</ul>
<p>開発者登録はWindows Phone ディベロッパサイト(<a title="https://dev.windowsphone.com/ja-jp/join" href="https://dev.windowsphone.com/ja-jp/join">https://dev.windowsphone.com/ja-jp/join</a>)から行えるようです。私の場合は適当にググってそこから飛ぶので英語サイトから登録しましたが特に問題は有りませんでした。</p>
<p>登録(＝支払い)を済ませた後はWindows Phone SDK (WP8 SDK)をインストールです。これを入れると『VS Express for Windows Phone』がインストールされます。が、今回の目的は開発ではないのでこのツールは無視。WP8.1(DP)を入れることが目的なので、その他ツールに含まれている『<strong>Windows Phone Developer Registration</strong>』を起動します。PCとデバイスをつなぐように案内が来ますので・・・・つなぐとエラーが出ました。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/wp_dev_0x64_r2_c2.png"><img title="wp_dev_0x64_r2_c2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_dev_0x64_r2_c2" src="http://lain.heavy.jp/lain/wp-content/uploads/wp_dev_0x64_r2_c2_thumb.png" width="484" height="432"/></a></p>
<p>まずこれが一発目のエラー。 Error Code 0&#215;64 が出た場合は以下の2点が問題のようです。</p>
<ul>
<li>有効なWi-Fi上のLAN-IPを持っていない  </li>
<li>NO-SIM状態</li>
</ul>
<p>今回WP8.1(DP)を入れる端末がHTC Windows Phone 8Xなので、端末初期化直後 + NO-SIM状態で、とりあえず端末の状態をまともに設定します。これで解決したかと思えば次なる問題が。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/wp_dev_ipoverusbsvc.png"><img title="wp_dev_ipoverusbsvc" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_dev_ipoverusbsvc" src="http://lain.heavy.jp/lain/wp-content/uploads/wp_dev_ipoverusbsvc_thumb.png" width="484" height="432"/></a></p>
<p>これが二発目のエラー。かなり不可解ですが、サービス名 『<strong>Windows Phone IP Over USB Transport (=IpOverUsbSvc)</strong>』を有効化しろと書いてありますが、サービス一覧(services.msc)を見ても有効化されているし、サービスを再起動させても同じエラーが・・・・。いろいろ調べていると<strike>『実際に有効化されているSIM』が刺さっていないと同エラーになるとかなんとか</strike>(←間違っているかもしれません)。 <strong>(4/26訂正)</strong> 間違っていました。Windows Phoneが正常にインターネットに繋がっていれば問題なさそうです。SIMの有無は関係ありません。</p>
<p>※ どうでもいい話ですが、Ip(＝IP)がlp(＝Long Pointer)に見えていたのでググっても何も出てこず・・・。よからぬところでMicrosoftプログラマぶりを発揮してしまいました。</p>
<p>なので、開発目的のSIMではない Lumia1520 SIMをHTC 8X側に刺してみたもの・・・・認識せず orz</p>
<p>そして何故かLumia 1520 + 有効SIMですんなりとデバイスのアンロックが出来てしまったので残念ながらLumia 1520をWP8.1(DP)の生贄に捧げることとなりました。</p>
<p>デバイス登録が終わると次は端末側に対して特別なプログラム『Preview for Developers』というアプリケーションを入れます。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/wp_preview_for_developer.png"><img title="wp_preview_for_developer" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="wp_preview_for_developer" src="http://lain.heavy.jp/lain/wp-content/uploads/wp_preview_for_developer_thumb.png" width="644" height="508"/></a></p>
<p>サイトからも端末からもインストールできるようですが私はサイトから行いました。端末に紐づいたアカウントでログインしてinstallで端末へ。起動すると何やら書いてありますが要は「Enable Preview for Developers」にチェックを付けているとpreview端末として振舞うらしいので、チェックを付けておきます。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_devloper_preview.png"><img title="20140420_wp81_devloper_preview" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="20140420_wp81_devloper_preview" src="http://lain.heavy.jp/lain/wp-content/uploads/20140420_wp81_devloper_preview_thumb.png" width="324" height="573"/></a></p>
<p>ここまででまずは一旦下準備が完了です。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2014/04/20/849/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今更ながらスティーブの熱いメッセージを聞きました</title>
		<link>http://lain.heavy.jp/lain/2014/01/27/810</link>
		<comments>http://lain.heavy.jp/lain/2014/01/27/810#comments</comments>
		<pubDate>Mon, 27 Jan 2014 14:30:00 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/?p=810</guid>
		<description><![CDATA[数か月前にMicrosoftのCEOを退任されたスティーブ・バルマー氏。YouTubeではバルマー・モンキーダンスとやや狂ったおっちゃん風に演じられていますがかなり熱いおっちゃんだったのですね。 ※ 私の中のスティーブは [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>数か月前にMicrosoftのCEOを退任されたスティーブ・バルマー氏。YouTubeではバルマー・モンキーダンスとやや狂ったおっちゃん風に演じられていますがかなり熱いおっちゃんだったのですね。</p>
<p>※ 私の中のスティーブは言うまでもなくジョブズではなくバルマーです</p>
<p>バルマー氏のビデオの中に『ディベロッパー・ディベロッパー・ディベロッパー』と三連呼する有名な動画があります。単に今までは面白がってみていたのですがどのような熱い思いが込められたのか気になってググってみたら3年前にこんな熱い動画を日本の開発者向けに残していたのですね。</p>
<p><a href="http://video.jp.msn.com/watch/video/開発者の皆様へ-スティーブバルマーからのメッセージ/15e11q2ky?cpkey=ce90c8cc-9fd5-47ce-ab6c-60f2ff34dc2d%257c%257c%257c%257c" target="_blank"><font size="3"><strong>開発者の皆様へ、スティーブバルマーからのメッセージ</strong></font></a> (MSNビデオ)</p>
<p>未だにVisualStudioを上回る開発ツールに出会ったことはありませんし、Xcodeを使う現状でも両ツールを触ったことがある開発者は口々に言います　『VisualStudioは開発ツールとして最高』って。</p>
<p>今にして思えばMicrosoftがCOM(Common Object Model)と言う画期的なアーキテクチャを生み出して、各アプリケーションを1機能として連結させ、またそれを容易に開発するために駆使したVisualStudioやそのライブラリ群(MFC, ATL, etc…)がかのMicrosoftの黄金時代を支えたのだな～と懐かしく思います。</p>
<p>確かに現在ではApple, Googleにその地位を脅かされつつありますが、依然VisualStudioは最高のツールであって開発者を支援するスタンスは続いていたのだなと。CEOが変わってどのようになるか、この先はわかりませんが。</p>
<p>私も一開発者としてこの熱い思いをソースコードに具現化したいな～、なんて思ったりした今日この頃です。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2014/01/27/810/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>リバースエンジニアリングバイブル -コード再創造の美学-</title>
		<link>http://lain.heavy.jp/lain/2013/10/14/760</link>
		<comments>http://lain.heavy.jp/lain/2013/10/14/760#comments</comments>
		<pubDate>Mon, 14 Oct 2013 08:22:44 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[C,C++]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[レビュー]]></category>
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2013/10/14/760</guid>
		<description><![CDATA[名前からして普通にお目にかかれないタイプであると思った書籍です。つい先日発売されたばかりで、行きつけの本屋でかるーく眺めてみて購入しました。 リバースエンジニアリングバイブル ~コード再創造の美学~姜 秉卓 &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>名前からして普通にお目にかかれないタイプであると思った書籍です。つい先日発売されたばかりで、行きつけの本屋でかるーく眺めてみて購入しました。</p>
<div id="scid:81867AAF-BB02-476b-AE5D-12BDAC2E750D:abe31a29-c308-4ddd-aaaf-8b7e683fdf19" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844334794/cagylogic-22/ref=nosim" target="_blank"><img alt="リバースエンジニアリングバイブル ~コード再創造の美学~" src="http://ecx.images-amazon.com/images/I/61pgvkPNzxL._SL160_.jpg"/><br />リバースエンジニアリングバイブル ~コード再創造の美学~<br />姜 秉卓 </a></div>
<p>&nbsp;</p>
<p>書籍自体はx86アセンブリ～Win32 PE形式をターゲットに進んでいますが、Linux形式で使われているELF形式でも基礎知識に関してはある程度使えるかと思います。というのも、私のかつての専門がWin32であったのでELFに関する知識はあまりないのです。と言っても、Brewブートローダーを触る際には知らずにはいられないので2chで公開されていたブートローダーの中身を見て参考にさせてもらいました程度の知識なのですが。</p>
<p>中身を軽く読んだ感じの所感です。</p>
<ul>
<li>これからリバースエンジニアリングに対する知識を身に着けるにはある程度良い</li>
<li>書籍を読むにあたって「初めて読む8086/386」程度の知識は欲しい</li>
<li>Win32の知識も必要、特にインジェクション周りはPE形式に慣れていないと厳しい (Advanced Windowsが必要？)</li>
<li>カーネル部分に関しては触れていないので、更に混んだ小細工をするには別途知識が必要</li>
<li>リバースエンジニアリングに対する防衛に関しては物足りない気がしますが・・・、どうなのでしょう？</li>
</ul>
<p>&nbsp;</p>
<p>書籍の中で素晴らしいことが書かれていたので部分的に引用します。</p>
<blockquote><p>真面目にコーディングを学んだ優れたプログラマが作成したコードは、むしろリバースエンジニアリングがしやすいという話があり、その裏をかいて、重要な中核のコードは初心者プログラマに任せようという話もよくする。実際にそのように作成したことはないが、多分これは、高度な難読化技術や今まで見てきたどんなダミーコードよりも高度な難読化技術になるかもしれない。(笑)</p>
</blockquote>
<p>これはまさしくその通りだなと。別に<strong>自分のソースコードが美しい！！！</strong>、と絶賛するわけではないですが、自分の書いたソースコードに対してアタックを行うのは非常に容易なことでした。因みに、それで非常に悩んだ挙句に選んだ結論はセキュリティ部分に関しては外部ツールを使うこと。Win32関係では<a href="http://www.aspack.com/asprotect.html">ASProtect</a>辺りが有名なところですが、ASProtectに関してはいろいろ調べると有名すぎてアンパッカーが開発されてしまっていたので、私的に<a href="http://www.obsidium.de/">Obsidium</a>が大好物でした。</p>
<p>そして現在、Win32から離れてWeb系の仕事を行っているわけなのですが・・・、あれはあれで色々厄介ですね。Web(HTTP)の範囲であれば基本的にはクエリ改ざんやURLを直接アタックするなどの間接的なものしか攻撃ができませんので、プログラマがきちんとパラメータの取り扱い方を知っていれば脆弱性はアプリケーションより遥かに少ないはずなのです。が、Webのプログラムが簡易化することで割と<strong>知識の浅いプログラマでも開発自体は行えるために脆弱性を自ら仕込んでいる状態</strong>が結構見受けられます。なんだかネイティブとWebで逆の動きをしているなー、と感じるところではあります。</p>
<p>&nbsp;</p>
<p>既に起こっていると言っても間違いではないスマートフォン(iOS, Android等)へのアタックはより一層激しくなるでしょうし、正しい知識を身に着けないといけないな、と痛感する一冊でした。ただ・・・・ELF形式について書かれた書籍が無いよ。調べれば断片的に情報が出るのですが、流れを把握して知識を得たい・・・というのは甘えなのでしょうね。</p>
<p>&nbsp;</p>
<p>PS1. 当時nProtectが導入されたころにあれが非常に厄介な動作(プロセスを隠したり、昇格関数をブロックしたり・・・)をしてくれたので結局カーネルドライバから処理の割り込みを行ったのですが、今現在どうなっているのでしょうね。スポーツではないですが、前線から離れると途端に知識が劣化してしまうというのが歳月の経過を感じるものです。</p>
<p>PS2. 書籍ではMFCリバーシングに対して触れられていましたが、個人的にはMFCよりVisualBasic6.0で作成されたアプリケーションのコードフックが非常に厄介でした。というのもの、メッセージの扱いが特殊であり、vbdllの塊があってIATをフックしても何故かフックしきれない部分が残ったりと。日本ならまだVB6.0とかで動いているシステムは多そうですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2013/10/14/760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPod Touch 第5世代発表キター！</title>
		<link>http://lain.heavy.jp/lain/2012/09/13/589</link>
		<comments>http://lain.heavy.jp/lain/2012/09/13/589#comments</comments>
		<pubDate>Wed, 12 Sep 2012 21:00:00 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2012/09/13/589</guid>
		<description><![CDATA[待ちに待ったApple新作発表会！　Apple信者の方は夜通しで発表の状況を見ていた方もいると思います。私は残念ながらApple信者では無くMicrosoft信者なので2:00a.m.と5:00a.m.にアラームを仕掛け [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>待ちに待ったApple新作発表会！　Apple信者の方は夜通しで発表の状況を見ていた方もいると思います。私は残念ながらApple信者では無くMicrosoft信者なので2:00a.m.と5:00a.m.にアラームを仕掛けて、iPod Touch / iPad / Walkman Zでの3端末AppleStore臨戦態勢で臨みました。</p>
<p>iPod Touch 第5世代、ストアに追加されましたね。ジョブズが愛したというiPhone5との差別化によりA6は搭載されなかったものの、iPad2と同等のA5が搭載されているようです。メモリに関しての記載はありませんでしたが、512MB積んでいると予測していますし、実際に積んでいるとうれしいなと。残念なのが予約について、14日までできないとか。他の人より出し抜けないかもしれないので、発売日に入手できるかどうかちょっと不安です。最悪発売日に朝から並ぶって手があるのですけどね。</p>
<p>&nbsp;</p>
<p>PCサイト上を見ると全ての予約が14日となっており、一見して発表会のみでしたが、iPod Touchの<strong>AppleStoreアプリケーションから見るとアクセサリの類は予約が可能</strong>ですね。私の場合は自宅・会社で確認することが必須となるのでLightning – 30Pinアダプタのみを先んじて注文しました。売り切れ～なんてことはないと思いたいですが、これがないと仕事が進まない状況だけは避けないといけないので。しかし、この<strong><font color="#ff0000">変換アダプタごときで2,800円</font></strong>とかぼり過ぎでしょう！！</p>
<p>後は、iOS6のGM seed(配布確定の最終版)がディベロッパサイトで出ていますね。それにともなってLisence Agreementも更新が必須のようです。iOS6に関してはNDAの関係上でこれ以上何も言及することはできませんが、早速触ってみようかなと思ったり。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2012/09/13/589/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOSプッシュ通知でハマった事</title>
		<link>http://lain.heavy.jp/lain/2012/04/09/548</link>
		<comments>http://lain.heavy.jp/lain/2012/04/09/548#comments</comments>
		<pubDate>Sun, 08 Apr 2012 15:12:58 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[APNS]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2012/04/09/548</guid>
		<description><![CDATA[以前の記事、「プッシュ通知(APNs)の初期確認ダイアログについて」の続き。今になってはじめて気がついたというか、前々から変だと思っていたけど端末のせいにして自分は悪くない！と思っていた自分が一番馬鹿だった、というもので [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>以前の記事、「<a href="http://lain.heavy.jp/lain/2012/01/28/473" target="_blank">プッシュ通知(APNs)の初期確認ダイアログについて</a>」の続き。今になってはじめて気がついたというか、前々から変だと思っていたけど端末のせいにして自分は悪くない！と思っていた自分が一番馬鹿だった、というものです。</p>
<p>&nbsp;</p>
<p>プッシュ通知の確認ダイアログ自体は書いたとおり一度しか表示されない、というのは変わらないのです。が、特定の再通知条件を満たさない間に再インストールするとデバイストークンが取得できないというものです。特殊なパターンなので具体的な例で言えば、</p>
<ol>
<li>enabledRemoteNotificationTypesをコールして現在のプッシュ通知が有効かどうかを調べる</li>
<li><strong><font color="#ff0000">有効なtypeがない場合に</font></strong>registerForRemoteNotificationTypesをコールして通知ダイアログを表示する</li>
<li>アプリケーションを再インストールする</li>
<li>enabledRemoteNotificationTypesの値は正常なのにデバイストークンの値が取れない</li>
</ol>
<p>というパターン。確認する限りは、再インストールの場合は既に[設定]上にプッシュ通知が有効になっているものの再度enabledRemoteNotificationTypesをコールしないとdidRegisterForRemoteNotificationsWithDeviceTokenがコールされないようで、これがデバイストークンの値を取得できない要因となっていたようです。なので、解決策としては2.で既に有効になっていてもregisterForRemoteNotificationTypesをコールする、ってのが手っ取り早い模様。</p>
<p>何も考えずにそれをコールしていればこんなにハマることはなかったのでしょうが、何かを変えるということはそれだけリスクを伴う場合があるってことですね。いい勉強になりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2012/04/09/548/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メーラー設定の変更</title>
		<link>http://lain.heavy.jp/lain/2012/02/13/523</link>
		<comments>http://lain.heavy.jp/lain/2012/02/13/523#comments</comments>
		<pubDate>Mon, 13 Feb 2012 13:00:00 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[IS12T]]></category>
		<category><![CDATA[メール]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2012/02/13/523</guid>
		<description><![CDATA[某ドメイン(ccTLD)を使い続けて丁度10年が経過しました。未だにメール以外で表に出ることは無いし、今後もそれ以外の運用はまったく考えていないですが。その某ドメインを利用するにあたって原則5年契約にしています。因みに5 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>某ドメイン(ccTLD)を使い続けて丁度10年が経過しました。未だにメール以外で表に出ることは無いし、今後もそれ以外の運用はまったく考えていないですが。その某ドメインを利用するにあたって原則5年契約にしています。因みに5年という理由は”安いから”ではなくて”面倒だから”。</p>
<p>そんなわけで5年ぶりに更新となると大企業系のサービスではなく中小企業のサービスではシステム体系がいまいち安定せずに、契約更新の度に新しいプラン(ホスティングサービス)に移動させられるわけです。料金系の新しいプランだけならまだしも、新しいプラン＝メールサーバなどの変更という割と致命的な部分で・・・・。</p>
<p>2月9日に新しいメール設定が届いたので緊急のメール(携帯に届くヤツ)だけは設定を終えて、未だにメインアカウントは設定と格闘中という悲しいお話です。が、そんな面倒な設定でも1点だけ良いことがありました。</p>
<p align="center"><font size="4"><strong>自メールボックスに残しながらも<font color="#ff0000">Forward</font>する設定があるぢゃん!!</strong></font></p>
<p>&nbsp;</p>
<p>私が使っているホスティングのメール設定画面はこんな感じ。”Remove Forwarded message frin your inbox.”はできればチェックしてね、ってお願いがありました。が、直Inboxでも受け取るので断ります（ぁ</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/pop3settings.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="pop3settings" border="0" alt="pop3settings" src="http://lain.heavy.jp/lain/wp-content/uploads/pop3settings_thumb.png" width="644" height="102"/></a></p>
<p>&nbsp;</p>
<p>残念なことに”未だに国内唯一である”WindowsPhone7の<strong>IS12Tには任意のPOP3サーバに対して<font color="#ff0000">同期を行う処理が最短で15分</font>と、携帯電話のメールとして使用するにはかけ離れた存在</strong>となっています(私的な感覚では実用レベルで1分以内)。それを回避しようとすると結果的にプッシュ通知に対応したMSNメール(Hotmail, WindowsLiveMail)やGメールなどを用いなければならず、状況次第では好ましくないでのです。特に私のような独自ドメインを使う場合は。そんな場合でも使っているホスティングで自メールボックスに残しながらもフォワード設定がある場合は、メール受信通知はプッシュ通知でほぼリアルタイムで受け取りつつも、本アカウント(=元々のメールボックス)で同期を取りつつReplyを行うと。</p>
<p>長くなりましたがようやく携帯のメールとしてまともに使えるようになりました、という割と良かったお知らせでした。</p>
<p>※ メアド変わりました、って個人的には微妙なのですがどうなのでしょうね。送るのはもちろん面倒だし、送られるのもアドレス帳の更新をしないといけない手間があるし。今での人(≒携帯メールから入った人)ほどメアド変更が多い気がするのですが、ネットワークに対する意識の違いなのカナ・・・・と思ってしまいます。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2012/02/13/523/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プッシュ通知(APNs)の初期確認ダイアログについて</title>
		<link>http://lain.heavy.jp/lain/2012/01/28/473</link>
		<comments>http://lain.heavy.jp/lain/2012/01/28/473#comments</comments>
		<pubDate>Sat, 28 Jan 2012 08:53:02 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[APNS]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2012/01/28/473</guid>
		<description><![CDATA[iOS環境ではプッシュ通知が重要だよ、的な周り口で1セッションの通信において複数デバイスにプッシュ通知を行うという記事を投稿しました(因みに自分ではまだやってないのですけどね、同僚が私の作ったモジュールを使って動いている [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>iOS環境ではプッシュ通知が重要だよ、的な周り口で1セッションの通信において<a href="http://lain.heavy.jp/lain/2011/11/14/312">複数デバイスにプッシュ通知を行う</a>という記事を投稿しました(因みに自分ではまだやってないのですけどね、同僚が私の作ったモジュールを使って動いているよ～って言ってるから動いているのでしょう)。</p>
<p>プッシュ通知は重要ながらもチュートリアル的な実装をそのままコピペで実装してしまうと優れた機能も非常に残念なことになります。というのも、例えばよくあるパターンではゲームに対してプッシュ通知が実装されている場合、タイトル画面といった起動した瞬間に「○○はプッシュ通知を送信します。よろしいですか？」と出現するパターン(<strong>画像はあくまでサンプル画面です</strong>が、実際に私が指摘する最悪なパターンを再現してくれたものです)。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/apns_dialog.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="apns_dialog" border="0" alt="apns_dialog" src="http://lain.heavy.jp/lain/wp-content/uploads/apns_dialog_thumb.jpg" width="324" height="484"/></a></p>
<p>少しはユーザのことを考えればわかることですが、これって開発側からのエゴの何物でもないですよね。だって、リアルな環境に置き換えるならば、試供品を受け取った段階で</p>
<p align="center"><font color="#ff0000" size="4"><strong>とりあえずDM(ダイレクトメール)送りたいんだけど受け取りますか？</strong></font></p>
<p>と言われているに近しいものだと思うのです。</p>
<p>因みに私はこのパターンは絶対にプッシュ通知を許可しません。だってウザったいかもしれない通知が来るかもしれないのにそれを許可する理由なんてないですから。</p>
<p>&nbsp;</p>
<p>ってことで、長々とウンチクを垂れましたが、端的に言えばプッシュ通知をすべき場所を今一度見直して、細かく制御しましょうよ、と。プッシュ通知はUIAPplicationのインスタンスメソッドとして定義されていて以下の3つがあります。</p>
<ul>
<li><strong>registerForRemoteNotificationTypes</strong>…プッシュ通知を有効にしようとします。ユーザにダイアログでプッシュ通知の確認が求められます  </li>
<li><strong>unregisterForRemoteNotifications</strong>…登録されたプッシュ通知を破棄します  </li>
<li><strong>enabledRemoteNotificationTypes</strong>…(どのような種類の)プッシュ通知が有効かどうかを取得します</li>
</ul>
<p>なので、チュートリアル通りにapplication:didFinishLaunchingWithOptions:でregisterForRemoteNotificationTypesをコールするのではなくて、<strong>どのような目的でプッシュ通知を行いたいかを述べたうえで初めてregisterForRemoteNotificationTypesをコールしましょう</strong>、と。これをやっているのがGameloftの”レッツ！ゴルフ3”ですね。</p>
<p><em></em>&nbsp;</p>
<p>・・・・、と<strong>ここまでが前置き</strong>。そしてようやくタイトルの話になります。上述の通りにプッシュ通知のダイアログが出るタイミングというのは非常に貴重なもので、本当にこのタイミングでよいのかどうかを試験したい場合がありますが、一度この確認でどちらかを選択してしまうと開発中でも中々出てくれません。で、かるーくググってみると大好きなStackoverflowでこんな投稿がありました。</p>
<ul>
<li><a href="http://stackoverflow.com/questions/2438400/reset-push-notification-settings-for-app"><font size="3">Reset push notification settings for app</font></a><font size="3"> (Stackoverflow)</font></li>
</ul>
<p>相変わらずの精度が低いほげ脳内翻訳によれば</p>
<blockquote><p>アプリケーションが初回にプッシュ通知を有効にしようとするならば、iOSはユーザにアプリケーションから通知を受け取るか否かを確認します。一度でもその警告(プッシュ通知の同意ダイアログ)に応答した場合は、デバイスをリストアするか、若しくはアンインストールを行ったうえで少なくとも1日以上経過する必要があるでしょう。</p>
<p>もしあなたが初回のプッシュ通知をシミュレートしたいとするならばアンインストールを行ったうえで1日経過させる必要があります。但し、<em><font color="#ff0000">システムクロックを1日以上経過させたうえで一度デバイスをシャットダウンし、再度デバイスを起動することで後者(=アンインストール後に1日以上経過するという条件)を満たすことができるでしょう</font>。</em></p>
</blockquote>
<p>と書いた本人ですが、実際に試していないのであしからず。</p>
<p>&nbsp;</p>
<p>今回の記事をまとめるとこんな感じ</p>
<ul>
<li>プッシュ通知はアプリケーションが非アクティブ状態でもアプリ提供者側からユーザに情報通知が可能な数少ない手段です。</li>
<li>ダイアログを表示することでプッシュ通知の同意を求める貴重なアプローチは1回のみです。もし本当にプッシュ通知を利用して欲しいのであればこのアプローチを行う前にユーザにプッシュ通知を行う利便性を説くべきでしょう。</li>
<li>プッシュ通知は登録(登録要求)・解除・状態取得の3つのメソッドがあります。</li>
<li>プッシュ通知の初回のアプローチはstackoverflowに書かれているような方法で再度確認を行うことができる(はず)です。アプリの提出前に本当にユーザが望ましい形でそのアプローチが行われているか確認しましょう。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2012/01/28/473/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.app&#8594;.ipaへの変換について</title>
		<link>http://lain.heavy.jp/lain/2012/01/13/462</link>
		<comments>http://lain.heavy.jp/lain/2012/01/13/462#comments</comments>
		<pubDate>Fri, 13 Jan 2012 13:00:00 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2012/01/13/462</guid>
		<description><![CDATA[ここ数日間はblogに勤しんでいる時間があるならタスクを消化しないといけない状況、だったりしますが日が空くほどに過疎化が進むのでちょっとした小ネタを投稿してみるテスト。 iPhone/iPadというiOS関連についてDo [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>ここ数日間はblogに勤しんでいる時間があるならタスクを消化しないといけない状況、だったりしますが日が空くほどに過疎化が進むのでちょっとした小ネタを投稿してみるテスト。</p>
<p>iPhone/iPadというiOS関連についてDocomoからLTE対応のiPhone5がでるんぢゃない？的な情報源の怪しい噂が飛び交ったりと今年1年間もiOSに関しては激動の1年となることが既に見えているような。当然一般世間からの注目度が上昇し、iOSとしてのアプリ開発も多くなるでしょう。iOSアプリを実機に転送するには以下の3つが必要です。</p>
<ul>
<li>アプリケーションファイル転送ツール (Xcode – オーガナイズ, iPhone構成ユーティリティ, iTunes)</li>
<li>アプリケーション(バイナリ)ファイル (.app / .ipa)</li>
<li>プロビジョニングプロファイル (.mobileprovisioning)</li>
</ul>
<p>開発者であれば上記を使って転送すれば良いことはもちろん自明でしょうが、作成依頼主にアプリケーションの監修を行う場合など、<strong>3つの条件ですら原因不明の転送エラーが起きるというシナリオ</strong>は付き物です(開発者でも困惑することはしばしば有るのですけどね)。</p>
<p>転送の際に起きるエラーの主な原因は多分以下の通りです。</p>
<ul>
<li>転送先のデバイスIDが正しく登録されたプロビジョニングファイルを使用してCodeSigningを行われていない (<a href="http://lain.heavy.jp/lain/2011/09/20/208">Xcode3の場合の対処法はこちら</a>)</li>
<li>Windowsからアプリケーションバイナリを転送する場合に発生する場合が多いようですが、アプリケーションバイナリが破損している</li>
</ul>
<p>&nbsp;</p>
<p>私自身でまだ詳細を調べていないのですが、.appファイル(フォルダ)をWindowsに転送すると何かが抜けているのかエラーが発生します。なので、個人的に.appファイルを直接相手に送付するのは避けた方がいいのでは派で(.app内にsymlinkがあるし)。となると、ほかの形式はipaファイルと呼ばれる形式が実機転送可能です。で、.app→.ipa変換のネタに繋がると。</p>
<p><strong><font size="4">★ ipaファイルの作成方法</font></strong></p>
<ol>
<li>Xcodeでビルドが完了すると $(PROJECT_DIR)/build/Release-iphoneos/xxxxx.app が作成されます</li>
<li>.appファイルと同位置に”Payload”フォルダを作成します</li>
<li>.appファイルを”Payload”にコピーします</li>
<li>Mac標準の圧縮でxxxxx.zipを作成します</li>
<li>拡張子を.zipから.ipaに変更します</li>
</ol>
<p>という、Payloadフォルダの殻が増えてZIP圧縮されただけ、なものが.ipaになります(※ もっと違いがあるようなのですが、ここではアプリケーションバイナリ転送に必要最小限の関係事項に抑えています)。後はiPhone構成ユーティリティでプロビジョニングのライブラリ追加、アプリケーションバイナリの登録、最後にその2つの実機へのインストールを行えばWindowsでも安全に転送することができるハズです。</p>
<p>&nbsp;</p>
<p>時間があれば画像・・・・追加するカモ。文字だけだと説得力無いわ・・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2012/01/13/462/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerShellを勉強中</title>
		<link>http://lain.heavy.jp/lain/2011/12/01/350</link>
		<comments>http://lain.heavy.jp/lain/2011/12/01/350#comments</comments>
		<pubDate>Wed, 30 Nov 2011 16:00:00 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Snapshot]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2011/12/01/350</guid>
		<description><![CDATA[何かを行おうとすると別の何かを学ばないといけなくて結局遠回りしている気がする・・・・なんてのはザラにある気がしますが、今回のPowerShellもそんな感じ。 【目的】 タスクスケジューラに登録した定時に特定のゲストOS [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>何かを行おうとすると別の何かを学ばないといけなくて結局遠回りしている気がする・・・・なんてのはザラにある気がしますが、今回のPowerShellもそんな感じ。</p>
<p><strong><font size="4">【目的】</font></strong></p>
<p>タスクスケジューラに登録した定時に特定のゲストOSのスナップショットを作成し、同時に過去数日前のスナップショットをマージ(Apply)する</p>
<p><font size="4"><strong>【手段】</strong></font></p>
<p>Hyper-V上の操作となるのでWMI(Windows Management Instrumentation)を使用する、且つ、タスクスケジューラでの操作となるのでCUI(＝スクリプト系)が望ましい。WMIが操作できるスクリプトはWSH, PowerShell辺りとなる・・・・はず？</p>
<p><font size="4"><strong>【参考資料】</strong></font></p>
<p>ほぼほぼ資料は集まっていて、以下を見れば私だってできるハズ！</p>
<ul>
<li><a href="http://blogs.msdn.com/b/taylorb/archive/2008/06/16/hyper-v-wmi-creating-applying-deleting-virtual-machine-snapshots.aspx">Hyper-V WMI: Creating/Applying/Deleting Virtual Machine Snapshots</a>  </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc136989(v=VS.85).aspx">Virtual System Management Classes</a>  </li>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/cc136808(v=vs.85).aspx">CIM_ConcreteJob class</a></li>
</ul>
<p>&nbsp;</p>
<p>という感じなのですが、手段としてPowerShellを選ぶと、目的を達成する前にPowerShellを覚えるところから始まるのですよね。元々WMI(WBEM)+JScriptで色々とごさごさやっていたので作れないことは無いですがやはりここは<strong><font color="#ff0000">Windows2008らしくPowerShellで実装</font></strong>しないとね！</p>
<p>ただ・・・・、従来のMicrosoft系スクリプト言語とは結構違う・・・気が・・・。PowerShellのコンセプトを知らないし、<strong>PowerShellが出た当初はこんなのを使う必要はないだろう！</strong>、とか甘く見ていた自分が馬鹿だったなと。因みに今はどうなのでしょうね、MS系の製品と触れ合う現場ではないので正直PowerShellがいかほどに使われているかさっぱりわかりません。</p>
<p>なので・・・・・、とりあえず適当な戦利品。</p>
<pre><pre class="brush: powershell; title: ; notranslate">
$computer                               = &quot;.&quot;
$namespace                              = &quot;root\virtualization&quot;
$msvm_computer_system                   = &quot;Msvm_ComputerSystem&quot;
$msvm_virtual_system_management_service = &quot;Msvm_VirtualSystemManagementService&quot;


# 仮想システムの管理サービスインスタンスを取得する
$vm_vsms = Get-WmiObject -Namespace $namespace -Computer $computer -Class $msvm_virtual_system_management_service
$vm_host = $vm_vsms.SystemName

Write-Output $vm_vsms


# Hyper-V上の全てのコンピュータを列挙する (但し、ホストは除く)
$vm_computers = Get-WmiObject -Namespace $namespace -Computer $computer -Class $msvm_computer_system -Filter &quot;ElementName &amp;lt;&amp;gt; '$vm_host'&quot;
#write-output($vm_computers)

foreach ($vm_computer in $vm_computers) 
{
	write-host + $vm_computer.ElementName
	
	$Snapshots = Get-WmiObject -Namespace root\virtualization -Query &quot;Associators Of {$vm_computer} Where AssocClass=Msvm_ElementSettingData ResultClass=Msvm_VirtualSystemSettingData&quot;
	if ($Snapshots.Count -le 0) {
		continue;
	}


	$script:list = @() 
	foreach ($Snapshot in $Snapshots) 
	{ 
	    $SnapObj = New-Object -TypeName System.Object 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotName -Value $Snapshot.ElementName 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotID -Value $Snapshot.InstanceID 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotParentName -Value ([WMI]$Snapshot.Parent).ElementName 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotNote -Value $Snapshot.Note
	    $script:list += $SnapObj 
	}
	$script:list 

&amp;lt;#
	$script = @{} 
	foreach ($Snapshot in $Snapshots) 
	{ 
	    $SnapObj = New-Object -TypeName System.Object 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotName -Value $Snapshot.ElementName 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotID -Value $Snapshot.InstanceID 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotParentName -Value ([WMI]$Snapshot.Parent).ElementName 
	    $SnapObj | Add-Member -MemberType NoteProperty -Name SnapshotNote -Value $Snapshot.Note
	    $script.Add($SnapObj.SnapshotName, $SnapObj);
	} 

	$script.GetEnumerator() | Sort-Object Name | ForEach-Object {&quot;{0}`t{1}&quot; -f $_.Name,($_.Value -join &quot;,&quot;)} 
#&amp;gt;

	write-output &quot;&quot;
}
</pre>
<p>&nbsp;</p>
<p>そして、実行のスクリーンショットらしき物体。</p>
<p><a href="http://lain.heavy.jp/lain/wp-content/uploads/ps_hv.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="ps_hv" border="0" alt="ps_hv" src="http://lain.heavy.jp/lain/wp-content/uploads/ps_hv_thumb.png" width="644" height="545"/></a></p>
<p>しかし・・・・こんなことなら牟田口さんの”Windows PowerShell ポケットリファレンス”を買っておけばよかった・・・・。まぁ、スクリプトが仕上がったら置くかもしれません。それまでしばちお待ちを。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2011/12/01/350/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
