Mac でプログラミングを始めるために必要な書籍とドキュメント

Mac でプログラミングするには、macOS の /アプリケーション/App Store.app からダウンロードできる Xcode アプリの Help メニューが起点になりますが、Apple Developer Documentation、App Store Connect ヘルプ も参考になります。

2020/01/03(Fri) 17:06:05
Xcode Help
https://help.apple.com/xcode/mac/current/
2020/01/24(Fri) 17:42:03
Apple Developer Documentation
https://developer.apple.com/documentation/
2020/01/03(Fri) 17:06:03
App Store Connect ヘルプ
https://help.apple.com/app-store-connect/

プログラミング言語 Swift については、macOS の /アプリケーション/ブック.app で無料で入手できる

2020/01/03(Fri) 17:05:58
The Swift Programming Language
Swift 5.1 Edition
https://books.apple.com/jp/book/the-swift-programming-language-swift-5-1/id881256329

は必須だと思います。新しいドキュメントが公開されると古いドキュメントのリンクはブックストアでは表示されなくなります。一度ダウンロードしておけば、再度ダウンロードできます。

/アプリケーション/ブック.app のツールバーから「ブックストア」を選択し、検索フィールドで AppleApple Education で検索すれば、色々書籍が出てくるので参考になります。

Xcode のアカウント移行

最新版は公開していないんですが、ウインドウに並べられた各々ボタンにアプリケーションやフォルダを登録して実行できる拙作 PocketLauncher を使用しています。PocketLauncher のボタンにホームフォルダを登録して実行すると ‘アプリケーション “PocketLauncher” に “ホームフォルダ”を開くアクセス権がありません。’ と表示されます。以前、ターミナルで間違ってアクセス権を変更したのが原因かと思い、再度アクセス権を変更し直したら macOS Catalina 起動しなくなってしまいました。アクセス権がないという警告は、回避方法はわからないのですが、正しい動作のようです。

ちょうど、随分前に Boot Camp のインストールで苦労したため (時間がなくプログに顛末を書けなかったのですが)、外部 HDD にインストールした macOS Catalina がありました。

2019/11/06(Wed) 14:06:09
Amazon | 本, ファッション, 家電から食品まで | アマゾン
https://www.amazon.co.jp/
ロジクール アドバンスド ワイヤレスマウス MX Master 3 MX2200sMG Unifying Bluetooth 高速スクロールホイール 充電式 FLOW 7ボタン windows Mac iPad OS 対応 無線 マウス MX2200 ミッドグレイ 国内正規品 2年間無償保証
¥ 13,500
135pt (1%)
在庫あり。
数量: 1
販売: Amazon Japan G.K.

iMac 5K で上記ロジクール アドバンスド ワイヤレスマウス MX Master 3 を使用しているのが原因か HDD から起動するとあまりの動作の遅さにびっくりしてしまいました。

2019/11/26(Tue) 23:41:37
Mac専門店 秋葉館.com|AppleMac本体・周辺機器・パーツ
https://www.akibakan.com/
DDR4 SO-DIMM 2666MHz 16GB(8GBx2) [260-2666-8192x2-CR]		¥11,550
商品合計 ¥11,550
送料 ¥550
合計 ¥12,100
(内消費税 ¥1,100)

それで上記メモリ 16GB を増設して 24GB にし、やっと何とか使えるようになりました。どうせならと下記 1TB の外部 SSD も購入してみました。

2019/12/08(Sun) 21:43:06
Amazon | 本, ファッション, 家電から食品まで | アマゾン
https://www.amazon.co.jp/ref=nav_logo
BUFFALO ポータブルSSD 日本製 PS4(メーカー動作確認済) USB3.1(Gen1) 対応 1TB SSD-PG1.0U3-B/NL 耐衝撃・コネクター保護機構
¥ 9,680
97pt (1%)
在庫あり。
数量: 1
販売: Amazon Japan G.K.
注文内容
商品の小計:	¥9,680
配送料・手数料:	¥0
合計:	¥9,680
Amazon ポイント:	-¥51
ご請求額:	¥9,629

