Mac用基本ソフトであるMacOSと、iPhoneやiPad用基本ソフトであるiOSのバージョンアップが続けざまに発表されました。OSのバージョンアップは慎重にやりたいので、いつも休日を待って実行しております。ということで、本日実施しました。
MacOSの方は、主にセキュリティ関係のバージョンアッップつうことで、全てのユーザーにおすすめとのこと。今やインターネットに繋げっぱなしという使い方が普通になってきたので、セキュアな状態を保つためにもやっておきましょう。実施後は、アクセス権の修復を忘れずに。
一方iOSの方も、セキュリティ関係のバージョンアップが主なようです。一部絵文字が正しく表示されないバグの処理が行われているとのことなので、気になってた方は朗報ですね。私はよくわからないです。ついでに言うと、iPhoneやiPadユーザーってOSのバージョンアップってやっているんでしょうか。iOSが5.1以降のiPhone類は、無線LAN環境にあればMacやPC等のパソコンがなくてもOSのバージョンアップができるので、ぜひやってみてください。今回のようなマイナーバージョンアップは無料ですしね。
どちらも20分とかからずバージョンアップ終了。使用感が特に変わる訳でないので実感はないですが、精神衛生上の効果はあります。
2012/05/12
2012/05/02
マウスを買った
いつも使っていたMicrosoft製のマウスのスクロールホイールが調子悪くなって、以前から家に転がっていたエレコム製のマウスに付け替えたんですが、これまたスクロールホイールの感触がイマイチ。「こりゃアカンわい」ということで、ご近所のコジマさんでマウスを新調しました。
個人的にいわゆるMicrosoft製のWindowsや、Word、Excel等のアプリケーション類は使用感が嫌いで、会社では仕方なく使っているものの個人的には持っていません。家のパソコンは2台ともMacです。ところがマウスだけはMicrosoft製がお気に入りです。ボタンのタッチや、今回問題になったスクロールホイールの感触はバッチリです。
今のマウスは以前の赤色LEDから青色LEDに変わっていて(Microsoftはブルートラックテクノロジーと呼んでいます)読み取り精度が改善されています。無線マウスも便利ですが、私はキーボードを無線にしていますので、マウスは有線です。マウスは有線の方が、レスポンスが良くて使いいい気がします。
2012/02/18
Mac OS X 統合アップデート 10.7.3
久しぶりに、Mac関係の記事をアップします。
2月2日にMacOSX10.7、通称Lionの10.7.2から10.7.3へのアップデートが配布されました。通常変わった部分だけ入れ替える差分アップデートが配信されるのですが、これが困ったことにほとんど全てのアプリケーションが起動しないなどかなりキツいバグがあったようで、この2週間程アップルサポートコミュニティ等で情報収集したりしてアップデートを控えておりました。
結局通常の差分アップデートは配布が中止になって、ほとんど全てを入れ替える統合アップデートが配布されるようになり、休日の本日実行してみました。統合アップデートはファイルが大きく1.35GB程あったのですが、それでも10分くらいで終了。今のところこれといった不具合は見当たらず、普通に動いています。ちなみに私のMacは、iMacの20-inch, Early 2008です。
以前にも書きましたが、OSのアップデートは情報収集を十分にしてから実行しましょう。それといざというときのためにバックアップが大切なのは、言うまでもありません。
2月2日にMacOSX10.7、通称Lionの10.7.2から10.7.3へのアップデートが配布されました。通常変わった部分だけ入れ替える差分アップデートが配信されるのですが、これが困ったことにほとんど全てのアプリケーションが起動しないなどかなりキツいバグがあったようで、この2週間程アップルサポートコミュニティ等で情報収集したりしてアップデートを控えておりました。
結局通常の差分アップデートは配布が中止になって、ほとんど全てを入れ替える統合アップデートが配布されるようになり、休日の本日実行してみました。統合アップデートはファイルが大きく1.35GB程あったのですが、それでも10分くらいで終了。今のところこれといった不具合は見当たらず、普通に動いています。ちなみに私のMacは、iMacの20-inch, Early 2008です。
以前にも書きましたが、OSのアップデートは情報収集を十分にしてから実行しましょう。それといざというときのためにバックアップが大切なのは、言うまでもありません。
2011/10/15
iCloud を試してみた
iPhone に iOS5 、iMac に MacOS10.7 と標準画像管理アプリである iPhoto9.2 をインストールして、いよいよ iCloud を試す準備が整いました。この iCloud というのは、大雑把に言うとApple が用意した巨大サーバを使ってネット経由で情報を共有しようというサービスです。管理にはそれぞれのユーザーのメールアドレスとパスワードから構成されている Apple ID を使います。私を含めMac や iPhone ユーザーなら既に無料登録してあるはずなのですが、私は iCloud を使うために、???@me.com のアドレスを使ってもうひとつ別に Apple ID を作りました。なんとなく、この方がいいかなと思ったので。
iCloud の中で最も判りやすいものにフォトストリームという写真共有サービスがあります。先ずそれぞれの機器でフォトストリームをONにしておいて、iPhone で写真を撮ります。すると無線LAN経由で数十秒もしないうちに、Mac にその iPhone で撮影した写真が取り込まれ、 iPhoto9.2 を使って見ることができるようになります。一般的にはデジカメで撮影し、自宅に持って帰ってUSBケーブルなどでデジカメを接続し、MacなりPCなりに写真を撮り込んで、アプリを立ち上げて写真を見るという一連の作業が、ほぼオートマチックで瞬時のうちに完成します。これはすごいことだと思いませんか。ちなにみ https://www.icloud.com/ にアクセスしログインすると、 iCloud の中身の閲覧や、取り込んだ写真に関して一括削除することができます(今のところ選択削除はダメみたいでした)。
その他 iCloud には、これまたほぼオートマチックでiPhoneの住所録やメモのバックアップを取る機能や、ダウンロードした楽曲を保存しておく機能などが用意されています。現状5GBのストレージ容量なら無料です。(10GBで1700円/年の有償)今後さらなる可能性が期待できる iCloud ですが、私の頭がついていけるか不安です。
iCloud の中で最も判りやすいものにフォトストリームという写真共有サービスがあります。先ずそれぞれの機器でフォトストリームをONにしておいて、iPhone で写真を撮ります。すると無線LAN経由で数十秒もしないうちに、Mac にその iPhone で撮影した写真が取り込まれ、 iPhoto9.2 を使って見ることができるようになります。一般的にはデジカメで撮影し、自宅に持って帰ってUSBケーブルなどでデジカメを接続し、MacなりPCなりに写真を撮り込んで、アプリを立ち上げて写真を見るという一連の作業が、ほぼオートマチックで瞬時のうちに完成します。これはすごいことだと思いませんか。ちなにみ https://www.icloud.com/ にアクセスしログインすると、 iCloud の中身の閲覧や、取り込んだ写真に関して一括削除することができます(今のところ選択削除はダメみたいでした)。
その他 iCloud には、これまたほぼオートマチックでiPhoneの住所録やメモのバックアップを取る機能や、ダウンロードした楽曲を保存しておく機能などが用意されています。現状5GBのストレージ容量なら無料です。(10GBで1700円/年の有償)今後さらなる可能性が期待できる iCloud ですが、私の頭がついていけるか不安です。
2011/10/14
MacOS Lion (10.7.2) ゲット!
なんとか我がiMacが"Core 2 Duo"搭載で最新OSのインストール要件をぎりぎり満たしていたこともあって、10.7Lionにバージョンアップしてしまいました。発売から3ヶ月で10.7.2になっていましたね。この最新MacOS Lion から、ネット経由で入手するようになったので、DVDディスク等はありません。そのせいか、2600円という価格設定です。正直言ってWindows比べ安いなぁ。まあ、結局昨日のiOS5のバージョンアップ(無料です)に誘発されてしまったということです。"iCloud"を試したいということもあります。
とりあえずインストーは30分程度で無事終了。雨の週末ということでお酒をいただいてしまったので細かい設定や、変更点の把握、面白い新機能などは明日以降の土日に試してみたいと思っています。動作が重くならなきゃいいんやけど、どうかな?
とりあえずインストーは30分程度で無事終了。雨の週末ということでお酒をいただいてしまったので細かい設定や、変更点の把握、面白い新機能などは明日以降の土日に試してみたいと思っています。動作が重くならなきゃいいんやけど、どうかな?
2011/10/06
スティーブ・ジョブズ氏逝去
本日、Apple社の創業者で前CEOのスティーブ・ジョブズ氏が逝去されました。56歳。
私は、仕事上ではありますが、初めて個人使用が許されて手にしたMacintoshSE30以来、会社の仕事はWindowsPCになったものの、個人的にはiMac、iPod、iPhoneユーザでAppleファンであり、スティーブ・ジョブズ氏のファンでありました。謹んでご冥福をお祈りいたします。
写真はAppleのサイトから引用させてもらいました。
私は、仕事上ではありますが、初めて個人使用が許されて手にしたMacintoshSE30以来、会社の仕事はWindowsPCになったものの、個人的にはiMac、iPod、iPhoneユーザでAppleファンであり、スティーブ・ジョブズ氏のファンでありました。謹んでご冥福をお祈りいたします。
写真はAppleのサイトから引用させてもらいました。
2011/09/16
iPad2ゲット!?
来週の21日に仕事で使うので、会社のiPad2を持って帰ってきました。
まだ少し触った程度ですが、やっぱiPhone4のA4チップと違いA5チップは速いですね。グラフィックパフォーマンスが最大×9高速つうのもまんざらじゃない印象です。ディスプレイもきれいで、本体もほんと薄いのですが、やっぱ600gはちょっと重たい感じがします。それでもネットにつなげてメールとネットサーフィンだけの目的で安物のPCを買うのだったら、iPad+無線LAN、欲を言えば追加でBluetoothの無線キーボードつう選択肢は結構いいんじゃないかと思ってしまいます。全国の単身赴任のお父さん、マジでご検討を。
そんな訳で今までほとんどiPadをいじったことがなかったので、この週末はちょっと遊んだろうと思っています。
まだ少し触った程度ですが、やっぱiPhone4のA4チップと違いA5チップは速いですね。グラフィックパフォーマンスが最大×9高速つうのもまんざらじゃない印象です。ディスプレイもきれいで、本体もほんと薄いのですが、やっぱ600gはちょっと重たい感じがします。それでもネットにつなげてメールとネットサーフィンだけの目的で安物のPCを買うのだったら、iPad+無線LAN、欲を言えば追加でBluetoothの無線キーボードつう選択肢は結構いいんじゃないかと思ってしまいます。全国の単身赴任のお父さん、マジでご検討を。
そんな訳で今までほとんどiPadをいじったことがなかったので、この週末はちょっと遊んだろうと思っています。
2011/07/16
ソフトウェア・アップデート連発
6月末からAppleのソフトウェア・アップデートが連発されております。ウィークデイに焦って実施してトラブったら嫌だったので、本日まとめて実施しました。
先ずはMacOSXのアップデートです。次期OS、Lion10.7へのアップグレードがMacAppStoreから行えるようになるというのが目玉でしょうか。Lionは7/19にはリリースとの噂もありますし、パッケージ販売をしないそうなので、このアップデートは必須ですね。
その他”iDVD7.1.2”、”java”、”エプソンプリンタドライバ”など実施しました。
OSのアップデートと、その他アプリやドライバのアップデートは分けて実施した方が無難です。その他再起動を要求するものも、面倒でも分けて実施した方がいいと思います。
続きましては、iOSの4.3.4のアップデートです。pdfファイルの表示に対するセキュリティアップデートとのこと。あまりiPhoneでpdfファイルを表示させたことはないですが、この手のセキュリティアップデートは実施しておきたいものです。
次期iOS5は、既にAppleのサイトに「この秋登場!」と出ており、一部の新機能紹介もあります。そうなると新しいハードも出てくる訳で、ユーザーも大変です。ちなみに新しいiPhoneはA5プロセッサ、800万画素カメラ搭載といわれていますが、外観のデザインは変更ないそうです。
先ずはMacOSXのアップデートです。次期OS、Lion10.7へのアップグレードがMacAppStoreから行えるようになるというのが目玉でしょうか。Lionは7/19にはリリースとの噂もありますし、パッケージ販売をしないそうなので、このアップデートは必須ですね。
その他”iDVD7.1.2”、”java”、”エプソンプリンタドライバ”など実施しました。
OSのアップデートと、その他アプリやドライバのアップデートは分けて実施した方が無難です。その他再起動を要求するものも、面倒でも分けて実施した方がいいと思います。
続きましては、iOSの4.3.4のアップデートです。pdfファイルの表示に対するセキュリティアップデートとのこと。あまりiPhoneでpdfファイルを表示させたことはないですが、この手のセキュリティアップデートは実施しておきたいものです。
次期iOS5は、既にAppleのサイトに「この秋登場!」と出ており、一部の新機能紹介もあります。そうなると新しいハードも出てくる訳で、ユーザーも大変です。ちなみに新しいiPhoneはA5プロセッサ、800万画素カメラ搭載といわれていますが、外観のデザインは変更ないそうです。
2011/06/30
「iOSプログラミング入門」を買ってしまった
給料もでたので、iPhone等のプログラミング専門書を衝動買いしてしまいました。まだ精読できていませんので、内容についてのコメントはできません。検索エンジン等でこのブログにたどり着いた方、申し訳ありません。
iPhoneなどの携帯デバイスや、Macのプログラミング開発環境である"Xcode"がバージョンアップしたつうのはGWの5/5にアップさせてもらいましたが,イマイチ取っつきにくかったので、参考書を探したりしていました。
今回紹介する本がベストかベターか、私好みかどうかはまだわかりません。ただ著者の大津真氏の本は過去にMacとUNIX関連の書籍を数冊読ませていただき、個人的に判りやすく好きであります。そんなんで、今回も期待するところです。
でも、やっぱiPhoneのプログラミング→アプリ開発は、有償なのが素人の参入の敷居を高くしていますね。Apple社の審査はいいとして、無料アプリに限るとか、自身のiPhoneでの動作確認に限るとかで、無償にできないものでしょうかね。それで上手くいきそうだったら、ロイヤルティを支払うのも気にならなくなると思うんですけど・・・。
iPhoneなどの携帯デバイスや、Macのプログラミング開発環境である"Xcode"がバージョンアップしたつうのはGWの5/5にアップさせてもらいましたが,イマイチ取っつきにくかったので、参考書を探したりしていました。
今回紹介する本がベストかベターか、私好みかどうかはまだわかりません。ただ著者の大津真氏の本は過去にMacとUNIX関連の書籍を数冊読ませていただき、個人的に判りやすく好きであります。そんなんで、今回も期待するところです。
でも、やっぱiPhoneのプログラミング→アプリ開発は、有償なのが素人の参入の敷居を高くしていますね。Apple社の審査はいいとして、無料アプリに限るとか、自身のiPhoneでの動作確認に限るとかで、無償にできないものでしょうかね。それで上手くいきそうだったら、ロイヤルティを支払うのも気にならなくなると思うんですけど・・・。
2011/05/05
Xcode4のリリースと、Xcode3との共存について
![]() |
Fig.1 Xcode4.0.2の起動画面 |
さてApple社の提供するMac用のMacOSXや、iPhoneやiPad用のiOS上で動作するアプリケーションソフトを開発するには、同社の提供する統合開発環境(IDE)であるXcodeを使用します。3/9にこれまでのXcode3.2.6に代りXcode4.0がリリースされ、現在マイナーアップデートされた4.0.2が入手できます。
従来バージョンのXcode3.2.6は、現在も無償でAppleのサイトからダウンロードが可能です。新バージョンのXcode4は、有償のデベロッパー(Developer Programs)会員は無料ダウンロードできますが、私のように無償登録会員に対しては600円の有料アプリとなっていしまいました。有償とはいえXcode4って10GBを超える巨大プログラム群ですから、600円で手に入るということはいいことだと思います。で、"App Store"からダウンロードしてしまいました。
中身はメジャーバージョンアップのため、従来バージョンと比べかなり趣が異なります。細部に渡って相違点は多数あると思いますが私には解説不可能ですので、素人目に見ても判る違いを記します。従来バージョンまでは主にコード入力を行う"Xcode"と、GUIを構築する"Interface Builder"の二つのアプリを行ったり来たりしてアプリ開発を行っていました。Xcode4でこの二つが完全に統合されていて、ひとつのウィンドウ上で表示のみを切り替えてアプリ開発を行う点だと思います。またちょいとひっかかったのは、コード編集中にもコンパイルが平行して始まることで、私はPreferences → General → Enable Live Issues のチェックをはずしてリアルタイムのコンパイルを停止させました。ついでに現状ではXcode4は英語表記です。
そんな訳で、入手はしてみたもののしばらくは使い慣れた従来バージョンも併用したいと思うニーズは、本格的なプログラマを中心に大きいと思います。4.0.2ではダウンロード後インストールアプリを起動すると新バージョンは"Developer"フォルダーにインストールされ、従来バージョンは"Developre-old"フォルダーに自動的に移動されます。アイコンが同じなのでややこしいですが、どちらも問題なく起動します。プロジェクトも読み込むことは出来ますが、最終的には使い分けた方が良さそうです。
また従来バージョンを使用中に".xib"ファイルをダブルクリックすると、本来は"Interface Builder"が起動しなければならないのですが、"Xcode4.0.2"が起動してしまう場合があります。この場合は該当する".xib"のパスタイプがFig.2のようになっているので、Fig.3のように変更すると修正できます。該当する".xib"ファイルを右クリックして「情報を見る」ウィンドウで変更できます。
![]() |
Fig.2 |
![]() |
Fig.3 |
2011/04/03
MacOS 10.6.7 にアップデートした
MacOS10.6、通称"Snow Leopard"の10.6.6から10.6.7へのアップデートが、3/22に配布開始されました。もう10日くらい前の話なのですが、アップデートの顛末をここに記します。Macユーザーのみなさんの参考になればと思います。
Macの場合ソフトウェアのアップデートは、「ソフトウェア・アップデート」と言う機能で配信されます。その後インストールするかどうかを選択するのですが、このとき今回のようなOSのアップデートに飛びついてはいけません。なんといってもMacの基本ソフトなのですから、アップデート後にどんな不具合が待っているかわかりません。少々の不具合は自分で解決できる方、もしくは私のように起動ディスクを持っていて毎日"Time Machine"という機能でバックアップをとっている者以外は、先ず今回のOSのアップデートによって不具合が報告されていないかググりましょう。
先ず「ディスクユーティリティー」を使ってアクセス権の修復をします。さらに「ソフトウェア・アップデート」経由でアップデートをせず、アップルのサイトのサポート→ダウンロードにある「統合アップデート」通称"Combo"を使ってアップデートします。"Combo"は直近のバージョン以外からでもアップデートができますので、結果的に不具合が回避できる可能性が高くなります。
この結果、私のMacも上記”iTunes"等の不具合が解消されました。
いずれにしても、「初心者のアップデートはググってから」というのが定説です。と言ってもみんながこの戦法を使うと、だれもアップデートできなくなるんですけど・・・。
Macの場合ソフトウェアのアップデートは、「ソフトウェア・アップデート」と言う機能で配信されます。その後インストールするかどうかを選択するのですが、このとき今回のようなOSのアップデートに飛びついてはいけません。なんといってもMacの基本ソフトなのですから、アップデート後にどんな不具合が待っているかわかりません。少々の不具合は自分で解決できる方、もしくは私のように起動ディスクを持っていて毎日"Time Machine"という機能でバックアップをとっている者以外は、先ず今回のOSのアップデートによって不具合が報告されていないかググりましょう。
私の場合、不具合が報告されている機種ではなかったため「ソフトウェア・アップデート」経由で10.6.7へアップデートをしたのですが、アップデート後に、”iTunes"が起動してすぐ落ちる、"Dashboard"のサードパーティ製アプリが起動しなくなった、などの不具合に遭遇しました。そんな訳"Time Machine"でバージョンを10.6.6に戻して(2時間くらいかかった)一週間後の今日、以下の方法で再チャレンジを試みました。
先ず「ディスクユーティリティー」を使ってアクセス権の修復をします。さらに「ソフトウェア・アップデート」経由でアップデートをせず、アップルのサイトのサポート→ダウンロードにある「統合アップデート」通称"Combo"を使ってアップデートします。"Combo"は直近のバージョン以外からでもアップデートができますので、結果的に不具合が回避できる可能性が高くなります。
この結果、私のMacも上記”iTunes"等の不具合が解消されました。
いずれにしても、「初心者のアップデートはググってから」というのが定説です。と言ってもみんながこの戦法を使うと、だれもアップデートできなくなるんですけど・・・。
2011/01/09
新Macのプログラミング入門 その8
半年振りの「新Macのプログラミング入門」です。正月明けの三連休で、風邪が治りきらず外に出る気にならないため、久しぶりにやってみます。
やはり教科書は”ヒンギス本”です。17章P256のチャレンジ問題に挑戦しましょう。教科書通りにプログラムすると下の図のような結果が得られます。
以下に.mファイルを示します。線を描く部分の抜粋です。
”//”でコメントアウトしてある部分は、教科書通りにランダムな直線を描くループになっていまして、その下のループの部分が曲線を描く様に変更(追加)したところです。
ベジェ曲線を描く”curveToPoint: contorolPoint1: conrolPoint2:”というメソッドが見つかれば、後は試行錯誤でなんとかなりますので、そんなに難しくなかったですかね。
やはり教科書は”ヒンギス本”です。17章P256のチャレンジ問題に挑戦しましょう。教科書通りにプログラムすると下の図のような結果が得られます。
![]() |
教科書どおり |
チャレンジ問題では「この(ランダムな)直線を曲線に置き換えてください。」というものなので、こんなふうにしてみました。
![]() |
曲線に換えてみた |
以下に.mファイルを示します。線を描く部分の抜粋です。
”//”でコメントアウトしてある部分は、教科書通りにランダムな直線を描くループになっていまして、その下のループの部分が曲線を描く様に変更(追加)したところです。
- (id)initWithFrame:(NSRect)rect {
if (![super initWithFrame:rect]) {
return nil;
}
srandom(time(NULL));
path = [[NSBezierPath alloc] init];
[path setLineWidth:3.0];
NSPoint p = [self randomPoint];
[path moveToPoint:p];
int i;
//for (i = 0 ; i <15 ; i++) { ・・・教科書どおりの直線を描くループ
//p =[self randomPoint];
//[path lineToPoint:p];
//} ・・・ループ終了
for (i = 0; i <15 ; i++) { ・・・チャレンジ問題の曲線を作るループ
NSPoint q = [self randomPoint];
NSPoint r = [self randomPoint];
NSPoint s = [self randomPoint];
[path curveToPoint:q controlPoint1:r controlPoint2:s]; ・・・曲線を書くメソッド
}
・・・ループ終了
[path closePath];
return self;
}
}
if (![super initWithFrame:rect]) {
return nil;
}
srandom(time(NULL));
path = [[NSBezierPath alloc] init];
[path setLineWidth:3.0];
NSPoint p = [self randomPoint];
[path moveToPoint:p];
int i;
//for (i = 0 ; i <15 ; i++) { ・・・教科書どおりの直線を描くループ
//p =[self randomPoint];
//[path lineToPoint:p];
//} ・・・ループ終了
for (i = 0; i <15 ; i++) { ・・・チャレンジ問題の曲線を作るループ
NSPoint q = [self randomPoint];
NSPoint r = [self randomPoint];
NSPoint s = [self randomPoint];
[path curveToPoint:q controlPoint1:r controlPoint2:s]; ・・・曲線を書くメソッド
}
・・・ループ終了
[path closePath];
return self;
}
}
ベジェ曲線を描く”curveToPoint: contorolPoint1: conrolPoint2:”というメソッドが見つかれば、後は試行錯誤でなんとかなりますので、そんなに難しくなかったですかね。
2010/12/12
"WineBottler" その2
前回紹介した、MacOS上でWIndowsアプリを走らせる”WineBottler”のその2です。今回は、フリーのWindowsアプリをダウンロード(DL)してきて、動作するか試してみました。使用させていただいたのは、"MFCLOCK"という、キレイなカレンダー&時計のアプリです。作者の方、ありがとうございます。
先ず普通にWindowsアプリをMacにDLすると真っ白なアイコンになるのですが、既に”WineBottler”がインストールされている環境では、”WineBottler”のアイコンが付いたファイルと認識されます。そのままダブルクリックをすると、以下のパネルが表示されます。
このままの状態で「Go」すると、解凍する場所を聞いてくる以下のパネルが表示されます。
Zドライブなんてないしどうしたものかと思案した挙句、予めアプリケーションフォルダ内に適当にフォルダを作っておいて、そのフォルダを解凍先ディレクトリに指定してみました。そうすると、その指定したフォルダ内に”install.exe”ファイルを含む数個のファイルができます。そこで、”install.exe”をダブルクリックすると、以下のパネルが表示されます。
またまたCドライブなんてないけどなぁ、と思いながら、今度はどうしようもできず「次へ(N)>」をクリックすると、以下のパネルが現れました。
なんかパネル上では順調そうなので、「完了」をクリック。すると画面に以下のアプリが登場し、無事MacOS上にWindowsアプリがインストール、起動できました。
起動したアプリはこんな感じです。日本語は文字化けするとの情報があったのですが、このアプリに限っては大丈夫そうですね。
私の環境では、user/library/application support/wine/prefixes/Microsoft Internet Explorer7/drive_c/Program files/mfclockというフォルダが出来ていて、その中に解凍した時と同じファイル群が保存されていました。解凍先というのは一次的なファイルの保管場所なのかもしれませんが、未確認です。
そんな訳で、MacOS上でWindowsアプリを動作させることが出来ました。全てのWindowsアプリが問題なく"WineBottlerを介して"MacOS上動作するとは思っていませんが、やっぱりすごいですね。世の中便利になったものです。
先ず普通にWindowsアプリをMacにDLすると真っ白なアイコンになるのですが、既に”WineBottler”がインストールされている環境では、”WineBottler”のアイコンが付いたファイルと認識されます。そのままダブルクリックをすると、以下のパネルが表示されます。
このままの状態で「Go」すると、解凍する場所を聞いてくる以下のパネルが表示されます。
Zドライブなんてないしどうしたものかと思案した挙句、予めアプリケーションフォルダ内に適当にフォルダを作っておいて、そのフォルダを解凍先ディレクトリに指定してみました。そうすると、その指定したフォルダ内に”install.exe”ファイルを含む数個のファイルができます。そこで、”install.exe”をダブルクリックすると、以下のパネルが表示されます。
またまたCドライブなんてないけどなぁ、と思いながら、今度はどうしようもできず「次へ(N)>」をクリックすると、以下のパネルが現れました。
なんかパネル上では順調そうなので、「完了」をクリック。すると画面に以下のアプリが登場し、無事MacOS上にWindowsアプリがインストール、起動できました。
起動したアプリはこんな感じです。日本語は文字化けするとの情報があったのですが、このアプリに限っては大丈夫そうですね。
私の環境では、user/library/application support/wine/prefixes/Microsoft Internet Explorer7/drive_c/Program files/mfclockというフォルダが出来ていて、その中に解凍した時と同じファイル群が保存されていました。解凍先というのは一次的なファイルの保管場所なのかもしれませんが、未確認です。
そんな訳で、MacOS上でWindowsアプリを動作させることが出来ました。全てのWindowsアプリが問題なく"WineBottlerを介して"MacOS上動作するとは思っていませんが、やっぱりすごいですね。世の中便利になったものです。
2010/12/05
MacでWindowsアプリを動かす "WineBottler"
私の自宅のパソコンはず〜っとMac。Windowsマシン=PCは会社でしか使ったことがないです。実際にMacを使っていて不便に感じることはほとんどないし、現在発売されているMacはWindowsをインストールすることができますので、Windows7を買ってくれば問題なしと言いたいところなんですが、たまにしか必要性がでてこないのにそのためだけだったらWindows7は高価過ぎ。そこで、フリーでWindowsアプリを動かすことができるか調べてみました。
元々この様な目的で”Wine”というオープンソースのプロジェクトがあることは知っていたのですが、パッケージマネージャからダウンロードして、コンパイルしてって面倒やなと思っていたら、アプリケーション形式で用意されているものがみつかりました。それが”WineBottler”です。今日時点でバージョンは、1.1.44でした。
![]() |
"WineBottler"を起動したところ |
DLして展開すると、二つのアプリが入っています。"Wine.app"は起動すると常駐してWindowsアプリを走らせるものみたいです。一方"WineBottler.app"はWindowsアプリのインストールや起動がコントロールできるようです。予めWindowsアプリが10点ばかし登録されていましたので、その中からIE7を選んで、インストール、起動させてみました。
![]() |
"IE7"を起動させたところ |
Mac用のIEは確かバージョン5が最終なので、まさしくWindowsアプリがMac上で、しかもWindowsもインストールされていないのに動いている証拠です。こりゃすごい便利。次回はこれ以外のWindowsアプリを誰かから借りてきて、動作するか調べてみたいです。
2010/10/30
外付けHDD購入
iMacのバックアップ用に外付けHDDを購入しました。ネット通販で、1TB約1万円也。ほんとは容量アップといきたかったのですが、残念ながら前のが壊れたので置き換えです。
外付けHDDの変遷は以下のとおりです。
センチュリー
↓
ラシー
↓
バッファロー(500GB)
↓
ウェスタンデジタル(1TB)
耐久性はセンチュリーが一番長持ちだったと記憶していますが、この頃はMacの使用頻度そのものが低かったからな。あんまりあてにならないですね。ラシー辺りからほぼ毎日Macを触るようになってて、3年程度でダメになりました。バッファローにいたっては2年弱で壊れたんじゃないかな。一応中身のみ乗せ換えするため、捨てずにとっておきます。世間一般的にはHDDの寿命ってこなんもんかもしれませんが、正直言ってもう少し持って欲しいですね。その点、内蔵HDDは長持ちやなぁ。
unkさんのお気に入りのウェスタンデジタルですが、今のところとても静かで快調です。当たり前か。
外付けHDDの変遷は以下のとおりです。
センチュリー
↓
ラシー
↓
バッファロー(500GB)
↓
ウェスタンデジタル(1TB)
耐久性はセンチュリーが一番長持ちだったと記憶していますが、この頃はMacの使用頻度そのものが低かったからな。あんまりあてにならないですね。ラシー辺りからほぼ毎日Macを触るようになってて、3年程度でダメになりました。バッファローにいたっては2年弱で壊れたんじゃないかな。一応中身のみ乗せ換えするため、捨てずにとっておきます。世間一般的にはHDDの寿命ってこなんもんかもしれませんが、正直言ってもう少し持って欲しいですね。その点、内蔵HDDは長持ちやなぁ。
unkさんのお気に入りのウェスタンデジタルですが、今のところとても静かで快調です。当たり前か。
2010/05/05
新Macのプログラミング入門 その7
Mac、およびCocoaファンの皆様、なんとGWスペシャルということで2回連続して「新Macのプログラミング入門」をアップします。さすがにGWは趣味の時間がたくさんあって、ええなぁ。
今回は前回の続きみたいなもんですが、「ヒレガス本第3版」P223第14章のチャレンジ問題に挑戦します。
本書P223には、「NSApplicationは、NSApplicationDidResignActiveNotificationという通知をポストします。」とあります。同じページの14.8にはこのような通知を受けた場合のメソッド名の決まりが載ってます。すなわち、メソッドは次のようになると思われます。また、オブザーバは自動で登録されるとのことで、実装する必要はないと思われます。
ところが、このメソッドを”AppController.m”ファイルに実装して、”File's Owner”から”AppController”へのデリゲート接続を確認しても、うんともすんとも言わず上手く動作しません。そんな訳で、デベロッパドキュメントで、”NSApplicationDidResignActiveNotification”を調べてみると、似たような通知に”NSApplicationDidBecomeActiveNotification”つうのがみつかりました。私のつたない英語力でもresign=辞める、become=成る、となると”〜become〜”の方がチャレンジ問題、「アプリケーションがアクティブになった際、ビープ音を鳴らすようにしてください」には適していると思われます。
ということで、以下のメソッドを”AppController.m”ファイルに実装してみたところ、上手く動作するようになりました。
尚、ビープ音はシステム環境設定で設定したものなので、このままではこのアプリからは変更できません。
それにしても「NSApplicationは、NSApplicationDidResignActiveNotificationという通知をポストします。」の部分は誤植なのか、本当に読者を試しているのかよく判らないですね。「その2」でも本書の記載が怪しいのか、ひっかけなのかわからないという事件に遭遇しましたが、今回も真相は著者と訳者にしかわからないんでしょう。ちなみに、私は原著を確認するほどの強者ではありませんので、あしからず。
今回は前回の続きみたいなもんですが、「ヒレガス本第3版」P223第14章のチャレンジ問題に挑戦します。
本書P223には、「NSApplicationは、NSApplicationDidResignActiveNotificationという通知をポストします。」とあります。同じページの14.8にはこのような通知を受けた場合のメソッド名の決まりが載ってます。すなわち、メソッドは次のようになると思われます。また、オブザーバは自動で登録されるとのことで、実装する必要はないと思われます。
-(void)applicationResignActiveNotification(NSNotification *)aNotification {
beep();
}
beep();
}
ところが、このメソッドを”AppController.m”ファイルに実装して、”File's Owner”から”AppController”へのデリゲート接続を確認しても、うんともすんとも言わず上手く動作しません。そんな訳で、デベロッパドキュメントで、”NSApplicationDidResignActiveNotification”を調べてみると、似たような通知に”NSApplicationDidBecomeActiveNotification”つうのがみつかりました。私のつたない英語力でもresign=辞める、become=成る、となると”〜become〜”の方がチャレンジ問題、「アプリケーションがアクティブになった際、ビープ音を鳴らすようにしてください」には適していると思われます。
ということで、以下のメソッドを”AppController.m”ファイルに実装してみたところ、上手く動作するようになりました。
- (void)applicationDidBecomeActive:(NSNotification *)nc {
NSBeep();
}
NSBeep();
}
尚、ビープ音はシステム環境設定で設定したものなので、このままではこのアプリからは変更できません。
それにしても「NSApplicationは、NSApplicationDidResignActiveNotificationという通知をポストします。」の部分は誤植なのか、本当に読者を試しているのかよく判らないですね。「その2」でも本書の記載が怪しいのか、ひっかけなのかわからないという事件に遭遇しましたが、今回も真相は著者と訳者にしかわからないんでしょう。ちなみに、私は原著を確認するほどの強者ではありませんので、あしからず。
新Macのプログラミング入門 その6
今回の「新Macのプログラミング入門」も、例によって「ヒレガス本第3版」を素材に使っています。今回のコードはかなり無理矢理な感じで、自信ありません。わかっている人ならもっとシンプルに書けそうな気がしますが、とりあえず恥を忍んでアップしてみます。例によってMacのプログラミングにまったく興味の無い方、休日に詰め将棋や詰め碁を楽しんでいる”波平さん”みたいなものなので、そんな風にごらんください。
前回「その5」で紹介、および私なりに解説したのが、P216の第13章のチャレンジ問題。本書を次の第14章へと読み進めていくと、やっぱり”このままじゃいかんなぁ”という気になってきます。本書P217にもあるとおり、”Preference=環境設定”パネルの設定は既にオープンされているウィンドウには働かず、設定以降新たにオープンされるウィンドウにしか適用されません。チャレンジ問題で環境設定を初期値に戻すリセットボタンを設置した訳ですが、このリセットボタンも同様に、リセット後新たに開いたウィンドウは初期値に戻されてても、既にオープンしているウィンドウはリセットされずそのままの状態です。実際にこういう動作をするアプリって結構見かけますが、どうでしょう。そんでもって、これはまさしく第14章の”通知=Notificationの使用”が解決する内容ですので、私なりに修正してみました。
先ずリセットボタンが押されたという通知に名前を付けるため、”PrefernceController.h”ファイル内で、以下の赤文字のグローバル変数を新規に宣言します。宣言する場所は、”@interface”の直前にしています。変数なので、名前の付け方は適当ですよ。
続いて"PreferenceController.m"ファイルで、以下のとおりグローバル変数(赤字)を実装します。これまた実装する場所は、”@implementation PreferenceController”の直前にしました。
次に、”PreferenceController.m”の”-(IBAction)resetPreference:(id)sender”メソッドに、以下のように赤字の部分を追記します。このアクションメソッドは環境設定パネルのリセットボタンの動作内容を決めます。追加した部分は、リセットボタンが押されたことを既にオープンしている複数のウィンドウにポスト(公表)するものです。ここでバックグラウンドカラーの初期値を得るのため、あの変数この変数と試してみたのですが上手くいかず、結局一度リセットさせた”colorWell”から初期値を得ることにしました。どうも腑に落ちない部分です。
さらに、リセットボタンが押されたという通知のポストを監視するオブザーバを、各ウィンドウの動作内容を定めている”MyDocumnt.m”ファイル内の”- (id)init”メソッドに追加しました。”BNRColorResetNotification”という名前の通知がポストされたら、”@selector()”で指示された”resetColorChange:”メソッドが呼び出されるしくみです。
最後に”MyDocument.m”ファイル内に、”resetColorChange:”メソッドを実装すればOKです。
なんとか第13章のチャレンジ問題を、私なりに修正した次第です。まっ、こういう時間と労力のかかる趣味も、GWならではとういうことでご勘弁ください。
前回「その5」で紹介、および私なりに解説したのが、P216の第13章のチャレンジ問題。本書を次の第14章へと読み進めていくと、やっぱり”このままじゃいかんなぁ”という気になってきます。本書P217にもあるとおり、”Preference=環境設定”パネルの設定は既にオープンされているウィンドウには働かず、設定以降新たにオープンされるウィンドウにしか適用されません。チャレンジ問題で環境設定を初期値に戻すリセットボタンを設置した訳ですが、このリセットボタンも同様に、リセット後新たに開いたウィンドウは初期値に戻されてても、既にオープンしているウィンドウはリセットされずそのままの状態です。実際にこういう動作をするアプリって結構見かけますが、どうでしょう。そんでもって、これはまさしく第14章の”通知=Notificationの使用”が解決する内容ですので、私なりに修正してみました。
先ずリセットボタンが押されたという通知に名前を付けるため、”PrefernceController.h”ファイル内で、以下の赤文字のグローバル変数を新規に宣言します。宣言する場所は、”@interface”の直前にしています。変数なので、名前の付け方は適当ですよ。
extern NSString * const BNRTableBgColorKey;
extern NSString * const BNREmptyDocKey;
extern NSString * const BNRColorChangedNotification;
extern NSString * const BNRColorResetNotification;
extern NSString * const BNREmptyDocKey;
extern NSString * const BNRColorChangedNotification;
extern NSString * const BNRColorResetNotification;
続いて"PreferenceController.m"ファイルで、以下のとおりグローバル変数(赤字)を実装します。これまた実装する場所は、”@implementation PreferenceController”の直前にしました。
NSString * const BNRTableBgColorKey = @"Table Background Color";
NSString * const BNREmptyDocKey = @"Empty Document Flag";
NSString * const BNRColorChangedNotification = @"BNRColorChanged";
NSString * const BNRColorResetNotification = @"BNRColorReset";
NSString * const BNREmptyDocKey = @"Empty Document Flag";
NSString * const BNRColorChangedNotification = @"BNRColorChanged";
NSString * const BNRColorResetNotification = @"BNRColorReset";
次に、”PreferenceController.m”の”-(IBAction)resetPreference:(id)sender”メソッドに、以下のように赤字の部分を追記します。このアクションメソッドは環境設定パネルのリセットボタンの動作内容を決めます。追加した部分は、リセットボタンが押されたことを既にオープンしている複数のウィンドウにポスト(公表)するものです。ここでバックグラウンドカラーの初期値を得るのため、あの変数この変数と試してみたのですが上手くいかず、結局一度リセットさせた”colorWell”から初期値を得ることにしました。どうも腑に落ちない部分です。
- (IBAction)resetPreference:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
NSColor *color = [colorWell color];
NSData *colorAsData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorAsData forKey:@"defaultColor"];
NSDictionary *defaultValues = [NSDictionary dictionaryWithObject:color forKey:@"defaultColor"];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:BNRColorResetNotification object:self userInfo:defaultValues];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
NSColor *color = [colorWell color];
NSData *colorAsData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorAsData forKey:@"defaultColor"];
NSDictionary *defaultValues = [NSDictionary dictionaryWithObject:color forKey:@"defaultColor"];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:BNRColorResetNotification object:self userInfo:defaultValues];
}
さらに、リセットボタンが押されたという通知のポストを監視するオブザーバを、各ウィンドウの動作内容を定めている”MyDocumnt.m”ファイル内の”- (id)init”メソッドに追加しました。”BNRColorResetNotification”という名前の通知がポストされたら、”@selector()”で指示された”resetColorChange:”メソッドが呼び出されるしくみです。
NSNotificationCenter *nc2 = [NSNotificationCenter defaultCenter];
[nc2 addObserver:self
selector:@selector(resetColorChange:) name:BNRColorResetNotification object:nil];
[nc2 addObserver:self
selector:@selector(resetColorChange:) name:BNRColorResetNotification object:nil];
最後に”MyDocument.m”ファイル内に、”resetColorChange:”メソッドを実装すればOKです。
- (void)resetColorChange:(NSNotification *)note {
NSColor *color = [[note userInfo] objectForKey:@"defaultColor"];
[tableView setBackgroundColor:color];
NSLog(@"reset color is %d",color);
}
NSColor *color = [[note userInfo] objectForKey:@"defaultColor"];
[tableView setBackgroundColor:color];
NSLog(@"reset color is %d",color);
}
なんとか第13章のチャレンジ問題を、私なりに修正した次第です。まっ、こういう時間と労力のかかる趣味も、GWならではとういうことでご勘弁ください。
2010/04/11
新Macのプログラミング入門 その5
今回の題材も「ヒレガス本」第3版です。P216第13章ユーザーデフォルトのチャレンジ問題に挑戦してみます。
”Preference.h”ファイルに以下の赤文字のアウトレット"resetPreference"と、アクションメソッド'resetPreference:"を追加して保存します。この"resetPreference"は、"Preferannce=環境設定"パネルに設置することで、ユーザーが変更した環境設定を、アプリ起動時の初期値に戻すリセットボタンになります。また"resetPreference:"はこのリセットボタンが押された時に呼び出され、初期値に戻すメソッドになります。
ヘッダファイルの編集が終わると、実際にパネルにリセットボタンを設定します。
”Interface Builder”で"Preference.xib"ファイルを起動して、左図の感じでリセットボタンを新たに設定します。その後”File's Owner”とリセットボタン間で、お互いターゲットとしてボタンを、アクションメソッドとして"resetPreference:"を接続します。
次に"Preference.m"ファイルにアクションメソッド'resetPreference:"を実装します。P209に、アプリ起動後にユーザーが変更した環境設定は、"removeObjectForKey:"メソッドで初期値に戻す事ができると記載してありますので、そのまま使ってみます。
最後の赤文字の2行は、ユーザーに設定値が元に戻った事を伝えるために、環境設定パネルのカラーウェルの表示色と、チェックボックスのチェック状態をアプリ起動時の初期値に戻しています。ユーザーフレンドリーのため「環境設定ウィンドウを更新し、新しいデフォルトが反映されるように」するためのコーディング(処置)です。
今回のチャレンジ問題はボタンとメソッドをひとつづつ設定するだけやったし、ヒントが比較的判りやすく記載されていたので、簡単でしたね。
例によってMacを使っていない方、Macのプログラミングにまったく興味の無い方、「ヒレガス本」を持っていない方にはなんのこっちゃ全然わからないでしょうが、ご勘弁を。
”Preference.h”ファイルに以下の赤文字のアウトレット"resetPreference"と、アクションメソッド'resetPreference:"を追加して保存します。この"resetPreference"は、"Preferannce=環境設定"パネルに設置することで、ユーザーが変更した環境設定を、アプリ起動時の初期値に戻すリセットボタンになります。また"resetPreference:"はこのリセットボタンが押された時に呼び出され、初期値に戻すメソッドになります。
@interface PreferenceController : NSWindowController {
IBOutlet NSColorWell *colorWell;
IBOutlet NSButton *checkbox;
IBOutlet NSButton *resetPreference;
}
- (IBAction)changeBackgroundColor:(id)sender;
- (IBAction)changeNewEmptyDoc:(id)sender;
- (NSColor *)tableBgColor;
- (BOOL)emptyDoc;
- (IBAction)resetPreference:(id)sender;
@end
IBOutlet NSColorWell *colorWell;
IBOutlet NSButton *checkbox;
IBOutlet NSButton *resetPreference;
}
- (IBAction)changeBackgroundColor:(id)sender;
- (IBAction)changeNewEmptyDoc:(id)sender;
- (NSColor *)tableBgColor;
- (BOOL)emptyDoc;
- (IBAction)resetPreference:(id)sender;
@end
ヘッダファイルの編集が終わると、実際にパネルにリセットボタンを設定します。
”Interface Builder”で"Preference.xib"ファイルを起動して、左図の感じでリセットボタンを新たに設定します。その後”File's Owner”とリセットボタン間で、お互いターゲットとしてボタンを、アクションメソッドとして"resetPreference:"を接続します。
次に"Preference.m"ファイルにアクションメソッド'resetPreference:"を実装します。P209に、アプリ起動後にユーザーが変更した環境設定は、"removeObjectForKey:"メソッドで初期値に戻す事ができると記載してありますので、そのまま使ってみます。
最後の赤文字の2行は、ユーザーに設定値が元に戻った事を伝えるために、環境設定パネルのカラーウェルの表示色と、チェックボックスのチェック状態をアプリ起動時の初期値に戻しています。ユーザーフレンドリーのため「環境設定ウィンドウを更新し、新しいデフォルトが反映されるように」するためのコーディング(処置)です。
- (IBAction)resetPreference:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
}
今回のチャレンジ問題はボタンとメソッドをひとつづつ設定するだけやったし、ヒントが比較的判りやすく記載されていたので、簡単でしたね。
例によってMacを使っていない方、Macのプログラミングにまったく興味の無い方、「ヒレガス本」を持っていない方にはなんのこっちゃ全然わからないでしょうが、ご勘弁を。
2010/03/21
新Macのプログラミング入門 その4
「新Macのプログラミング入門」シリーズは、「ヒレガス本第3版」のチャレンジ問題を中心に扱っております。そんな訳で今回は第8章、P141のチャレンジ1を題材にします。「ヒレガス本」を持っていなければまったく面白くないですが、その辺はご容赦を。
今回のチャレンジ問題は、テーブルのソート(並び替え)を入力した文字数の大小でやりなさいというものです。結果、ソート対象のテーブルを選択して、”InterfaceBuilder”で”Sort Key”を図の赤い囲みのようにピリオドを使ったキーパス形式に代えるだけでOK。判ってしまえばどうってことないのですが、これでも試行錯誤の末にたどり着いたのですよ。キーパスに関しては、第7章P125を参考にしましょう。
この第8章は、大雑把に言えば”NSArrayController”を使うと、”TableView”のデータ挿入や削除、修正等が簡単に実装できるようになりますよという内容です。P141のチャレンジ2の問題では、”NSArrayController”とバインドを使わないでやってみましょうというものですが、これに関しては、2/6アップの「その1」で、今回とよく似たテーブルの表示を扱っています。こっちは第6章のデーターソースを用いた実装を参考にしています。
実際にやってみると、”NSArrayController”とバインドを使ったこちら(第8章)の実装方法が、コードを書く手間が少なくて簡単だと思いますが、iPhone用アプリでも使えるのかいな。
今回のチャレンジ問題は、テーブルのソート(並び替え)を入力した文字数の大小でやりなさいというものです。結果、ソート対象のテーブルを選択して、”InterfaceBuilder”で”Sort Key”を図の赤い囲みのようにピリオドを使ったキーパス形式に代えるだけでOK。判ってしまえばどうってことないのですが、これでも試行錯誤の末にたどり着いたのですよ。キーパスに関しては、第7章P125を参考にしましょう。
この第8章は、大雑把に言えば”NSArrayController”を使うと、”TableView”のデータ挿入や削除、修正等が簡単に実装できるようになりますよという内容です。P141のチャレンジ2の問題では、”NSArrayController”とバインドを使わないでやってみましょうというものですが、これに関しては、2/6アップの「その1」で、今回とよく似たテーブルの表示を扱っています。こっちは第6章のデーターソースを用いた実装を参考にしています。
実際にやってみると、”NSArrayController”とバインドを使ったこちら(第8章)の実装方法が、コードを書く手間が少なくて簡単だと思いますが、iPhone用アプリでも使えるのかいな。
2010/03/14
新Macのプログラミング入門 その3
今回の題材も「ヒレガス本」からです。第12章、P204のチャレンジ問題から派生させ、オリジナルな”Aboutパネル”の作成をやってみました。
チャレンジ問題自体は第12章の”Preferenceパネル”を作る方法をトレースすることで解けるのですが、出来上がったのっぺらぼうの”Aboutパネル”を肉付けして、見栄えをよくする方法でつまずいてしまいます。
元々標準で用意されている”Aboutパネル”を解析してみたところ、”orderFrontStandardAboutPanel:”というメソッドが使用されています。そこでこれから標準パネルの構造を調べて流用する方法を試みたのですが、よく判らず終い。結局、標準で用意されている”Aboutパネル”そのものをカスタマイズする方法を調査してみました。
以下のメソッドを”AppController.h”で宣言して、”AppController.m”で実装します。ポイントとなるのは、”orderFrontStandardAboutPanelWithOptions"というメソッドです。
”InterfaceBuilder でメインメニューの”About NewApplication”と”AppController”オブジェクトを接続して以下の”showAboutPanel:”メソッドを選択、接続します。
メソッドの内容ですが、VOXYの写真は”images-1”というファイル名で予め”resources”に保存しておきます。今回はpng形式を使いましたが、jpgやgif形式なんかでもいいんでないでしょうか。でも普通はアイコンのイメージを使うんでしょうね。イメージ以外の部分については、変数optionsのキーとの関係と、上記パネル写真での文字の表示位置をみて、なにがどうなっているか確認してください。
また、”Aboutパネル”の下半分のスクロールする部分の記述については、今回はやっていませんが、予め用意されている”cridits.rtf”ファイルを編集すると内容の書き換えが可能です。
- (IBAction)showAboutPanel:(id)sender {
NSDictionary *options;
NSImage *img;
img = [NSImage imageNamed: @"images-1"];
options = [NSDictionary dictionaryWithObjectsAndKeys:
@"1.0", @"Version",
@"Super App", @"ApplicationName",
img, @"ApplicationIcon",
@"Copyright 2009-2010, YanSoftware", @"Copyright",
@"Super App v1.0", @"ApplicationVersion",
nil];
[[NSApplication sharedApplication] orderFrontStandardAboutPanelWithOptions:options];
}
NSDictionary *options;
NSImage *img;
img = [NSImage imageNamed: @"images-1"];
options = [NSDictionary dictionaryWithObjectsAndKeys:
@"1.0", @"Version",
@"Super App", @"ApplicationName",
img, @"ApplicationIcon",
@"Copyright 2009-2010, YanSoftware", @"Copyright",
@"Super App v1.0", @"ApplicationVersion",
nil];
[[NSApplication sharedApplication] orderFrontStandardAboutPanelWithOptions:options];
}
そんな訳で、「ヒレガス本」P204のチャレンジ問題からかなり逸脱してしまいましたが、どうでしょうか。