<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ishwt::tracking &#187; Mac</title>
	<atom:link href="http://ishwt.net/blog/category/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://ishwt.net</link>
	<description>人 間 万 事 塞 翁 が 馬</description>
	<lastBuildDate>Sat, 05 Nov 2011 15:36:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/category/mac/feed/" />
		<item>
		<title>Lion への道は遠い&#8230;</title>
		<link>http://ishwt.net/blog/2011/07/30/load-to-lion/</link>
		<comments>http://ishwt.net/blog/2011/07/30/load-to-lion/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 18:02:30 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=5734</guid>
		<description><![CDATA[Mac OS X 10.7 Lion がリリースされましたが、まだ移行できていません。今回のアップグレードは結構ハードル高いですね&#8230;。

我が家はメインマシンが iMac でこれが動かなくなるといろいろヤバイ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://click.linksynergy.com/fs-bin/stat?id=2*mKFbM6yKQ&amp;offerid=94348&amp;type=3&amp;subid=0&amp;tmpid=2192&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fos-x-lion%252Fid444303913%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" target="_blank">Mac OS X 10.7 Lion</a> がリリースされましたが、まだ移行できていません。今回のアップグレードは結構ハードル高いですね&#8230;。</p>
<p><img src="http://ishwt.net/wp-content/uploads/2011/07/ToLion_thumb.jpg" title="Lion移行" width="468" height="188" class="aligncenter size-full wp-image-5733" /></p>
<p>我が家はメインマシンが iMac でこれが動かなくなるといろいろヤバイ。ですのでサブ機で私しか使わない MacBook をまずは Lion にして、自宅内の環境での安全確認を進める方向で考えています。<br />
<span id="more-5734"></span><br />
<span style="color: #ff0000;">各種記載はエントリ時点（2011/7/30）の情報ですので必ず陳腐化します。その点お間違いなく。</span></p>
<h3>動かないアプリ。</h3>
<p>各所で報告されていますが、結構動かないアプリがありますね。一番大きな理由は PowerPC アプリを動作させる Rosetta （エミュレータではなくて JIT 的なものだったはず）が廃止されたことですが、それ以外にも OS の深い部分にも数々の手が入っていて互換性がない場合があるみたいです。<br />
つまり、動かないアプリには「PowerPC バイナリだから」というものと「Intel バイナリでも OS の深いところを利用しているもの（or Lion で大幅に変わった機能を使っているもの）」とに分類できると。</p>
<ul>
<li><a href="http://digimaga.net/2011/07/os-x-lion-not-support-app-matome">Macの新しいOS『OS X Lion』で動かないアプリまとめ | デジタルマガジン</a></li>
<li><a href="http://togetter.com/li/164119">Togetter &#8211; 「OS X Lionで動かないアプリまとめ」</a></li>
</ul>
<p>私自身が利用しているアプリで動かないことが分かっている（いた）のは</p>
<ul>
<li>Adobe Photoshop CS2</li>
<li>Adobe Illustrator CS2</li>
<li>ATOK 2009</li>
<li>VMWare Fusion 2</li>
<li>宛名職人 17</li>
</ul>
<p>です。フォトショ、イラレ、ATOK は Rosetta が必要だから動かないもの、 VMWare、宛名職 などはおそらく OS の変更がらみによる影響かと思われます。勝手な推測ではありますが。他にも EPSON のプリンタドライバか印刷ユーティリティあたりがヤバイとか、SugerSync が動かないとかいう情報もありましたが確認できていません。自分の環境で他にもないかは確信持てず。ここまででもおいそれとアップグレード出来ない感がすごいですよね。</p>
<p>Photoshop と Illustrator は、アドビのアップグレードポリシーの関係で手持ちの CS2 だと CS5 がアップグレードできる限界なのですが、 CS6 発表後発売までの無償アップグレードがついたバージョンを買うともう一個バージョンを稼げるということで待っていたのに&#8230;.諦めてアップグレード版購入しました。痛い&#8230;。</p>
<p>ATOK2009 はジャストシステムはサポートしないと発表していますが、Rosetta を使ういくつかのユーティリティが動かないだけ、という説もあります。今は Mac + Win パックで両方 2009 を使っているのですが、Win 版に何の不都合もないので Mac だけ 2011 にするかな、と考えています（まだ買ってない）。</p>
<p>VMWare Fusion は、3 にアップグレードしないでここまで耐えたので、正直 4 を待ちたい。しかし 3 でないと動かないとするとアップグレード版買うしかないのかな&#8230;。悩み中。</p>
<p>宛名職人はまだ対応時期未定ですね</p>
<ul>
<li><a href="http://www.agenda.co.jp/news/2011/07/lion.html">「Mac OS X Lion（10.7）」への対応に関する重要なお知らせ　株式会社アジェンダ</a></li>
</ul>
<h3>開発環境。</h3>
<p>Mac 上の開発環境である Xcode は最新が 4.1 です。ただ OS のバージョン毎に動かせる Xcode が違っていて、Lion 用の 4.1、SnowLeopard 用には 4.0 と 3.2、Leopard 用には 3.1 です。ややこしい&#8230;。</p>
<p>iPhone の開発については、常に最新 OS と最新アプリを使うのが原則です。そうしないと審査に通してもらえないし。だからある意味最新化することに抵抗はないというか最新化せざるを得ないわけですが、Mac OS X アプリの開発となると、過去の OS  のサポートをどこまでするかによって変わってきます。<a href="http://ishwt.net/software/ipmsg/" target="_blank">IP Messenger  for Mac OS X</a> で 10.5 以上をサポートしていて、10.5 SDK がインストールできる開発環境は Xcode 3.2 までです（4.0 になると 10.5 SDK は付属しない）。というわけで私には Xcode 3.2 は必須です。</p>
<p>ま、開発環境については開発者毎に要求事項が変わってくると思います。</p>
<p>Lion 上では（SnowLeopard で入れておいた） 3.2 と 4.1 が共存で動く、という情報があるので多分大丈夫です。4.0 は動かないらしいですね&#8230;。ただ、アップグレードしたら動きませんでしたということがあると困るので、3.2.6 が Lion で動かなくなる場合は担保しておく必要があります。</p>
<h3>旧 OS 環境保持。</h3>
<p>上記のとおり Xcode 3.2 の確実に動作する開発環境を残しておくため、Lion 移行後も旧バージョン OS 環境で発生する不具合の調査や動作確認などのために、10.5 Leopard と 10.6 Snow Leopard の環境を外付け HDD に構築しておくことにしました。</p>
<p>最初は USB メモリ上に構築しようかと思ったのですが、16 GB ぐらいでは足りない可能性があり、32 GB を 2 本となると結構なお値段になります。日常的に使うとは限らないので、安い外付け HDD に構築することに。</p>
<p><a href="http://ishwt.net/wp-content/uploads/2011/07/ToLion_HDD.jpg" rel="lightbox[5734]"><img src="http://ishwt.net/wp-content/uploads/2011/07/ToLion_HDD-420x280.jpg" title="HDD" width="420" height="280" class="aligncenter size-large wp-image-5741" /></a></p>
<p>HDD は USB メモリと同じ値段で 10 倍の容量が得られたので満足です。320 G  を 4 等分して 2 つのパーティションに 10.5 と 10.6 をそれぞれ入れましたが、やはり 16GB では容量が足りなくなるところでした。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/BUFFALO-%E3%83%97%E3%83%AC%E3%83%9F%E3%82%A2%E3%83%A0-%E3%82%B9%E3%83%AA%E3%83%A0%E3%83%9C%E3%83%87%E3%82%A3-%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%96%E3%83%ABHDD-HD-PCT320U2-WH/dp/B00428M19O%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00428M19O" target="_blank"><img src="http://ecx.images-amazon.com/images/I/316M7DBL0KL._SL160_.jpg" border="0" alt="BUFFALO プレミアム&スリムボディ ポータブルHDD 320GB ホワイト HD-PCT320U2-WH" /></a></p>
	<p><a href="http://www.amazon.co.jp/BUFFALO-%E3%83%97%E3%83%AC%E3%83%9F%E3%82%A2%E3%83%A0-%E3%82%B9%E3%83%AA%E3%83%A0%E3%83%9C%E3%83%87%E3%82%A3-%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%96%E3%83%ABHDD-HD-PCT320U2-WH/dp/B00428M19O%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00428M19O" target="_blank">BUFFALO プレミアム&スリムボディ ポータブルHDD 320GB ホワイト HD-PCT320U2-WH</a></p>
<hr class="tmkm-amazon-clear" /></div>
<p>環境は、以下のとおりにシンプルに構築しました。とはいえ、2 つの OS 環境再構築するのに土日の 2 日間（片手間に他の作業しながらですが）かかりましたけど。</p>
<ul>
<li>OS のクリーンインストール</li>
<li>最新 OS アップデート（Combo アップデート）の適用</li>
<li>ソフトウェアアップデートでの最新アップデート適用</li>
<li>MobileMe アカウントを設定して各種同期（ブックマーク、キーチェイン、メールアカウント等）</li>
<li>DropBoxのインストール（ + 設定）</li>
<li>1Password のインストール</li>
<li>Xcode のインストール</li>
<li>MacPorts のインストール（ + git のインストール）</li>
</ul>
<p>さてさて、最低限の準備は整ったのでそろそろMacbook への Lion インストールに挑戦してみるかな&#8230;。でも 10.7.1 がすぐに出そうなので、出るまで待つか悩み中。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2011/07/30/load-to-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2011/07/30/load-to-lion/" />
	</item>
		<item>
		<title>プロキシ環境（社内 LANとか）の中でMacPortsを使う</title>
		<link>http://ishwt.net/blog/2011/04/05/use-macports-at-inside-of-proxy/</link>
		<comments>http://ishwt.net/blog/2011/04/05/use-macports-at-inside-of-proxy/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 14:56:14 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[技術・サービス]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[MacPorts]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=5275</guid>
		<description><![CDATA[プロキシサーバ越しにインターネットを利用している環境（要は社内 LAN ですな）で MacPorts が上手く使えないと思っていたのですが、きちんと調べたら使えたのでメモしておきます。

MacPorts の紹介や解説的 [...]]]></description>
			<content:encoded><![CDATA[<p>プロキシサーバ越しにインターネットを利用している環境（要は社内 LAN ですな）で MacPorts が上手く使えないと思っていたのですが、きちんと調べたら使えたのでメモしておきます。</p>
<p style="text-align: center;"><img src="http://static2.macosforge.org/files/logos/MacPorts.png" width="183" height="70" class="aligncenter" style="-webkit-user-select: none;" /></p>
<p>MacPorts の紹介や解説的な話はありません。「MacPorts って何？おいしいの？」という方にはまず必要のない情報です。</p>
<p><span id="more-5275"></span></p>
<h3>MacPortsインストール。</h3>
<p>プロジェクトサイトから最新の dmg を落としてきてインストールします。MacPorts 自身のソースを落としてきてビルドする手順では確認していません。</p>
<ul>
<li><a href="http://www.macports.org/" target="_blank">The MacPorts Project</a></li>
</ul>
<p>エントリ時点での最新は 1.9.2 。</p>
<p><a href="http://ishwt.net/wp-content/uploads/2011/04/macports-installer.png" rel="lightbox[5275]"><img src="http://ishwt.net/wp-content/uploads/2011/04/macports-installer-420x312.png" title="macports-installer" width="420" height="312" class="aligncenter size-large wp-image-5310" /></a></p>
<p>インストールは一瞬で終わります。</p>
<p>プロキシのせいでできないのは、<code>port selfupdate</code>。rsync を使っているというのが理由で、 873 番ポートが開いていれば大丈夫だそうですが、普通開いていないと思います。selfupdate が出来ないと、インデックス情報の取得・最新化ができないのが痛いといいますか、先に進めません。</p>
<h3>環境設定。</h3>
<p>まず、<code><strong>~/.profile</strong></code>に以下の行を追加。</p>
<pre class="code">export http_proxy=http://&lt;proxy_server&gt;:&lt;proxy_port&gt;</pre>
<p>次に、<code><strong>/opt/local/etc/macports/sources.conf</strong></code> の rsync:// の行をコメントアウトして、ファイルを追加。Subversion で portindex をチェックアウトして、という方法がよく紹介されていますが、こちらのほうが楽です。</p>
<pre class="code">#rsync://rsync.macports.org/release/ports/ [default]
http://www.macports.org/files/ports.tar.gz [default]</pre>
<h3>portindex を最新化してから利用。</h3>
<pre class="console">$ sudo port -d sync</pre>
<p>で index が最新化されます。</p>
<pre class="console">$ sudo port list</pre>
<p>で、ずらっとパッケージがリストされればでてくればOK。</p>
<p>あとは普通に</p>
<pre class="console">$ sudo port install &lt;package_name&gt;</pre>
<p>でパッケージをインストールします。</p>
<p>うまくいかない場合は</p>
<pre class="console">$ sudo env http_proxy="http://&lt;proxy_server&gt;:&lt;proxy_port&gt;" port ...</pre>
<p>だとうまくいく場合あり。</p>
<p>というわけであきらめてた社内のプロキシ内の Mac で git が使えるようになりました。後になって Xcode4 と一緒に git がインストールされることがわかってしまったのですが（笑）、リリース直後の Xcdoe4 に添付のものよりも MacPorts の方がバージョン上のようで、今後を考えても MacPorts が使えるに越したことはない、と考えます。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2011/04/05/use-macports-at-inside-of-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2011/04/05/use-macports-at-inside-of-proxy/" />
	</item>
		<item>
		<title>Mac App Store どうしようかな、と。</title>
		<link>http://ishwt.net/blog/2010/10/25/mac-app-store/</link>
		<comments>http://ishwt.net/blog/2010/10/25/mac-app-store/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 18:14:14 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[IP Messenger]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[MacAppStore]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=4814</guid>
		<description><![CDATA[
先日の Back to the Mac イベントで一番印象的だったのが、Mac App Store でした。イベントの感想はたぶん書かないといいつつ、想定外の App Store に少々書かざるを得ません。さて、進出す [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ishwt.net/wp-content/uploads/2010/10/appstore.png" alt="appstore.png" width="486" height="291" /></p>
<p>先日の Back to the Mac イベントで一番印象的だったのが、<a title="Mac App Store" href="http://www.apple.com/jp/mac/app-store/">Mac App Store</a> でした。イベントの感想はたぶん書かないといいつつ、想定外の App Store に少々書かざるを得ません。さて、進出すべきかどうか。</p>
<p><span id="more-4814"></span></p>
<h3>Back to the Mac。</h3>
<p>「Mac に戻る（ iOS デバイスばかりではなく Mac にも注力するよ）」の意思表示、とばかり思っていましたが、フタを開ければ「（iOS の要素を）Mac に戻す」だったという。なるほどなるほど−。</p>
<p><a href="http://events.apple.com.edgesuite.net/1010qwoeiuryfg/event/index.html">Apple &#8211; Apple Events &#8211; Apple Special Event October 2010</a><br />
（当日のイベントのムービー）</p>
<p>発表された Mac OS X 10.7 Lion には、UI の細かなテイスト、フルスクリーン、マルチタッチ、FaceTime、そして App Store が取り入れられるとのこと。イベントの様子を見るとよくわかりますが、本当に iOS の UI、操作性などが取り込まれていきます。10.7 で何が進化するとか、と思っていましたが、これは進化です。iPod や iPhone を使って Windows から Mac にスイッチ、という話はままありますが、さらにそれが加速されやすくなるでしょうね。<br />
10.7 Lion も、iLife&#8217;11 も魅力的。<br />
MacBookAir も魅力的ですが、個人的にはモバイラーではないし開発もするので MacBookPro のほうがよいです。</p>
<h3>Mac App Store。</h3>
<p>で、問題の Mac App Store。これは iOS の AppStore とまるで同じような仕組みですが、Mac にとっては唯一のインストール方法ではないところが iOS とは違います。開発者は今まで通り、Web サイトで配布することもできるし、ユーザに独自のインストール手順を強いることもできます。</p>
<div style="text-align: center;"><img src="http://ishwt.net/wp-content/uploads/2010/10/appstore_icon.jpg" alt="appstore_icon.jpg" width="108" height="112" /></div>
<p>とはいえ、特に有償アプリの多くは AppStore に殺到するでしょう。課金、パッケージ、在庫、リリースまでのタイムラグ、個人情報管理といったものから解放されます。ワールドワイドな商品展開もやりやすくなり、販売機会やユーザリーチも増え、より低価格な設定で同じ利益を得られるようになるのではないでしょうか。ただ、AppStore ではわかりやすい価格競争が発生するのも事実です。ビジネスでやる場合、相当なネームバリューがあるか、先行逃げ切りしないかぎり後から参入するのは厳しくなるのかもしれません。</p>
<p>そして、ユーザはこのわかりやすい AppStore の仕組みになれてしまうと、パッケージを店頭に買いに行くぐらいなら AppStore にある競合品でいいや、という判断をするケースも多くなりそうです。簡便さだけでなく、先に述べた AppStore の価格設定の低さもおそらく大いに影響するでしょう。結果、ユーザからの間接的な圧力によって、自然と AppStore にソフトが集まってくる状況になると考えられます。</p>
<p>結構大きなパラダイムシフトになりかねない気がします。もしかすると、今回の MacBookAir だけではなく、数年のうちに Mac には標準では光学ドライブが付属しなくなるかもしれません。</p>
<p>で、フリーソフトの世界はどうなるのか、というのが微妙にはかりかねます。結局オープンソースのような出自のソフトはあくまで AppStore 以外で配布を続けるのではないかと思いますが、趣味で個人が作るようなソフトは結構参入するようにも思えます。ただ、iOS と Mac はちょっと違うんじゃないかなあ、という気もします、なんとなく。あと、iPhone の時にもそうでしたが、有償とは思えないような（しょうもない）ソフトウェアが続々有償で出てくるんではないかというのが懸念されます。最終的にはそこそこの状態に落ち着くのでしょうけど。</p>
<p>個人的にはどうしようか悩んでいます。フリーソフトを配布するために、1 年間に 1 万円のコストを負担するのかどうか、というところなんですよね&#8230;。有償のソフトウェアなんて作る気もないし、作るネタがない。加入しないと実機テストが出来ない iPhone Developer Program と違って、Mac Developer Program に加入しなくてもソフト開発において出来ないことって特にないんですよね（最新のベータ版 OS とか試せないぐらい）。</p>
<p>単純にコストの問題以外に、配布先についても懸念が残ります。Web サイトに掲載していれば、世界各国からダウンロードしに来てくれるものが、App Store 経由となると自分が設定した国に販売することになります。かえってリーチしなくなる国も出てくるわけで、どうなんだろうかと。AppStore は 10.6 以降にしか対応しないようで、結局 Web サイトの配布も並行して継続していく必要があるってことになりますし。</p>
<p>イベントでは 90 日以内に OPEN するようなことを言っていましたので、最初から行くならあまり時間はありません。</p>
<p>&#8230;もう少し考えます。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/10/25/mac-app-store/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/10/25/mac-app-store/" />
	</item>
		<item>
		<title>Back to the Mac. イベント直前</title>
		<link>http://ishwt.net/blog/2010/10/21/apple-event/</link>
		<comments>http://ishwt.net/blog/2010/10/21/apple-event/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 16:30:06 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=4800</guid>
		<description><![CDATA[
各所で報じられているとおり、今夜 Mac 関連のイベントがあります。これを書いている時点ではあと1時間程度。Mac OS X 10.7 Lion (?) が発表されるとか、iLife&#8217;11 が出るとか、Ma [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ishwt.net/wp-content/uploads/2010/10/backtomacevent.jpg" alt="backtomacevent.jpg" width="468" height="310" /></p>
<p>各所で報じられているとおり、今夜 Mac 関連のイベントがあります。これを書いている時点ではあと1時間程度。Mac OS X 10.7 Lion (?) が発表されるとか、iLife&#8217;11 が出るとか、MacBook Air の少し小さいのが出るとか言われていますね。</p>
<p><span id="more-4800"></span></p>
<p>このサイトはニュースサイトでも噂サイトでもないので、その噂も発表内容も個人的な感想レベルのことを書くか、書かないかです（たぶん書かない）。なので、始まる前に何となく思うことを。</p>
<p>これまで Mac OS X は、WWDC で発表されるものでした。それが今は WWDC は iOS 開発者のためのイベントになっています。Apple の売り上げに占める割合からいうとそれが正しいのかもしれないけれど、どうも寂しい感じがするんですよね。</p>
<p>Mac と iPhone とどっちが無くなると困るかといえば、Mac です。<br />
将来は分からないけれど、少なくとも今は Mac で、Mac のない生活は考えられないし耐えられない。<br />
いつか iOS の出来ることが進化して、コンピューティングのあり方が変わったりして Mac がなくなったり、iOS に吸収されたり、メインで使うものではなくなったりするのかもしれないけれど。</p>
<p>そういうわけで、今日のイベントはとても楽しみ。<br />
Mac OS X 10.6 はかなり完成された印象があるし、これ以上何をするんだろう、と考えるとあれが欲しいこれが欲しいというのはあまりような気がします。<br />
でも、10.5 から 10.6 は次の進化を見据えた下回りの強化だ、とよく言われました。次の進化が何なのか、本当に楽しみです。結局 Lion で決まりなのかな？</p>
<p>さて、あと 30 分で始まります。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/10/21/apple-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/10/21/apple-event/" />
	</item>
		<item>
		<title>Drive Genius 3</title>
		<link>http://ishwt.net/blog/2010/09/23/drive-genius-3/</link>
		<comments>http://ishwt.net/blog/2010/09/23/drive-genius-3/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 14:57:01 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Drive Genius]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=4757</guid>
		<description><![CDATA[Ver.2 を持っていて、アップグレード販売が期間限定だったので、購入しました。

	
	ドライブジーニアス3


Drive Genius は、Apple Store の Genius Bar でも利用されている、ディ [...]]]></description>
			<content:encoded><![CDATA[<p>Ver.2 を持っていて、アップグレード販売が期間限定だったので、購入しました。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%A4%E3%82%AE%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%AF-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%B8%E3%83%BC%E3%83%8B%E3%82%A2%E3%82%B93/dp/B003QLTREA%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003QLTREA" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51x81gY7NRL._SL160_.jpg" border="0" alt="ドライブジーニアス3" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%A4%E3%82%AE%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%AF-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%B8%E3%83%BC%E3%83%8B%E3%82%A2%E3%82%B93/dp/B003QLTREA%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003QLTREA" target="_blank">ドライブジーニアス3</a></p>
<hr class="tmkm-amazon-clear" /></div>
<p><span id="more-4757"></span></p>
<p style="text-align: left;">Drive Genius は、Apple Store の Genius Bar でも利用されている、ディスクメンテナンスユーティリティです。ユーティリティなのにユーザインタフェースも洗練されたアプリです。</p>
<p style="text-align: left;">Ver.3 になり、常駐監視機能がついたり、パーティションの操作機能が向上したりしています。Snow Lepard 完全対応も安心材料。</p>
<p style="text-align: left;">起動画面はこんな感じ。</p>
<p style="text-align: center;"><a href="http://ishwt.net/wp-content/uploads/2010/09/menu.png" rel="lightbox[4757]"><img src="http://ishwt.net/wp-content/uploads/2010/09/menu-tm.jpg" alt="menu.png" width="420" height="313" /></a></p>
<p style="text-align: left;">各種機能がありますが、一番利用するのはデフラグでしょう。</p>
<p style="text-align: left;">
<div style="text-align: center;"><a href="http://ishwt.net/wp-content/uploads/2010/09/defragmentation.png" rel="lightbox[4757]"><img src="http://ishwt.net/wp-content/uploads/2010/09/defragmentation-tm.jpg" alt="defragmentation.png" width="420" height="313" /></a></div>
<p style="text-align: left;">Mac OS X の HFS+ はデフラグが必要ないファイルシステムとされています。が、現実問題としてデフラグしないでディスクを使っていると、ディスクアクセスが激しく、パフォーマンスの劣化があると感じます。</p>
<p style="text-align: left;">我が家の iMac はディスク交換していてちょっとアクセス音のうるさいディスクなので、カリカリカリカリと延々やっていて、ログイン直後や iPhoto、iMovie など利用する際には遅いなーと感じることがありましたが、デフラグをかけてみると、ガリガリとディスクにアクセスしに行く音が減り、体感のパフォーマンスも向上したように感じられました。</p>
<p style="text-align: left;">デフラグをする前にはディスクの検証・修復も必須です。一応、Drive Genius のものと、OS 標準のディスクユーティリティのものと両方かけておくほうが安心かと思います。</p>
<p style="text-align: left;">あんまりお世話になるのも嬉しくはないのですが、いざというときに安心なのと、こういうツールで整備しておくと気持ちが良いほうなので、値段は少々はりますが気に入っています。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%A4%E3%82%AE%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%AF-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%B8%E3%83%BC%E3%83%8B%E3%82%A2%E3%82%B93/dp/B003QLTREA%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003QLTREA" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51x81gY7NRL._SL160_.jpg" border="0" alt="ドライブジーニアス3" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%A4%E3%82%AE%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%AF-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%B8%E3%83%BC%E3%83%8B%E3%82%A2%E3%82%B93/dp/B003QLTREA%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003QLTREA" target="_blank">ドライブジーニアス3</a></p>
<hr class="tmkm-amazon-clear" /></div>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/09/23/drive-genius-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/09/23/drive-genius-3/" />
	</item>
		<item>
		<title>iMac (Early 2008) ＝ iMac 8,1 の HDD 換装手順</title>
		<link>http://ishwt.net/blog/2010/03/05/how-to-replace-hdd-imac-early-2008/</link>
		<comments>http://ishwt.net/blog/2010/03/05/how-to-replace-hdd-imac-early-2008/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 17:02:55 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[HDD]]></category>
		<category><![CDATA[iMac]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=3012</guid>
		<description><![CDATA[たった 3ヶ月の間に 2 回も iMac の HDD を換装することになったので、バラシ手順をまとめておきます。
iMac も発売時期によって（？）内部の構造は微妙に違うようです。この手順は、iMac (Early 20 [...]]]></description>
			<content:encoded><![CDATA[<p>たった 3ヶ月の間に 2 回も iMac の HDD を換装することになったので、バラシ手順をまとめておきます。</p>
<p>iMac も発売時期によって（？）内部の構造は微妙に違うようです。この手順は、<a href="http://support.apple.com/kb/SP485?viewlocale=ja_JP" target="_blank">iMac (Early 2008) </a> についてのバラシ手順で、iMac (Early 2008) はシステムプロファイラで確認すると iMac 8,1 です。なお、実際に換装したのは MB323J/A (20inch, 2.4GHz) で、写真もそのモデルです。このモデルすべてで同じ構造をしているかどうかは確証はありません。また、他のモデルで適用できるかどうかも、確認できていません。</p>
<p><a style="text-decoration: none;" href="http://ishwt.net/wp-content/uploads/2010/02/imac-profile.png" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-profile-420x262.png" title="imac-profile" width="420" height="262" class="aligncenter size-large wp-image-3026" /></a></p>
<p><span id="more-3012"></span>決まり文句ですが 、</p>
<p><strong>iMac を分解することにより</strong><span style="color: #ff0000;"><strong>アップルの保証対象外</strong></span><strong>となりますので、そのリスクを理解した上で</strong><span style="color: #ff0000;"><strong>ご自身の責任において</strong></span><strong>本情報を扱って下さい。</strong></p>
<p><strong> </strong>静電気で内部のボードを壊せば二度と起動しなくなる場合もあります。どのような損害が発生しても当方は責任を負いかねます。</p>
<h3>0.準備。</h3>
<p>分解に必要なものは、以下の通り。作業前にはバックアップも忘れずに。</p>
<ul>
<li>プラスドライバー</li>
<li>吸盤</li>
<li>トルクス（星形）ドライバー  T-6 と T-8 の 2 サイズ</li>
<li>エアダスター（推奨）</li>
</ul>
<h3>1.枕をひいて寝かす。</h3>
<p>まず、LCD 面を上に向けて寝かせます。台座に負担がかかるので、適当な高さの枕を引いて下さい。本当に枕でもいいかもw。</p>
<div id="attachment_3024" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-start.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-start-420x280.jpg" alt="iMacを倒します" title="imac-start" width="420" height="280" class="size-large wp-image-3024" /></a><p class="wp-caption-text">iMacを倒します</p></div>
<p>写真は<a href="http://ishwt.net/blog/2009/08/23/ikea-brada-laptop-support/">IKEA の BRÄDA ラップトップサポート</a>を裏返したものを枕にしています。</p>
<h3>2.メモリカバーを外す。</h3>
<p>メモリ交換手順や台座の裏にも書いてあるとおり、プラスネジ 1 本で外れます。これを外さないと後でフレームが外せません。</p>
<div id="attachment_3027" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-memory-cover.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-memory-cover-420x280.jpg" alt="メモリカバー" title="imac-memory-cover" width="420" height="280" class="size-large wp-image-3027" /></a><p class="wp-caption-text">メモリカバーを外す</p></div>
<h3>3.ガラスパネルを外す。</h3>
<p>メモリカバー以外にネジの見えない iMac は、有名な話かと思いますが、実は LCD のガラスパネルが磁石で張り付いていて、その下にネジがあります。  ガラスパネルは吸盤があれば簡単にはずれます。吸盤はなんでもかまいません。専用工具みたいなのは不要です。</p>
<div id="attachment_3028" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-kyuban.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-kyuban-420x280.jpg" alt="吸盤" title="imac-kyuban" width="420" height="280" class="size-large wp-image-3028" /></a><p class="wp-caption-text">吸盤はこんなので十分</p></div>
<p>写真も実にキッチンのスポンジ入れの吸盤を借用したものです。ガラスパネルの四隅のいずれかにつけてゆっくり引っ張れば難なく外すことができます。磁石以外にガイドとなる鉄の短い棒が本体フレームの穴に刺さっていますので、変な方向に力をかけてガラスを割らないよう、注意してゆっくり引きはがします。</p>
<div id="attachment_3029" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-glass-removed.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-glass-removed-420x280.jpg" alt="ガラスを取り外した" title="imac-glass-removed" width="420" height="280" class="size-large wp-image-3029" /></a><p class="wp-caption-text">ガラスパネルを外したところ</p></div>
<p>外すとネジが見えます。ガラスパネルは安全な場所に待避推奨。</p>
<h3>4.前面フレームを外す。</h3>
<p>次に前面のアルミのフレームを外しにかかります。まず、ガラスを外した部分にあるネジ 12 本を外します。T-8 のトルクスネジです。</p>
<div id="attachment_3030" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-skrew-pos.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-skrew-pos-420x280.jpg" alt="ネジ位置" title="imac-frame-skrew-pos" width="420" height="280" class="size-large wp-image-3030" /></a><p class="wp-caption-text">フレームネジ位置</p></div>
<p>LCD 下の 4 本（青丸）が長く、それ以外の 8 本（赤丸）は短いです。</p>
<div id="attachment_3031" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-skrew.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-skrew-420x280.jpg" alt="ネジ" title="imac-frame-skrew" width="420" height="280" class="size-large wp-image-3031" /></a><p class="wp-caption-text">4本は長く、8本は短い</p></div>
<p>ネジを外したら、まずは液晶の上側を軽く力をいれて少しはがします。このとき、フレーム上部には iShigt のマイクの線が本体側からのびてフレーム側にテープ止めしてありますので、切らないように少しだけ浮かせる程度にします。</p>
<div id="attachment_3103" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-removing2.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-removing2-420x315.jpg" alt="①浮かせる ②ずらす ③広げる" title="imac-frame-removing2" width="420" height="315" class="size-large wp-image-3103" /></a><p class="wp-caption-text">①浮かせる ②ずらす ③広げる</p></div>
<p>次に、フレーム全体を下側にずらして、本体からはがれたフレームを上にひっくり返します。先ほどと同じく、マイクの線がつながったままですので、切らないように注意します。ここでマイクのラインは外すという方法もあるようですが、特に外す必要性を感じません。  ぺろんとフタが外れたような状態になります。</p>
<div id="attachment_3034" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-opened.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-frame-opened-420x490.jpg" alt="フレームが外れた" title="imac-frame-opened" width="420" height="490" class="size-large wp-image-3034" /></a><p class="wp-caption-text">フレームが外れた（ただし中央部がマイクの線でつながっている）</p></div>
<p>ここでかなりのホコリとご対面することになるのではないかと思いますが、LCD パネルもあるのでグッと我慢。</p>
<h3>5.液晶パネルを外す準備。</h3>
<p>続いて液晶パネルを外しますが、その前に 2 つ端子を外しておかないといけません。</p>
<div id="attachment_3104" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-panel.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-panel-420x336.jpg" alt="赤：ネジ　　黄緑：温度センサ　　黄色：LCDコネクタ" title="imac-lcd-panel" width="420" height="336" class="size-large wp-image-3104" /></a><p class="wp-caption-text">赤：ネジ　　黄緑：温度センサ　　黄色：LCDコネクタ</p></div>
<p>まずは LCD から伸びる温度センサーのケーブル（緑色）。ファンの周囲を回り込んでいるケーブルで、接続先は 4 つ並んでいる端子の一番右側です。一番右側以外は外す必要ありません。</p>
<div id="attachment_3106" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-senser-1.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-senser-1-420x280.jpg" title="imac-lcd-senser-1" width="420" height="280" class="size-large wp-image-3106" /></a><p class="wp-caption-text">一番右のコネクタを外す</p></div>
<div id="attachment_3105" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-senser-2.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-senser-2-420x280.jpg" title="imac-lcd-senser-2" width="420" height="280" class="size-large wp-image-3105" /></a><p class="wp-caption-text">コネクタを外したところ</p></div>
<p>次に LCD の映像コネクタ。これは LCD 下の右側にあるネジ止めされた端子です。ネジは T-6 で端子の両脇に 2 本あるので外し、あとはテープをつまんで引き揚げれば外れます。</p>
<div id="attachment_3107" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector-420x280.jpg" title="imac-lcd-connector" width="420" height="280" class="size-large wp-image-3107" /></a><p class="wp-caption-text">両脇の 2 本のネジを外す</p></div>
<div id="attachment_3108" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector-skrew.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector-skrew-420x250.jpg" title="imac-lcd-connector-skrew" width="420" height="250" class="size-large wp-image-3108" /></a><p class="wp-caption-text">このネジのみ T-6 です</p></div>
<div id="attachment_3109" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector-opened.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-connector-opened-420x280.jpg" title="imac-lcd-connector-opened" width="420" height="280" class="size-large wp-image-3109" /></a><p class="wp-caption-text">上に引っ張れば外れます</p></div>
<p>あとはパネル周辺のネジ 8 本を外します。T-8 のネジですべて同じ長さです。</p>
<div id="attachment_3110" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-panel-skrew.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-panel-skrew-420x262.jpg" title="imac-lcd-panel-skrew" width="420" height="262" class="size-large wp-image-3110" /></a><p class="wp-caption-text">T-8 × 8本</p></div>
<h3>6.液晶パネルを外す。</h3>
<p>これでパネルは本体からほぼ分離され、正面からみて左から右に持ち上げられるようになります。LCD の電源端子（らしきもの）が右側で 4 本つながっているので立ち上げるだけで引き離さないように注意です。</p>
<div id="attachment_3113" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-open.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-lcd-open-420x280.jpg" title="imac-lcd-open" width="420" height="280" class="size-large wp-image-3113" /></a><p class="wp-caption-text">あくまでこのように立ち上げるまで（写真右上側が本体の下側です）</p></div>
<div id="attachment_3114" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-connector-0.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-connector-0-420x280.jpg" title="imac-connector-0" width="420" height="280" class="size-large wp-image-3114" /></a><p class="wp-caption-text">2 本ずつコネクタが接続されている</p></div>
<p>この LCD の電源端子がくせ者で、2 本ずつ計 4 本ありますが、<strong>端子の形が全部まったく同じです。<span style="color: #ff0000;">うっかり外してしまうと、どれとどれをつなげばいいか分からなくなります。</span></strong>これに以前はまったことがあるので、まずは外す前に必ず目印をつけておきます。今回は一方にテープを貼っておきました。油性マジックで印をつけても良いと思います。白いコネクタを分離することになるので、外した後の両側に印が必要です。</p>
<div id="attachment_3115" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/02/imac-connector-1.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/02/imac-connector-1-420x280.jpg" title="imac-connector-1" width="420" height="280" class="size-large wp-image-3115" /></a><p class="wp-caption-text">黄色いテープを一組のケーブルの両側に貼ってみた</p></div>
<p>印をつけたらコネクタ 4 つを外しても大丈夫です。コネクタを外せば LCD パネルは取り外せます。</p>
<div id="attachment_3119" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/03/imac-lcd-removed1.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/03/imac-lcd-removed1-420x280.jpg" title="imac-lcd-removed" width="420" height="280" class="size-large wp-image-3119" /></a><p class="wp-caption-text">パネルを外したところ</p></div>
<p>LCD がどけば、いよいよ HDD が見えます。真ん中にあるのが HDD です。  LCD パネルも外せたので、エアダスターで吹きまくったり掃除機で吸ってホコリをきれいにするとよろしいかと。</p>
<div id="attachment_3120" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/03/imac-lcd-removed-3.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/03/imac-lcd-removed-3-420x350.jpg" title="imac-lcd-removed-3" width="420" height="350" class="size-large wp-image-3120" /></a><p class="wp-caption-text">LCD 取り外し後 全景</p></div>
<h3>7.HDD を取り外す。</h3>
<p>さていよいよ目的だった HDD を取り外せます。</p>
<div id="attachment_3123" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-2.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-2-420x280.jpg" title="imac-hdd-2" width="420" height="280" class="size-large wp-image-3123" /></a><p class="wp-caption-text">目的地</p></div>
<p>HDD 表面に温度センサーがテープ止めしてあるので外し、SATA コネクタと電源コネクタも外してから、はずしにかかります。</p>
<div id="attachment_3124" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-1.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-1-420x280.jpg" title="imac-hdd-1" width="420" height="280" class="size-large wp-image-3124" /></a><p class="wp-caption-text">取り外し準備完了</p></div>
<p>上側の黒いレバーみたいなものを力一杯下側に引きつつ、手前に引っ張ります。結構力ずく。レバーの上に固いスチールの部品があるので、それに手をかけてやると良いと思います。女性の力では無理かも。<br />
構造は、横から見るとこんな感じ。</p>
<div id="attachment_3125" class="wp-caption aligncenter" style="width: 430px"><a href="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-removing.jpg" rel="lightbox[3012]"><img src="http://ishwt.net/wp-content/uploads/2010/03/imac-hdd-removing-420x280.jpg" title="imac-hdd-removing" width="420" height="280" class="size-large wp-image-3125" /></a><p class="wp-caption-text">横からみたところ（HDDは交換後のもの）</p></div>
<p>マウント用の部品は珍しいもので、上側はレバーで、下側には短い棒がついています。</p>
<p>はい、ついに HDD が取り外せました。</p>
<h3>8.戻す。</h3>
<p>あとは新しい HDD にマウント用のパーツを付け替えて、逆の順番でくみ上げていけば OK です。<br />
新しい HDD を取り付けるときは、電源のコネクタと SATA コネクタは先につないでおいてから、黒いレバーの部分を押し込んではめるほうが楽です。あとは丁寧に逆順で作業していきましょう。</p>
<p>最後の ガラスパネルをつける時には、ホコリの進入に注意しましょう。どれだけうまくやったつもりでもかなりの確率でホコリは入ってしまいます。なるべくホコリが少ない場所で作業するとして、iMac を立ててからモニタを垂直以上にチルトし（上側がより手前になるように）、ガラスパネルと上を合わせて、横からみるとハの字（人の字かな）になるようにしてから接合面両方を化学ぞうきんや液晶クリーナーで拭いてホコリをとり、手早くパネルを取り付けると比較的うまくいきます。磁石でついているだけなので簡単に取り付けることができます。つけ直しは簡単なので、納得いかなければ何度でもやり直せばいいと思います。多少ホコリが入ってしまっても、電源をつければ LCD が発光して見えなくなるので、よっぽど大きなモノが入り込まなければある程度のところであきらめるのがよろしいかと&#8230;。</p>
<p>以上です。本手順が誰かの役に立てば幸いです。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%83%8D%E3%83%83%E3%82%AF%E3%82%B9-ANEX-%E3%83%98%E3%82%AF%E3%82%B9%E3%83%AD%E3%83%BC%E3%83%96%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BCT%E5%9E%8B-T6%C3%9750-No-6300/dp/B002SQLDSM%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002SQLDSM" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31puBymtM4L._SL160_.jpg" border="0" alt="アネックス(ANEX) ヘクスローブドライバーT型 T6×50 No.6300" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%83%8D%E3%83%83%E3%82%AF%E3%82%B9-ANEX-%E3%83%98%E3%82%AF%E3%82%B9%E3%83%AD%E3%83%BC%E3%83%96%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BCT%E5%9E%8B-T6%C3%9750-No-6300/dp/B002SQLDSM%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002SQLDSM" target="_blank">アネックス(ANEX) ヘクスローブドライバーT型 T6×50 No.6300</a></p>
<hr class="tmkm-amazon-clear" /></div>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%83%8D%E3%83%83%E3%82%AF%E3%82%B9-ANEX-%E3%83%98%E3%82%AF%E3%82%B9%E3%83%AD%E3%83%BC%E3%83%96%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BCT%E5%9E%8B-T8%C3%9760-No-6300/dp/B002SQLDU0%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002SQLDU0" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31IIiNimNyL._SL160_.jpg" border="0" alt="アネックス(ANEX) ヘクスローブドライバーT型 T8×60 No.6300" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%82%A2%E3%83%8D%E3%83%83%E3%82%AF%E3%82%B9-ANEX-%E3%83%98%E3%82%AF%E3%82%B9%E3%83%AD%E3%83%BC%E3%83%96%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BCT%E5%9E%8B-T8%C3%9760-No-6300/dp/B002SQLDU0%3FSubscriptionId%3DAKIAIVJ5V2EYEHPAGUKA%26tag%3Dishwt-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002SQLDU0" target="_blank">アネックス(ANEX) ヘクスローブドライバーT型 T8×60 No.6300</a></p>
<hr class="tmkm-amazon-clear" /></div>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/03/05/how-to-replace-hdd-imac-early-2008/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/03/05/how-to-replace-hdd-imac-early-2008/" />
	</item>
		<item>
		<title>MacBook のトラックパッド修理</title>
		<link>http://ishwt.net/blog/2010/02/24/macbook-trackpad-repair/</link>
		<comments>http://ishwt.net/blog/2010/02/24/macbook-trackpad-repair/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 14:53:36 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[トラックパッド]]></category>
		<category><![CDATA[修理]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=3083</guid>
		<description><![CDATA[MacBook のトラックパッドの調子が悪かったので、修理に出しました。

MacBook のモデルは Late2008、アルミニウムユニボディの MacBook 13 インチです。今では後継機種は MacBookPro [...]]]></description>
			<content:encoded><![CDATA[<p>MacBook のトラックパッドの調子が悪かったので、修理に出しました。</p>
<p style="text-align: center;"><img src="http://ishwt.net/wp-content/uploads/2010/02/mbrepair-title.jpg" title="mbrepair-title" width="468" height="200" class="aligncenter size-full wp-image-3091" /></p>
<p><span id="more-3083"></span>MacBook のモデルは Late2008、アルミニウムユニボディの MacBook 13 インチです。今では後継機種は MacBookPro シリーズに入っています。</p>
<p>見た目 MacBookPro のように見えつつ、ロゴは確かに MacBook。</p>
<p><a href="http://ishwt.net/wp-content/uploads/2010/02/mbrepair-logo.jpg" rel="lightbox[3083]"><img src="http://ishwt.net/wp-content/uploads/2010/02/mbrepair-logo-420x280.jpg" title="mbrepair-logo" width="420" height="280" class="aligncenter size-large wp-image-3092" /></a></p>
<p>症状は、クリックが効かないことがあるというもので、カチカチ、とやってもクリックしたことにならないことがよくありました。ゆっくりしっかりとやれば効くんですけど、カチカチ、では効かないことがしょっちゅう。クリック感はあるのですが。</p>
<p>昨年末あたりから気にはなりつつ、なんだか慣れてしまってカチカチカチカチクリックしまくるクセがついていました。しかし、なにか胸騒ぎがして（嘘）保証書を確認してみたところ、今週末 2/27 で保証期間が切れるところでした。</p>
<p>あわてて AppleStore 渋谷のジーニアスバーを予約です。</p>
<ul>
<li><a href="http://www.apple.com/jp/retail/geniusbar/" target="_blank">アップル &#8211; Apple Store &#8211; Genius Bar</a></li>
</ul>
<p>持ち込む前には</p>
<ul>
<li>TimeMachine でのバックアップ</li>
<li>FileVault での全アカウントの暗号化</li>
<li>ゲストアカウントの有効化（アップル担当者の調査作業用）</li>
<li>液晶や本体をきれいにする</li>
</ul>
<p>をしておきました。</p>
<p>で、午前中に持ち込んで調べてもらいましたが、ちょっとさわっただけですぐにおかしいことは確認してもらえて、トラックパッドの部品交換となりました。</p>
<p>部品の在庫がちょうどあったということで即日修理、夜に会社の帰り際に受け取ってきました（そして今このブログを書いている）。</p>
<p>受け取るときにももちろん確認しましたが、ばっちり直っています。</p>
<p><a style="text-decoration: none;" href="http://ishwt.net/wp-content/uploads/2010/02/mbrepair-trackpad.jpg" rel="lightbox[3083]"><img src="http://ishwt.net/wp-content/uploads/2010/02/mbrepair-trackpad-420x280.jpg" title="mbrepair-trackpad" width="420" height="280" class="aligncenter size-large wp-image-3093" /></a></p>
<p>見た目はなにも変わっていませんが、快適快適。</p>
<p>なお、ジーニアス兄さんに訊いたところ、この機種は全面ガラストラックパッドの最初の機種ですが、この機種をはじめトラックパッドの不良率が目立った機種などはないそうです。運が悪いといえば悪いですが、保証期間内に無償修理してもらえたのでラッキーだったと、ポジティブシンキンで行きます。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/02/24/macbook-trackpad-repair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/02/24/macbook-trackpad-repair/" />
	</item>
		<item>
		<title>再び iMac の HDD 換装</title>
		<link>http://ishwt.net/blog/2010/02/14/replace-imac-hdd-again/</link>
		<comments>http://ishwt.net/blog/2010/02/14/replace-imac-hdd-again/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 20:27:15 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[HDD]]></category>
		<category><![CDATA[iMac]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=3006</guid>
		<description><![CDATA[昨年 11 月に容量不足により iMac の HDD を換装したのですが、3ヶ月弱でどうも調子がおかしくなり、さらに別のに換装しました。


調子が悪いを具体的にいうと、

ときどきカッコンカッコン音がする。
音がすると [...]]]></description>
			<content:encoded><![CDATA[<p>昨年 11 月に<a href="http://ishwt.net/blog/2009/11/30/replace-imac-hdd/">容量不足により iMac の HDD を換装</a>したのですが、3ヶ月弱でどうも調子がおかしくなり、さらに別のに換装しました。</p>
<p><img src="http://ishwt.net/wp-content/uploads/2010/02/hdd-title.jpg" title="hdd-title" width="468" height="147" class="aligncenter size-full wp-image-3007" /></p>
<p><span id="more-3006"></span></p>
<p>調子が悪いを具体的にいうと、</p>
<ul>
<li>ときどきカッコンカッコン音がする。</li>
<li>音がすると決まってフリーズする。</li>
<li>そうでなくとも気づくとフリーズしていることがある。</li>
<li>フリーズすると電源長押しで強制シャットダウンするしかない。</li>
<li>ディスクユーティリティで検証すると大量エラー、修復をかけても修復失敗。</li>
</ul>
<p>ひどいですよねぇ、3ヶ月弱でこんなことに。頻度としては数日に１回から、だんだん連日になりかかってるかな、という状況。一度ディスクを再フォーマットしてみようかとも思ったのですが、HDD は消耗品というか当たり外れもあるものなので、不安を抱えながら日々使っていくのもいかがなものかと。たまたまハズレを引いたと考えて、新しい HDD に替えることにしました。</p>
<p><a href="http://ishwt.net/wp-content/uploads/2010/02/hdds.jpg" rel="lightbox[3006]"><img src="http://ishwt.net/wp-content/uploads/2010/02/hdds-420x177.jpg" title="hdds" width="420" height="177" class="aligncenter size-large wp-image-3008" /></a></p>
<p>左から、購入時に内蔵されていた 250GB (Western Digital）、前回交換した 750 GB (Seagate）、今回交換した 1TB (日立GS）。</p>
<p>容量増やしたかったわけではないんですが、1 万円以下で 7200 rpm で 500 GB 以上で Seagate 以外、という条件だとたまたまそれしか在庫が無くて。Seagate 製品の品質が悪い訳じゃなくてたまたま今回ハズレを引いたメーカーだというだけだとは思うんですが、気分的に同じメーカーもどうかと。</p>
<p>まずは USB 外付けケースに入れて OS インストール、TimeMachine のバックアップから環境復元、アプリやフォントなどを復元という一通りの作業をおえて、以前と全く同じ環境を新しいディスク上に構築した上で、HDD を換装しました。Intel Mac は USB 外部ディスクを起動ディスクに出来てしまうし、TimeMachine はユーザ環境をまるまる復元してくれてしまうし、本当に最近の Mac 環境は便利。奥さんも、再インストールされた環境とは信じられない模様でした。</p>
<p>という感じで再インストールから HDD 換装から結構時間取られてしまいました。</p>
<p>iMac の HDD 交換手順はモデルによって違いがあるため前回かなり痛い目を見ており、私の使っているモデルに関するもので私がもし最初に見ていれば、という情報のものはなかったので、手順を別途まとめようと思います。短い期間に 2 度目で余裕があったので写真をきちんと撮れましたし。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/02/14/replace-imac-hdd-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/02/14/replace-imac-hdd-again/" />
	</item>
		<item>
		<title>SystemConfiguration.framework でネットワークの変化を知る</title>
		<link>http://ishwt.net/blog/2010/02/10/catch-network-state-change-with-systemconfiguration-framework/</link>
		<comments>http://ishwt.net/blog/2010/02/10/catch-network-state-change-with-systemconfiguration-framework/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 13:52:29 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[SystemConfiguration.framework]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=2836</guid>
		<description><![CDATA[前回、SystemConfiguration.framework の DynamicStore からネットワークの状態を得る方法を書きましたが、今回はさらにその変化を検出して処理を行う方法です。すぐ次のエントリで書こうと [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ishwt.net/blog/2010/01/19/get-network-state-from-systemconfiguration-framwework/">前回</a>、SystemConfiguration.framework の DynamicStore からネットワークの状態を得る方法を書きましたが、今回はさらにその変化を検出して処理を行う方法です。すぐ次のエントリで書こうと思っていたのに遅くなってしまいました。</p>
<p><img src="http://ishwt.net/wp-content/uploads/2010/02/sc-catch-title.png" title="sc-catch-title" width="468" height="132" class="aligncenter size-full wp-image-2969" /></p>
<p><span id="more-2836"></span></p>
<p>ネットワーク環境の変化は、コンピュータの名称が変わったり、ネットワークの接続環境が変わったり、ということが考えられます。前者はシステム環境設定での変更によるものですし、後者はイーサネットケーブルが抜けたり、無線 LAN の ON / OFF や弱電界での切断、ノートタイプの場合のスリープ復帰などなど、結構あります。</p>
<p>ネットワークを利用するアプリケーションでは、動作中にネットワークの環境が変わったら、アプリケーションとしてそれに応じた振る舞いや動作の変化をさせるのが望ましく、今回の説明はそのためにネットワーク状況の変化を検出する方法です。</p>
<p>Cocoa (Objective-C) ではよく NSNotificationCenter にオブザーバとして登録して通知を受けます。C言語で実装するものの、それと同様の方式で取得します。</p>
<p>サンプルなソースの全体像はこんな感じ。エラー処理と終了時のお片付け処理は省略してあるので脳内補完してください。</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">DynamicStore 通知サンプル</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://ishwt.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><div class="objc" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">static</span> <span class="kw4">void</span> _CallbackFunc<span class="br0">&#40;</span>SCDynamicStoreRef store, CFArrayRef changedKeys, <span class="kw4">void</span> <span class="sy0">*</span>info<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw1">@interface</span> NetTest</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; SCDynamicStoreRef &nbsp; scDynStore;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; SCDynamicStoreContext &nbsp; scContext;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRunLoopSourceRef&nbsp; runLoopSource;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>setupSC;</div></li>
<li class="li1"><div class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>updateSC<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span class="kw5">NSArray</span></a><span class="sy0">*</span><span class="br0">&#41;</span>changedKeys;</div></li>
<li class="li1"><div class="de1"><span class="kw1">@end</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw1">@implementation</span> NetTest</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>setupSC</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFStringRef keys<span class="br0">&#91;</span>2<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFArrayRef&nbsp; keyArray;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/memset.html"><span class="kw3">memset</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span>scContext, 0, <a href="http://www.opengroup.org/onlinepubs/009695399/functions/sizeof.html"><span class="kw3">sizeof</span></a><span class="br0">&#40;</span>scContext<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; scContext.info&nbsp; <span class="sy0">=</span> self;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; scDynStore&nbsp; <span class="sy0">=</span> SCDynamicStoreCreate<span class="br0">&#40;</span><span class="kw2">NULL</span>, <span class="br0">&#40;</span>CFStringRef<span class="br0">&#41;</span><span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span class="kw5">NSBundle</span></a> mainBundle<span class="br0">&#93;</span> bundleIdentifier<span class="br0">&#93;</span>, _CallbackFunc, <span class="sy0">&amp;</span>amp;scContext<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; runLoopSource &nbsp; <span class="sy0">=</span> SCDynamicStoreCreateRunLoopSource<span class="br0">&#40;</span><span class="kw2">NULL</span>, scDynStore, 0<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; keys<span class="br0">&#91;</span>0<span class="br0">&#93;</span> &nbsp; &nbsp; <span class="sy0">=</span> SCDynamicStoreKeyCreateHostNames<span class="br0">&#40;</span><span class="kw2">NULL</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; keys<span class="br0">&#91;</span>1<span class="br0">&#93;</span> &nbsp; &nbsp; <span class="sy0">=</span> SCDynamicStoreKeyCreateNetworkGlobalEntity<span class="br0">&#40;</span><span class="kw2">NULL</span>, kSCDynamicStoreDomainState, kSCEntNetIPv4<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; keyArray&nbsp; &nbsp; <span class="sy0">=</span> CFArrayCreate<span class="br0">&#40;</span><span class="kw2">NULL</span>, <span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw4">void</span><span class="sy0">**</span><span class="br0">&#41;</span>keys, 2, <span class="kw2">NULL</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; SCDynamicStoreSetNotificationKeys<span class="br0">&#40;</span>scDynStore, keyArray, <span class="kw2">NULL</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRunLoopAddSource<span class="br0">&#40;</span>CFRunLoopGetCurrent<span class="br0">&#40;</span><span class="br0">&#41;</span>, runLoopSource, kCFRunLoopDefaultMode<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>keyArray<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>keys<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>keys<span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>updateSC<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span class="kw5">NSArray</span></a><span class="sy0">*</span><span class="br0">&#41;</span>changedKeys</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">unsigned</span> i;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; <span class="br0">&#91;</span>changedKeys count<span class="br0">&#93;</span>; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span class="kw5">NSString</span></a><span class="sy0">*</span> key <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span class="kw5">NSString</span></a><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#91;</span>changedKeys objectAtIndex<span class="sy0">:</span>i<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;SystemConfiguration key[%d] '%@' is changed!&quot;</span>, i, key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">// 各種処理</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">// （キーの値を取り出したり、画面の表示を更新したり）</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw1">@end</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> _CallbackFunc<span class="br0">&#40;</span>SCDynamicStoreRef&nbsp; &nbsp; store, CFArrayRef changedKeys, <span class="kw4">void</span> <span class="sy0">*</span>info<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; NetTest <span class="sy0">*</span>self <span class="sy0">=</span> <span class="br0">&#40;</span>NetTest<span class="sy0">*</span><span class="br0">&#41;</span>info;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span>self updateSC<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span class="kw5">NSArray</span></a><span class="sy0">*</span><span class="br0">&#41;</span>changedKeys<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></div></div>
<p>まず、前回と異なるのは DynamicStore を作る <code>SCDynamicStoreCreate()</code> 関数の第三引数に、 <code>NULL</code> ではなくコールバック関数 <code>_CallbackFunc</code> を設定しています。 <code>_CallbackFunc</code> は先頭のプロトタイプ宣言のとおり、DynamicStore と、変更があったキーの一覧、そしてコンテキストの情報が渡ってきます。最後のコンテキスト情報 (<code>info</code>) は、パラメタで渡している <code>context.info</code> が設定されることになっていて、DynamicStore はその内容を関知していません。コールバック関数で利用するために、<code>self</code> を設定しておきます。</p>
<p>続いて、実際に変更があったらコールバックを呼び出すための設定処理をしています。<br />
監視したいキーを CFArrayRef にして登録します。キーは前回みたとおり、<code>scutil</code> で確認した中から、必要なものを選んで監視するとよいと思います。RunLoopSource まわりの手続はおまじないと思っておけばいいかと。</p>
<p>これで、登録しておいたキー項目に変化があると、コールバック関数が呼ばれるようになります。コールバック関数は、<code>NetTest</code> クラスのメンバではない単なる C の関数ですので、コールバック関数の <code>info</code> に設定しておいたクラスのインスタンスをキャストしてそのメソッドを呼び出して処理させます。</p>
<p>実際の処理は、ループして変化したキーをチェック、キーの値を DynamicStore から取り出して、適切な処理や GUI への操作を行う、ということになります。</p>
<p>まとめると以下でしょうか。</p>
<ul>
<li>コールバック関数を登録する</li>
<li>監視したいキーのリストを用意して登録する</li>
<li>RunLoopSourceを追加する</li>
<li>コールバック関数から処理メソッドを呼び出す</li>
<li>処理メソッド内でキーを判定して応じた処理をする</li>
</ul>
<p>ちょっと駆け足でしたが、こんな感じです。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/02/10/catch-network-state-change-with-systemconfiguration-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/02/10/catch-network-state-change-with-systemconfiguration-framework/" />
	</item>
		<item>
		<title>SystemConfiguration.framework でネットワークの情報を得る</title>
		<link>http://ishwt.net/blog/2010/01/19/get-network-state-from-systemconfiguration-framwework/</link>
		<comments>http://ishwt.net/blog/2010/01/19/get-network-state-from-systemconfiguration-framwework/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:56:36 +0000</pubDate>
		<dc:creator>ishwt</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[SystemConfiguration.framework]]></category>

		<guid isPermaLink="false">http://ishwt.net/?p=2771</guid>
		<description><![CDATA[Mac アプリのプログラミングで、SystemConfiguration.framework の DynamicStore を利用すると、ネットワーク関連の現在状態や設定値を取得できます。ネットワーク以外にもいくつか取得 [...]]]></description>
			<content:encoded><![CDATA[<p>Mac アプリのプログラミングで、SystemConfiguration.framework の DynamicStore を利用すると、ネットワーク関連の現在状態や設定値を取得できます。ネットワーク以外にもいくつか取得できたりします。</p>
<p><img src="http://ishwt.net/wp-content/uploads/2010/01/SC_capture.png" title="SC_capture" width="468" height="160" class="aligncenter size-full wp-image-2775" /></p>
<p>SystemConfiguration.framework は C 言語の API が用意されており、Objective-C の API はありません。関数等の接頭詞は &#8220;SC&#8221; です。</p>
<p><span id="more-2771"></span></p>
<h3>キー。</h3>
<p>DynamicStore は名前からも分かるとおり現在のダイナミック（動的）な設定情報・状態値を保持していて、URI 形式のキーで値を取得することができます。<br />
<code>State:/Network/Global/DNS</code><br />
といった表記でキーが表されます。キーは多岐にわたりますし、特定の文法で記載されるので、簡単にキーを取得するためのユーティリティ関数が用意されています。</p>
<p><code>SCDynamicStoreKey.h</code></p>
<p><code> </code></p>
<p><code></p>
<ul>
<li>SCDynamicStoreKeyCreateConsoleUser()</li>
<li>SCDynamicStoreKeyCreateHostNames()</li>
<li>SCDynamicStoreKeyCreateLocation()</li>
<li>SCDynamicStoreKeyCreateNetworkGlobalEntity()</li>
<li>SCDynamicStoreKeyCreateNetworkInterface()</li>
<li>SCDynamicStoreKeyCreateNetworkInterfaceEntity()</li>
<li>SCDynamicStoreKeyCreateNetworkServiceEntity()</li>
<li>SCDynamicStoreKeyCreateProxies()</li>
</ul>
<p></code><br />
また、各関数にキーの可変部をパラメタとして渡す場合の定数が、SCSchemaDefinitions.h に多数記載されています。<br />
ただ、上記の関数リファレンスやヘッダを見ても、実際にどのようなキーがあり、上記のユーティリティ関数に与えるパラメタも、結果として得られるキーも、いまひとつ具体的に分かりません。<br />
そこで役に立つのが <code>scutil</code> というコマンド。</p>
<pre class="console">$ scutil
&gt;
&gt; list
  subKey [0] = Plugin:IPConfiguration
  subKey [1] = Plugin:InterfaceNamer
  subKey [2] = Setup:
  subKey [3] = Setup:/
  subKey [4] = Setup:/Network/BackToMyMac
  subKey [5] = Setup:/Network/Global/IPv4
  subKey [6] = Setup:/Network/HostNames
  subKey [7] = Setup:/Network/Interface/en1/AirPort
  subKey [8] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41
  subKey [9] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/IPv4
  subKey [10] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/IPv6
  subKey [11] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/Interface
  subKey [12] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/Modem
  subKey [13] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/PPP
  subKey [14] = Setup:/Network/Service/17252794-5272-4263-8436-93458EA29A41/Proxies
  subKey [15] = Setup:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA
  subKey [16] = Setup:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/IPv4
  subKey [17] = Setup:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/IPv6
  subKey [18] = Setup:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/Interface
  subKey [19] = Setup:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/Proxies
  subKey [20] = Setup:/Network/Service/9EAEE8A7-60C3-44EF-98F6-FA7E0D2E3396
  subKey [21] = Setup:/Network/Service/9EAEE8A7-60C3-44EF-98F6-FA7E0D2E3396/IPv4
  subKey [22] = Setup:/Network/Service/9EAEE8A7-60C3-44EF-98F6-FA7E0D2E3396/IPv6
  subKey [23] = Setup:/Network/Service/9EAEE8A7-60C3-44EF-98F6-FA7E0D2E3396/Interface
  subKey [24] = Setup:/Network/Service/9EAEE8A7-60C3-44EF-98F6-FA7E0D2E3396/Proxies
  subKey [25] = Setup:/System
  subKey [26] = State:/IOKit/LowBatteryWarning
  subKey [27] = State:/IOKit/Power/CPUPower
  subKey [28] = State:/IOKit/PowerAdapter
  subKey [29] = State:/IOKit/PowerManagement/Assertions
  subKey [30] = State:/IOKit/PowerManagement/CurrentSettings
  subKey [31] = State:/IOKit/PowerManagement/SystemLoad
  subKey [32] = State:/IOKit/PowerManagement/SystemLoad/Detailed
  subKey [33] = State:/IOKit/PowerSources/InternalBattery-0
  subKey [34] = State:/IOKit/SystemPowerCapabilities
  subKey [35] = State:/Network/BackToMyMac
  subKey [36] = State:/Network/Global/DNS
  subKey [37] = State:/Network/Global/IPv4
  subKey [38] = State:/Network/Global/Proxies
  subKey [39] = State:/Network/Interface
  subKey [40] = State:/Network/Interface/en0/Link
  subKey [41] = State:/Network/Interface/en1/AirPort
  subKey [42] = State:/Network/Interface/en1/IPv4
  subKey [43] = State:/Network/Interface/en1/IPv6
  subKey [44] = State:/Network/Interface/en1/Link
  subKey [45] = State:/Network/Interface/lo0/IPv4
  subKey [46] = State:/Network/Interface/lo0/IPv6
  subKey [47] = State:/Network/Interface/vmnet1/IPv4
  subKey [48] = State:/Network/Interface/vmnet8/IPv4
  subKey [49] = State:/Network/MulticastDNS
  subKey [50] = State:/Network/PrivateDNS
  subKey [51] = State:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/DHCP
  subKey [52] = State:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/DNS
  subKey [53] = State:/Network/Service/6C67FE3C-C7EC-4885-9250-307B8EBA5DEA/IPv4
  subKey [54] = State:/Users/ConsoleUser
  subKey [55] = com.apple.DirectoryService.NotifyTypeStandard:DirectoryNodeAdded
  subKey [56] = com.apple.network.identification
&gt;</pre>
<p><code>scutil</code> は起動するとプロンプトになりコマンドが入力できます。<code>help</code>で利用出来るコマンドが表示されますので見てみてください。そこそこいろいろ出来ます。<br />
今回は、<code>list</code>と言うコマンドで、利用出来るキーの一覧を表示しています。なお、キーは常に一定ではなく、ネットワークの状況によって増減します。</p>
<h3>値。</h3>
<p>DynamicStore から取得できる値は NSDictionary ( CFDictionary ) で、実際の個別の設定値はさらにその中に規定のプロパティ名で格納されています。これは <code>scutil</code> の <code>show</code> コマンドで確認することができます。</p>
<pre class="console">&gt; show State:/Network/Global/IPv4
&lt;dictionary&gt; {
  PrimaryInterface : en1
  PrimaryService : 6C67FE3C-C7EC-4885-9250-307B8EBA5DEA
  Router : 192.168.1.1
}
&gt; show State:/Network/Interface/en1/Link
&lt;dictionary&gt; {
  Active : TRUE
}
&gt; show State:/Network/Interface/en1/IPv4
&lt;dictionary&gt; {
  Addresses : &lt;array&gt; {
    0 : 192.168.1.102
  }
  BroadcastAddresses : &lt;array&gt; {
    0 : 192.168.1.255
  }
  SubnetMasks : &lt;array&gt; {
    0 : 255.255.255.0
  }
}
&gt;</pre>
<div id="_mcePaste">このように、PrimaryInterface（優先されるネットワーク）が &#8220;en1&#8243; （無線 LAN）で、無線 LAN の リンク状態、IP アドレス、ブロードキャストアドレス、サブネットマスクなどが分かります。</div>
<h3>コード例。</h3>
<p>さて、これをプログラム上ではどう取得するかですが、結構簡単です。</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">利用サンプル</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://ishwt.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://ishwt.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><div class="objc" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">#import &lt;Cocoa/Cocoa.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co1">#import &lt;SystemConfiguration/SCDynamicStoreKey.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co1">#import &lt;SystemConfiguration/SCSchemaDefinitions.h&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>test</div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; SCDynamicStoreRef &nbsp; store;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; SCDynamicStoreContext &nbsp; context;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFStringRef &nbsp; &nbsp; key;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFDictionaryRef &nbsp; &nbsp; val;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFStringRef &nbsp; &nbsp; host;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFStringRef &nbsp; &nbsp; primIF;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFArrayRef&nbsp; &nbsp; &nbsp; addrs;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFStringRef &nbsp; &nbsp; addr;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co2">// DynaimcStore生成</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/memset.html"><span class="kw3">memset</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span>context, 0, <a href="http://www.opengroup.org/onlinepubs/009695399/functions/sizeof.html"><span class="kw3">sizeof</span></a><span class="br0">&#40;</span>context<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; context.info&nbsp; &nbsp; <span class="sy0">=</span> self;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; store &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> SCDynamicStoreCreate<span class="br0">&#40;</span><span class="kw2">NULL</span>, <span class="br0">&#40;</span>CFStringRef<span class="br0">&#41;</span><span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span class="kw5">NSBundle</span></a> mainBundle<span class="br0">&#93;</span> bundleIdentifier<span class="br0">&#93;</span>, <span class="kw2">NULL</span>, <span class="sy0">&amp;</span>context<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co2">// コンピュータ名取得</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; key <span class="sy0">=</span> SCDynamicStoreKeyCreateHostNames<span class="br0">&#40;</span><span class="kw2">NULL</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; val <span class="sy0">=</span> <span class="br0">&#40;</span>CFDictionaryRef<span class="br0">&#41;</span>SCDynamicStoreCopyValue<span class="br0">&#40;</span>store, key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; host&nbsp; &nbsp; <span class="sy0">=</span> <span class="br0">&#40;</span>CFStringRef<span class="br0">&#41;</span>CFDictionaryGetValue<span class="br0">&#40;</span>val, kSCPropNetLocalHostName<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;HostName is %@.&quot;</span>, host<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>val<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co2">// PrimaryInteaface取得</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; key <span class="sy0">=</span> SCDynamicStoreKeyCreateNetworkGlobalEntity<span class="br0">&#40;</span><span class="kw2">NULL</span>, kSCDynamicStoreDomainState, kSCEntNetIPv4<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; val <span class="sy0">=</span> <span class="br0">&#40;</span>CFDictionaryRef<span class="br0">&#41;</span>SCDynamicStoreCopyValue<span class="br0">&#40;</span>store, key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; primIF&nbsp; <span class="sy0">=</span> <span class="br0">&#40;</span>CFStringRef<span class="br0">&#41;</span>CFDictionaryGetValue<span class="br0">&#40;</span>val, kSCDynamicStorePropNetPrimaryInterface<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;PrimaryInterface is %@.&quot;</span>, primaryIF<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRetain<span class="br0">&#40;</span>primIF<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>val<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co2">// IPアドレス取得</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; key <span class="sy0">=</span> SCDynamicStoreKeyCreateNetworkInterfaceEntity<span class="br0">&#40;</span><span class="kw2">NULL</span>, kSCDynamicStoreDomainState, primIF, kSCEntNetIPv4<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; val <span class="sy0">=</span> <span class="br0">&#40;</span>CFDictionaryRef<span class="br0">&#41;</span>SCDynamicStoreCopyValue<span class="br0">&#40;</span>store, key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; addrs &nbsp; <span class="sy0">=</span> <span class="br0">&#40;</span>CFArrayRef<span class="br0">&#41;</span>CFDictionaryGetValue<span class="br0">&#40;</span>val, kSCPropNetIPv4Addresses<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; addr&nbsp; &nbsp; <span class="sy0">=</span> <span class="br0">&#40;</span>CFStringRef<span class="br0">&#41;</span>CFArrayGetValueAtIndex<span class="br0">&#40;</span>addrs, 0<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;IP Address is %@&quot;</span>, addr<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>val<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>key<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CFRelease<span class="br0">&#40;</span>primIF<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div></div></div>
<p>上記サンプルはエラー処理をしていませんが、値を階層的に取得しているので、エラーチェックは処理の都度行う必要があります。</p>
<p><code>scutil</code> で欲しいキーを確認すれば、別のキーでも取得の方法は同じ要領です。ネットワークの設定や諸情報、ネットワーク以外にも電源（電池）の状態などもわかったり、結構面白いです。</p>
<p>実は、DynamicStore を使うと今回取得したような値の変化（ネットワーク状態の変化、システム環境設定での変更）を検出することもできますが、それは次回に。</p>
]]></content:encoded>
			<wfw:commentRss>http://ishwt.net/blog/2010/01/19/get-network-state-from-systemconfiguration-framwework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ishwt.net/blog/2010/01/19/get-network-state-from-systemconfiguration-framwework/" />
	</item>
	</channel>
</rss>