内蔵ディスクのボリューム Macintosh – Data を削除し、ボリューム Macintosh HD を消去してから、ボリューム Macintosh HD と外部 SSDmacOS Catalina をインストールしました。

macOS Catalina のインストーラアプリ入手方法は、外部 HDD から macOS Catalina の最新版で起動し、App Store から macOS Catalina の入手ボタンをクリックするとアップデートが始まりますが、最新版なのでアップデートが終了した後、インストーラをダウンロードするか尋ねてくるのでダウンロードを選択すれば入手できます。

Xcode のアカウント移行

前置きが長くなってしまいましたが、その時に Xcode の developer accounts 環境をコピーしたので、備考録のために書いておきます。

以前は、古い Mac の developer accounts を新しい MacXcode にコピーするには、キーチェーンアクセスによる複雑な処理が必要でしたが、下記 URL のように Xcode から developer accounts を export して、新しい環境の Xcode で Import するだけです。ちょっとしたコツとして Xcode を再起動する必要があります。

2020/01/03(Fri) 17:06:14
Export signing certificates and provisioning profiles - Xcode Help
https://help.apple.com/xcode/mac/current/#/dev8a2822e0b
▼Maintain signing assets
Export developer accounts

順を追って説明したいと思います。キーチェーンアクセスの操作は必要ないのですが、Xcode で import するとキーチェーンアクセスの中身がどう変化するのか確認するため表示しています。

■ 古い Mac での操作

古い Mac の /アプリケーション/ユーティリティ/キーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した状態

図 1) 鍵

図 2) 証明書

古い Mac の /アプリケーション/Xcode.app を起動し、メニュー > Xcode > Preferences… を選択してから、表示されたウインドウの Accounts タブをクリックします。Export したいアカウント(Apple ID) を選択した後、左下隅にあるギアアイコンをクリックして、下図のように メニュー > Export Apple ID and Code Signing Assets… を選択します。

図 3) Export Developer Accounts..

下図のようなダイアログが表示されるので、ファイル名 (下記例、Account ) とパスワードを入力し、保存先 (下記例、Desktop) を指定してから Save ボタンをクリックして保存します。

図 4) ファイル名とパスワードを入力

下図のようにファイルに保存された developer profile の情報がダイアログで表示されます。

図 5) developer profile の情報

デスクトップに保存した developer profile を含むファイル Account.develperprofile が表示されます。

図 6) Account.develperprofile

■ 新しい Mac での操作

新しい Mac のキーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した初期状態

図 7) 鍵

図 8) 証明書

下図は、新しい Mac の /アプリケーション/Xcode.app を起動し、メニュー > Xcode > Preferences… を選択してから表示されたウインドウの Accounts タブをクリックした空っぽの状態です。

図 9) Accounts タブ

下図のように、左下隅にあるギアアイコンをクリックして、 メニュー > Import Apple ID and Code Signing Assets… を選択します。

図 10) Import Developer Accounts…

古い MacXcode で Export した developer profile 含むファイル Account.develperprofile を下図のように選択して Open をクリックします。

図 11) Account.develperprofile

パスワードを入力して、OK ボタンをクリックすると下図のようにファイルに Import された developer profile の情報がダイアログで表示されます。

図 12) developer profile

この段階だと下図のように Team にメンバーが表示されず、Download Manual Profiles、Manage Certiticates… ボタンも有効になっていません。

図 13) Download Manual Profiles、Manage Certiticates… ボタン

そこで Xcode を一旦終了して、再度実行してください。メニュー > Xcode > Preferences… を選択してから Accounts タブをクリックすると下図のように “Your session has expired. Please log in” という警告が出るので Sign In Again… ボタンをクリックしてログインしてください。

図 14) Your session has expired. Please log in.

