自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。

久しぶりのブログ更新です。Retina ディスプレイ対応の iMac を待っていたのですが、当分なさそうなので、

15インチ MacBook Pro Retina ディスプレイモデル
製品番号: Z0PU
ハードウェア
2.3GHzクアッドコアIntel Core i7(Turbo Boost使用時最大3.5GHz)
16GB 1,600MHz DDR3L SDRAM
512GBフラッシュストレージ(PCIeベース)
バックライトキーボード (JIS) + 製品マニュアル(日本語)

上記、15インチ MacBook Pro Retina を購入しました。ディスプレイが眩しすぎて、目が痛いです。輝度を調整したり、アプリを App Store で購入してみたのですが、慣れるしかないようです。

また、OS も OS X 10.9 Mavericks になったので、私が普段利用している自作アプリを対応させました。 個人的にビルドし直したり、公開していないものもありますが!

  • 動作に問題がない自作アプリ
YKCalendar
StripToString
HatenaDiaryAssistance
PocketLauncher
YKClock
DateMaker
IndexView2
ConvertPTC
Search2chBBS
Wordbook2
YKBookmarks
iYKRSSMac
YKeyes
Sakura

  • 2chScriptMenu

ruby のバージョンが

~ $ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

に変更になったので、正しく動作しません。それでソースの一部を修正しました。現在、問題なく動作しています。

  • PCG-LinkMac

Apple 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突して USB・RS232C シリアルポート変換ケーブルを抜くとカーネルパニックが起きます。
対処方法は、下に別記載してあります。

  • AnimalCrossingDesign

Retina で開くと画像が正しく表示されません。Finder 上で AnimalCrossingDesign.app を右クリック( CTRL + 左クリック ) でメニューを表示し、’情報を見る’ を選択、’低解像度で開く’ に✔️を入れてください。これで再起動すれば、正しく表示されます。

以上の通りです。使っている人もいないと思うので、最新版をそれぞれ公開すべきか悩んでいます。

PCG-LinkMac 自体は、何の問題もなく動作します。ところが USB・RS232C シリアルポート変換ケーブルを抜くとカーネルパニックが起きます
Apple 純正の FTDI ドライバとメーカーの FTDI ドライバが衝突しているのが原因のようです。
それでメーカー製 FTDI ドライバをターミナル上で次のコマンドを使って削除してください。

~ $ cd /System/Library/Extensions/
/System/Library/Extensions $ sudo rm -R FTDIUSBSerialDriver.kext
Password:
/System/Library/Extensions $ sudo touch .
/System/Library/Extensions $

Apple 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。

~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls
AppleUSBCDC.kext		AppleUSBMergeNub.kext
AppleUSBCDCACMControl.kext	AppleUSBOHCI.kext
AppleUSBCDCACMData.kext		AppleUSBOpticalMouse.kext
AppleUSBCDCDMM.kext		AppleUSBUHCI.kext
AppleUSBCDCECMControl.kext	AppleUSBVideoSupport.kext
AppleUSBCDCECMData.kext		AppleUSBXHCI.kext
AppleUSBCDCEEM.kext		IOUSBCompositeDriver.kext
AppleUSBCDCWCM.kext		IOUSBHIDDriver.kext
AppleUSBEHCI.kext		IOUSBHIDDriverSafeBoot.kext
AppleUSBFTDI.kext		IOUSBLib.bundle
AppleUSBHub.kext		IOUSBUserClient.kext
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ 

後、コマンドラインツールをインストールするには、ターミナル上で

~$ xcode-select --install
~$ sudo xcodebuild -license

を実行するとインストールできます。

Java のインストールは Java 6 のアプリを起動すると Java 6 パッケージをインストールするか尋ねてきます。また Java 7 アプリを起動すると Java 7 パッケージをインストールすることができます。

以前から試してみたかった Sprite Kit に挑戦してみました。衝突処理を物理演算として処理するのには驚きました。

最初に

Sprite Kit Programming Guide: About Sprite Kit
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013043

の Jumping into Sprite Kit

Sprite Kit Programming Guide: Jumping into Sprite Kit
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40013043-CH2-SW1
▼Jumping into Sprite Kit

を試して基本を理解しました。

サンプル3つ