下図のように Team にメンバーが表示され、Download Manual Profiles、Manage Certiticates… ボタンも有効になります。これで developer accounts の移行に成功しました。

図 15) Xcode のアカウント移行に成功

新しい Mac の /アプリケーション/ユーティリティ/キーチェーンアクセス.app を起動して、「キーチェーン」リストで「ログイン」を選択し、「分類」で ‘鍵’ と ‘証明書’ を表示した状態です。

図 16) 鍵

図 17) 証明書

上図で 図 2) で表示されている Apple Worldwide Develpoer Relations Certification Authority、Developer ID Certification Authority 証明書が表示されていませんが、図 15) の Download Manual Profiles ボタンをクリックすればダウンロードされると思います。

OS X 10.9 Mavericks で Radiko 録音する方法。

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。
http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748

上記 URL も参考にしてください。

まず最初に OS X 10.9 Mavericks で動作するように修正した

2ch Script version 0.4
http://kyoshiaki.sakura.ne.jp/osx/index.html

を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。

最近、マンネリ気味なので新しいことに挑戦してみようと海外のサイト

Raspberry Pi(ラズベリーパイ)
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad

から Raspberry Pi を直接購入してみました。詳しい内容はまた次回に紹介したいと思います。現在、Radiko 録音装置として使っています。

Raspberry Pi 到着まで、12日かかりました。その間に Raspberry Pi の情報をウェブ上で収集していたのですが、Radiko の録音ツールとして利用している

ピコピコ日記: RaspberryPiでRadikoを録音する
http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html

上記サイトを発見しました。Raspberry Pi が到着するまで暇なので OS X で試してみることにしました。ただし、Radiko を録音するスクリプト

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

を使うことにしました。

まず、簡易Radiko録音スクリプトを実行できるように必要なプログラムをインストールする必要があります、

プログラムのインストールに

Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう!
http://brew.sh/index_ja.html

を利用することにしました。ターミナル上で次のコマンド

~ $ brew update
~ $ brew install wget rtmpdump swftools libxml2 ffmpeg

を使って必要なプログラムをインストールします。

次に

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

上記 URL の左部分 ‘Download Gist’ ボタンをクリックしてダウンロードします。

ダウンロードされた gistxxxxxxx.tar.gz ファイルを Finder 上でダブルクリックして展開します。作成されたフォルダの中のファイル rec_radiko.sh をホームフォルダに移動します。 rec_radiko.sh ファイルを移動したら、作成されたフォルダはゴミ箱に捨ててください。

ターミナル上でファイル rec_radiko.sh に実行属性をつけます。

~ $ chmod +x rec_radiko.sh 

次に

radiko.jp
http://radiko.jp/

Safari でアクセスして地域と放送局を確認して下さい。(Radiko は IP アドレスを基準に地域を判定します。)

私が

radikoの番組表XML :宗子時空
http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/

を参考にしたエリア情報取得シェルスクリプト radiko_curl_area.sh、radiko_wget_area.sh と指定したフォルダ内の最新のファイル最大数を設定する Python スクリプト delete.py (delete.py は危険なプログラムです。むやみに実行しないでください。) を下記 URL

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

で公開します。上の URL からダウンロードしたファイル radiko_utility.zip を Finder 上で展開し、ファイル radiko_curl_area.sh、radiko_wget_area.sh、 delete.py をそれぞれホームフォルダに移動してください。作成されたフォルダはゴミ箱に捨ててください。

~ $ ./radiko_curl_area.sh 

上記コマンドをターミナル上で実行してください。地域別の放送局情報 XML都道府県別に JP1.xml ~ JP47.xml という名前のファイルでダウンロードされます。

ここで

radiko.jp
http://radiko.jp/

にアクセスした時に表示される地域がどの XML のファイルか確認します。

例えば、放送局の地域が東京ならコマンド grep で “TBSラジオ” で検索します。

~ $ grep -e "TBSラジオ" *.xml
JP10.xml:    <name>TBSラジオ</name>
JP11.xml:    <name>TBSラジオ</name>
JP12.xml:    <name>TBSラジオ</name>
JP13.xml:    <name>TBSラジオ</name>
JP14.xml:    <name>TBSラジオ</name>
JP8.xml:    <name>TBSラジオ</name>
JP9.xml:    <name>TBSラジオ</name>
~ $

JP8.xml ~ JP14.xml まで絞り込めました。

Finder 上で JP13.xml ファイルをダブルクリックすると Xcode が立ち上がります。

================ JP13.xml =======================
<?xml version="1.0" encoding="UTF-8" ?>
<stations area_id="JP13" area_name="TOKYO JAPAN">
<station>
<id>TBS</id>
<name>TBSラジオ</name>
<ascii_name>TBS RADIO</ascii_name>
.
.
</station>
<station>
<id>QRR</id>
<name>文化放送</name>
<ascii_name>JOQR  BUNKA HOSO</ascii_name>
<href>http://www.joqr.co.jp/</href>    <name>TBSラジオ</name>
.
.
================ JP13.xml =======================

2行目の area_name=”TOKYO JAPAN” より、JP13.xml が東京の放送局情報 XMLだとわかります。

rec_radiko.sh の引数は

rec_radiko.sh <channel_name_id> <minutes> <outputdir> [prefix]

です。引数の詳細は

channel_name_id: 放送局の station id
minutes: 何分録音するか
outputdir: 出力するディレクトリ
[prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id
が使われます。
例)
~ $ ./rec_radiko.sh TBS 1
TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル
を MP3 形式で保存します。
~ $ ./rec_radiko.sh TBS 120 radio
TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに
名前の先頭が TBS のファイルを MP3 形式で保存します。

です。

自分の地域の放送局を確認するには、放送局情報 XML ファイル、東京の場合は JP13.xml

<station></station>

で囲まれた部分がそれぞれの放送局の情報です。例えば

 <station>
<id>TBS</id>
<name>TBSラジオ</name>
<ascii_name>TBS RADIO</ascii_name>

の部分

<id>TBS</id>

TBSラジオの channel_name_id です。

<station>
<id>QRR</id>
<name>文化放送</name>
<ascii_name>JOQR  BUNKA HOSO</ascii_name>

文化放送の場合は channel_name_id は QRR です。

~ $ ./rec_radiko.sh QRR 120 radio 

文化放送を 120分録音して radio ディレクトリに名前の先頭が QRR のファイルを MP3 形式で保存します。

実際に正しく動作するか、自分の地域の放送局 station_name_id で1分間録音を試してみてください。(ここでは文化放送を指定しています。)

~ $ ./rec_radiko.sh QRR 1 

カレントディレクトリ(この場合、ホームフォルダ) に、ファイル QRR_2014-XX-XX-XX_XX.mp3 が作成されているはずです。

Finder 上で ファイル QRR_2014-XX-XX-XX_XX.mp3 をダブルクリックすると iTunes に登録されてしまうので ‘/アプリケーション’ フォルダの QuickTime Player にドラッグ・ドロップして再生してください。

これで Radiko の録音に成功しました。

ただし、

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset),
LANG = "ja_JP.utf8"

という警告が表示されます。問題はないのですが、いやなら .bashrc、.profile ファイルに

export LC_ALL=en_US.UTF-8
export LANG=ja_JP.utf8

を追加してください。

export LC_ALL=C

だと Ruby などで

invalid byte sequence in US-ASCII (ArgumentError)

上記のようなエラーが出ます。注意してください。

後は、cron を使って指定した時間に録音するようにします。次のコマンドを使って

~ $ sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist
~ $ sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist

cron を起動してください。

次に crontab -e を使用して時間を設定します。

crontab -e を実行するとテキストエディタ vim が起動します。