code:Explained Adventure: Introduction
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140
SpriteKit Physics Collisions
https://developer.apple.com/library/mac/samplecode/SpriteKit_Physics_Collisions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013390
Sprite Tour
https://developer.apple.com/library/mac/samplecode/Sprite_Tour/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013389

も参考になります。特に

code:Explained Adventure: Introduction
https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html#//apple_ref/doc/uid/TP40013140

は、本格的なアドベンチャーゲームです。ソースの解説も上記 URL にあります。

Xcode での Particle Emitter 作成方法は

Particle Emitter Editor Guide: About the Particle Emitter Editor
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-particle_emitter/Introduction/Introduction.html

が参考になります。

SKEffectNode、CIFilter の使い方は

Sprite Kit Programming Guide: Working with Other Node Types
https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/OtherNodeClasses/OtherNodeClasses.html#//apple_ref/doc/uid/TP40013043-CH10-SW20
▼Working with Other Node Types
▼Effect Nodes Apply Special Effects to Their Descendants
Core Image Filter Reference
https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html

が参考になります。CIFilter を NSLog で直接表示すると

- (CIFilter *)spotLightFilter
{
CIFilter *filter = [CIFilter filterWithName:@"CISpotLight"]; // 3
[filter setDefaults];
NSLog(@"%@", [filter attributes]);
[filter setValue:[NSNumber numberWithFloat:10.00] forKey:@"inputBrightness"];
[filter setValue:[CIVector vectorWithX:150 Y:150 Z:300] forKey:@"inputLightPosition"];
//    [filter setValue:[CIVector vectorWithX:0 Y:0 Z:0] forKey:@"inputLightPointsAt"];
return filter;
}

2013-12-08 21:18:50.725 SpriteKitGuide[14458:303] {
CIAttributeDescription = "Applies a directional spotlight effect to an image.";
CIAttributeFilterCategories =     (
CICategoryStylize,
CICategoryVideo,
CICategoryStillImage,
CICategoryBuiltIn
);
CIAttributeFilterDisplayName = "Spot Light";
CIAttributeFilterName = CISpotLight;
CIAttributeReferenceDocumentation = "http://developer.apple.com/cgi-bin/apple_ref.cgi?apple_ref=//apple_ref/doc/filter/ci/CISpotLight";
inputBrightness =     {
CIAttributeClass = NSNumber;
CIAttributeDefault = 3;
CIAttributeDescription = "The brightness of the spotlight.";
CIAttributeDisplayName = Brightness;
CIAttributeIdentity = 1;
CIAttributeMin = 0;
CIAttributeSliderMax = 10;
CIAttributeSliderMin = 0;
CIAttributeType = CIAttributeTypeDistance;
CIUIParameterSet = CIUISetBasic;
};
.
.
.
inputImage =     {
CIAttributeClass = CIImage;
CIAttributeDescription = "The image to use as an input image. For filters that also use a background image, this is the foreground image.";
CIAttributeDisplayName = Image;
CIUIParameterSet = CIUISetBasic;
};
inputLightPointsAt =     {
CIAttributeClass = CIVector;
CIAttributeDefault = "[200 200 0]";
CIAttributeDescription = "The x and y position that the spotlight points at.";
CIAttributeDisplayName = "Light Points At";
CIAttributeType = CIAttributeTypePosition3;
CIUIParameterSet = CIUISetBasic;
};
inputLightPosition =     {
CIAttributeClass = CIVector;
CIAttributeDefault = "[400 600 150]";
CIAttributeDescription = "The x and y position of the spotlight.";
CIAttributeDisplayName = "Light Position";
CIAttributeType = CIAttributeTypePosition3;
CIUIParameterSet = CIUISetBasic;
};
outputImage =     {
CIAttributeClass = CIImage;
};
}

と詳しい解説が見れます。

SpriteKit を学んだ集大成として自作アプリ Neko を作成してみました。実行画面は

です。

Neko を下記 URL で公開します。ソースは要望があれば公開します。

Sprite Kit を使ったアプリケーション。
Neko version 1.0
http://kyoshiaki.sakura.ne.jp/osx/Sample/Neko.zip

注意) “Neko は開発元が未確認のため開けません” と表示される場合、Finder 上で Neko を右クリック (CTRL + 左クリック) し、表示されたメニューから ’開く’ を選択してください。ダイアログが表示されるので、’開く’ ボタンをクリックすれば、アプリケーションが実行できるはずです。