まず最初に簡単な vim の説明をしたいと思います。vim には、4つのモード (ノーマルモード、コマンドモード、ビジュアルモード、挿入モード) があります。

ノーマルモード: 最初の状態
コマンドモード: ノーマルモードで : キーを押す
ビジュアルモード: ノーマルモードで v キーを押す
挿入モード: ノーマルモードで i キーを押す。
コマンドモード、ビジュアルモード、挿入モードで ESC キーを押すとノーマルモードに戻る。
位置の移動: カーソルキー
文字の入力: 挿入モードで、キーをタイプすると入力できます。delete キーで削除できます。
文字の削除: ノーマルモードで x キーを押すと一文字削除できます。
コピー: ノーマルモードでコピーしたい最初の位置に移動、その後ビジュアルモードに変更、
右カーソルキーで範囲を指定し、y キーを押すとコピーできます。
ペースト: ノーマルモードでペーストしたい位置にカーソルキーで移動し、p キーを押す。
ファイルを保存して終了: ノーマルモードで : w q の順に3つのキーを押して Return
キーを押す。

簡単な vim の説明は、これで終わりです。詳しい説明は

Vimの使い方
http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html

を参考にしてください。

それではコマンド crontab -e を実行します。

~ $ crontab -e

vim が起動します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

と入力して保存し、vim を終了してください。コマンド crontab -e を終了したら、入力されたデータが正しいかチェックされ結果がターミナル上に英語で表示されます。

PATH を忘れずに指定してください。
録音した MP3 ファイルを保存する radio ディレクトリを次のコマンド

~ $ mkdir radio

で作成してください。(Finder 上で作成しても構いません。)

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

の xxxxxx の部分はターミナル上で pwd コマンドで

~ $ pwd
/Users/xxxxxx

確認して置き換えてください。

crontab の日付時刻設定は

# m h  dom mon dow  command
# 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
数字は、時刻、日付、曜日を表し、
* は、毎月、毎日、毎時、毎分です。
曜日は
0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日

です。

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

0,2-6 は、複数の曜日を指定しています。日曜日,火曜日〜土曜日を表しています。

上の例は日曜日と火曜日から土曜日の午前1時にコマンド

/Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

を実行します。

すなわち、ニッポン放送で日曜日と火曜日から土曜日の午前1時に2時間 (120 分) オールナイトニッポンを録音します。

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

に含まれる delete.py は、次の

~ $ ./delete.py -d radio 10

コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 10 個以外の削除されるファイルを表示します。

~ $ ./delete.py -y -d radio 10

上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 10 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新10 個のファイル以外削除します。

~ $ ./delete.py -a -d radio

radio フォルダのすべてのファイルを表示します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
0 10 * * 0 /Users/xxxxxx/delete.py -y /Users/xxxxxx/radio 10

上のように crontab -e で設定すると毎週日曜日の午前10時に radio フォルダ内のファイルを最新 10 個以外削除します。そのためディスク容量を気にする必要がありません。本来、Raspberry Pi 用に作成したものです。

後、失敗した録音ファイルは

~ $ open /tmp

で確認して下さい。

You have mail.
~ $ 

cron で指定したコマンドが実行されると上記のようにメールが届きます。
ターミナル上で

~ $ cd /var/mail
/var/mail $ ls
xxxxxx

上記コマンドを実行するとユーザー名: xxxxxx のファイルが確認できます。このファイルがメールの実体です。

/var/mail $ cat xxxxxx

上記コマンドで中身が見れます。削除するには

/var/mail $ sudo rm xxxxxx

を実行してください。

自作アプリの 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 + 左クリック) し、表示されたメニューから ’開く’ を選択してください。ダイアログが表示されるので、’開く’ ボタンをクリックすれば、アプリケーションが実行できるはずです。

プチコンmkII プログラム PBR (Petit Book Reader) 用 Mac 版補助ツール ConvertPTC 公開

プログラミングコンテスト 第二回 プチコン大喜利 審査結果発表」
http://smileboom.com/special/ptcm2/co_contest/

第二回 プチコン大喜利の審査結果が発表されました。早速、QR コードを読み取りました。特に Gust Notch? さん作

★プロ生ちゃん特別賞★
PBR (Petit Book Reader)
作/ Gust Notch? さん
GN_PBR
GN_MKBL
青空文庫リーダー

の deflate アルゴリズム実装には驚きました。

最近 Twiitter などで公開されている QR コードを追いかけていませんが、それでも自分の作りかけのプログラムも含めると約360本ほどあります。どんなプログラムがあるのか、ほとんど忘れてしまいました。それで、Mac のメモに Twitter などの発言をプログラムごとにまとめてあります。これを PBR (Petit Book Reader) で読めたら便利だと思い、早速試してみました。

(Twitter の発言を公開するわけにはいかないので、ここでは OOGIRI_B.txt を使用しています。テキストファイル OOGIRI_B.txt は、第二回 プチコン大喜利の結果をまとめたものです。QRコードのファイル名、プログラム名も書いてあります。どんなプログラムがあったか確認するのに便利です。後ほど紹介するアプリ ConvertPTC に含まれています。PTC ファイル化されているので、Windows ユーザーでも利用できます。 )

テキストファイル OOGIRI_B.txt を文字コード : ‘日本語 (Shift JIS)’、改行コード : ‘Windows CR LF’ で保存し、ターミナル上で gzip コマンドを使って

~ $ cd Desktop/ConvertPTC
~/Desktop/ConvertPTC $ gzip -c OOGIRI_B.txt > OOGIRI_B.gz
~/Desktop/ConvertPTC $ 

上記のように GZIP 圧縮ファイル OOGIRI_B.gz を作成しました。

はずかしいのですが、最初は圧縮書庫形式を TAR 形式 + GZIP 形式

 $ cd ~/Desktop/ConvertPTC/
~/Desktop/ConvertPTC $ tar czvf OOGIRI_B.tar.gz OOGIRI_B.txt
a OOGIRI_B.txt
~/Desktop/ConvertPTC $ 

のように tar.gz に圧縮していました。また、圧縮したアーカイブ・ファイルを展開するには

GZIP 圧縮ファイルの展開

~/Desktop/ConvertPTC $ gzip -dc OOGIRI_B.gz > OOGIRI_B.txt
~/Desktop/ConvertPTC $ 

TAR 形式 + GZIP 形式の展開

~/Desktop/ConvertPTC $ tar xzvf OOGIRI_B.tar.gz
x ./._OOGIRI_B.txt
x OOGIRI_B.txt
~/Desktop/ConvertPTC $ 

以上のコマンドでできます。

後は、PBR (Petit Book Reader) のマニュアルに説明されている通り、

プチコン MkII 開発支援ツール DSPCBMP
http://www.aogondo.net/PetitCom/DSPCBMP/

DSPCBMP を使って PTCファイルに変換しました。ところが Mac と Windows 間でファイルをやり取りしているせいか正しく変換されていないようです。(私の使用方法に問題があるのかもしれません。)

そこで、Ruby で PTC ファイルに変換するプログラムを作ってみたのですが、私の技術力不足でなかなか思った通りの動作をしてくれません。それで思いきって Mac 用の PTC 変換プログラムを作ってみました。折角なので、テキストファイルをドラッグ・ドロップするだけで GZIP 圧縮し、PTC ファイル化するようにしました。十分な動作確認をしていないので注意してください。

下記 URL で公開します。

Gust Notch? さん作 PBR (Petit Book Reader) で読むことができる
GRP 形式  PTC ファイルを Mac 上で作成する
プログラム ConvertPTC。
http://kyoshiaki.sakura.ne.jp/osx/Sample/ConvertPTC.zip

注意) GRP: OOGIRI_B を GN_PBR で読み込む時、エラーが出ます。GN_PBR を修正する必要があります。 上記 URL の ConvertPTC.zip に含まれる ReadMe を参照してください。Windows ユーザーにも ReadMe を読めるように PDF 形式で保存した ReadMe も同封しておきました。

詳しくは、

【使用方法】
5) プログラム GN_PBR を修正。

を参照してください。

文章ファイルリスト MEM: BOOKLIST を編集すると PBR (Petit Book Reader) GN_PBRの 起動画面で、文書タイトルをタッチするだけで読み込むことができます。その方法も、上記 URL の ConvertPTC.zip に含まれる ReadMe

【Tips】
4) 文書ファイルリスト
GN_MKBL 

に解説してあります。

プログラミングコンテスト 第二回 プチコン大喜利 審査結果発表」
http://smileboom.com/special/ptcm2/co_contest/
技術賞
一分間戦争
作/ Ackieee さん
OMWAR
PDF 書類 manual-omwar.pdf
http://smileboom.com/special/ptcm2/co_contest/media/manual-omwar.pdf

に熱中しています。なかなか手強いですね。

プチコン 3号(仮称)
http://smileboom.com/special/ptcm2/html_third.php

ニンテンドー3DSプチコンが発表されました。近日発売だそうです。楽しみですね。

シリアル通信ソフト CoolTerm の使用方法と遅延処理を追加した拙作 PCG-LinkMac バージョン 1.1(1) 公開

追記: 2014/05/21(Wed)

OS X Mavericks では、USB・RS232C シリアルポート変換ケーブル対応のドライバをインストールする必要がありません。Apple 純正のドライバがインストールされています。

~ $ 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 $

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

自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2013/12/14/185334

上記 URL の PCG-LinkMac の記事も参考にしてください。

PC-G850VS と Mac ( OS X Mountain Lion 10.8 ) の間でのシリアル通信 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/20120831/1346414073

以前、上記 URL で PC-G850VS と Mac の間でのシリアル通信に、拙作 PCG-LinkMac

PCG-LinkMac バージョン 1.1(1)
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink

を紹介しました。

今回は、シリアル通信ソフト CoolTerm を紹介します。(また、PCG-LinkMac も遅延処理を追加したバージョン 1.1(1) を上記 URL で公開しています。詳しい解説は同封の ReadMe を参照してください。)

Roger Meier's Freeware
CoolTerm
http://freeware.the-meiers.org/

シリアル通信ソフト CoolTerm には、Mac、Win、Linux 版があります。

使い方は簡単です。CoolTerm を起動したら、まず最初に端末の設定をおこないます。

ツールバーの Options をクリックし、Serial Port タブを選び

Port: usbserial-FTG6R5XK
Baudrate: 9600
Data Bits: 8
Parity: none
Stop Bits: 1
Flow Control: いづれもチェックしない

上図のように設定します。OK ボタンをクリックすれば設定完了です。(自分の環境に合わせて設定してください。)
後は、ツールボタンの Connect をクリックしてシリアルポートを開いてください。成功すれば、ウインドウの下部エリアに状態が表示されます。

ファイルを転送するには、メニュー/Connection/Send Textfile… からファイルを選択すれば、転送されます。

MINE [Minesweeper ver 0.2]
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#mine
(PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ
にすべての拙作プログラムが含まれています。)

上記メニューを使って、拙作 MINE [Minesweeper ver 0.2] のテキストファイル mine02.txt を Mac 側から遅延せずに転送し、Mac 側で転送が終了してから、10秒ほど待つと PC-G850VS 側で受信が終了し、転送に成功します。(Mac の環境によって違いが出ると思います。)

たたし、サイズの多きなファイルだとエラーが生じることがあります。その時は、1文字送るごとに遅延するように設定します。

一度、ツールバーの Disconnect でシリアルポートを閉じて、再設定します。

ツールバーの Options をクリックし、Transmit タブを選びます。

Options/Tranmit
✓Use trasmit character delay
Delay (ms): 5

Use trasmit character delay にチェックを入れ、遅延時間を 5 ms に設定します。ツールバーの Save をクリックして名前を付けてファイルに保存すれば、そのファイルを Finder 上でダブルクリックするだけで端末が設定されます。

それから再度ツールバーの Connect ボタンをクリックして、シリアルポートを開いてください。

SDCC 版 Minesweeper ver 1.0
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#sdccmine
(PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ
にすべての拙作プログラムが含まれています。)

拙作 SDCC 版 Minesweeper ver 1.0 の minesweeper_hex.txt ファイルで説明したいと思います。

PC-G850VS のモニタで機械語エリアを確保し

MON
*USER 23AE
*

先程、遅延時間を 5 ms に設定しましたが、ここでは説明のため 3ms に設定したとします。
minesweeper_hex.txt を PC-G850VS に転送すると

*R
INFO:0100-2154
*

終了番地が 2154 となり、データの取りこぼしが起きています。
それで、5ms の遅延に設定すると

*R
INFO:0100-23AE
*

終了番地が 23AE となり正しく受信しています。私の Mac

iMac 27-inch, Mid 2010
プロセッサ  2.93 GHz Intel Core i7
メモリ  8 GB 1333 MHz DDR3
グラフィックス  ATI Radeon HD 5750 1024 MB
ソフトウェア  OS X 10.8.3(12D78)

です。最新の Mac だと遅延時間を 5ms 以上にしないといけないかもしれません。

エラーが出た時は、Mac 側の入出力条件設定と P-G850VS側 の入出力条件設定 Format が等しいか確認してください。
特に

I/O DEVICE ERROR

がすぐ起きた時は、遅延するように設定してください。最初は、エラーが起きない大きめの間隔から設定し、段々減らしていくと良いかもしれません。
改行コード: end of file、行番号: line number も注意してください。

下図のように、PCG-LinkMac でも遅延できるように機能を追加しました。

PCG-LinkMac バージョン 1.1(1)
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink

良かったら、ダウンロードしてください。

Kindle 版書籍 Cocoa Design Patterns (Developer's Library) 購入。

今月はあまり書くことがないので、本の紹介です。
iOS、OS X のプログラミングを続けていると、Appleフレームワークの出来の良さに舌を巻きます。デザインパターンについては、良書だと評判の

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

を随分前に読んだきりです。それで、もう少し理解を深めようと

Cocoa Design Patterns (Developer's Library)

Cocoa Design Patterns (Developer’s Library)

を購入してみました。読んでいる途中ですが

Memory Zones
Category
Informal Procotols
Fast Enumrators
Accessors
Copying
Notifications

など、より深く理解することが出来ました。ただし、Objective-C 2.0 には対応していますが、新たに追加された Objective-C value literal syntax

NSNumber *longNumber = @42l;
NSDictionary *dictionary = @{
@"anObject" : someObject,
@"helloString" : @"Hello, World!",
@"magicNumber" : @42,
@"aValue" : someValue
};
NSArray *someArray = @[firstObject, secondObject, thirdObject];

などには対応していません。情報としては少し古いかもしれませんが、十分に通用する内容です。

はてなポイントが余っていたので、アマゾンギフト券に交換し、次の Kindle版書籍とコミックを買ってみました。

進撃の巨人(1): 1 (少年マガジンKC)

進撃の巨人(1): 1 (少年マガジンKC)

進撃の巨人(2): 2 (講談社コミックス)

進撃の巨人(2): 2 (講談社コミックス)

テルマエ・ロマエI: 1 (ビームコミックス)

テルマエ・ロマエI: 1 (ビームコミックス)

テルマエ・ロマエII: 2 (ビームコミックス)

テルマエ・ロマエII: 2 (ビームコミックス)

Kindle 版書籍やコミックは手軽に買えるので、 注意しないといけませんね!
いくらお金があっても足りません!