Mac OS X、Ubuntu、Cygwin、MinGW のターミナル上で動作するプチコン準拠 BASIC インタプリタ basic を公開。

Mac OS XUbuntuCygwinMinGW のターミナル上で動作する BASIC インタプリタ basic を下記 URL で公開します。

basic version 1.0.0
http://kyoshiaki.sakura.ne.jp/osx/index.html

BASIC の文法は、

プチコン
http://smileboom.com/special/petitcom/

に準拠します。ただし、スプライト、BGスクリーン、256色グラフィック、ファイルと通信、音楽などに関するステートメントと関数は、対応していません。

あくまでも、実験的に作成したものです。メモリの解放なども省いています。flex、bison、C 言語で作成され、ソースも含まれています。

実用性に乏しいですが、良かったらダウンロードしてください。

BASIC インタプリタだけだと寂しいので、Land of Lisp から

Land of LISP: Learn to Program in Lisp, One Game at a Time!

Land of LISP: Learn to Program in Lisp, One Game at a Time!

orc-battle.lisp
robots.lisp
evolution.lisp

を移植してみました。evolution.lisp の移植には、かなり苦労しました。自分で言うのも、おこがましいのですが、力作です。
後、BASIC で再帰処理とローカル変数を実現するのには無理があるので、dice_of_doom_v1.lisp はあきらめました。

Boot Camp 上に Windows 7 はインストールしてありますが、Windows プログラミングについて、ほとんど知識がありません。

Cygwin
http://www.cygwin.com/
MinGW | Minimalist GNU for Windows
http://www.mingw.org/

CygwinMinGW で何とかビルドができるように対応してみました。ただし、MinGW については、日本語表示(半角カタカナ)とエスケープシーケンスに問題があります。Cygwin がお勧めです。本当は、CygwinMinGW のインストールも説明すべきなのですが、よくわからないので省きました。ごめんなさい。

robots.bas.txt、evolution.bas.txt を実行した動画を添付しておきます。

robots.bas.txt

evolution.bas.txt

Amazon Kindle 版 Steve Jobs 伝記、日経ソフトウエア 2012年 1月号 (新メモリー管理方式「ARC」の使い勝手)、Emacs Tips バッファリストを同一ウインドウで開く

Amazon KindleSteve Jobs 伝記をようやく読み終えました。読んでいる途中で、本の更新メールが届き、驚きました。電子版になると文章の修正などが簡単になるので、更新処理も可能になるのですね。メールに記載された更新手続きを行うと、問題なく更新されました。

NeXT、iPhone に関する技術的な考察を知りたかったのですが、内容は少なめでした。本の最後にある And One More Thing …、Steve Jobs 自身の言葉は、感慨深いものがありました。ご冥福をお祈りします。

日経ソフトウエア 2012年 1月号 の内容

日経 ソフトウエア 2012年 01月号 [雑誌]

日経 ソフトウエア 2012年 01月号 [雑誌]

P16
特集 1
Java 新時代へ
P40
連載型 特集
アプリはまず「骨格」を作れ
Android ネイティブ・アプリ 設計法
■ 赤井 忠昭
P54
特集 3
iOS 5 で変わる iPhone プログラミング
retain や release はもういらない
新メモリー管理方式「ARC」の使い勝手
■ 荻原 剛志
P62
特集 4
Windows 8 & Visual Studio 11 徹底解説!
Metro アプリ開発をいち早く体験
■ 矢嶋 聡
P132
日本マイクロソフト エバンジェリストが語る最新プログラミング実践講座
Windows Phone 7 プログラミングを始めよう
第2回 スタート画面のタイルを使いこなす
■大西 彰
連載
NEW
P74
プチコンでニンテンドー3DS/DSi/DSi LL
ゲームプログラミング講座
第1回 お題 シューティングゲーム
■松原 拓也
NEW
P87
Xcode 4 使い方入門
第1回 各画面やメニューを理解する
■ 大津 真

に大変興味が湧き、購入しました。特に

P54
特集 3
iOS 5 で変わる iPhone プログラミング
retain や release はもういらない
新メモリー管理方式「ARC」の使い勝手
■ 荻原 剛志

については、ARC のより深い理解の参考になりました。再確認のため Apple の資料を調べてみました。

まず、最初に新しい機能については

What's New in iOS: Introduction
https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008244-SW1

What's New in iOS: iOS 5.0
https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//apple_ref/doc/uid/TP30915195-SW1
Automatic Reference Counting

で概要を理解できます。上で紹介されているリンク先

Xcode New Features User Guide: Introduction
https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/00-Introduction/Introduction.html#//apple_ref/doc/uid/TP40004626
▼ New Features in Xcode 4.2
Automatic Reference Counting

でも確認できます。さらに紹介されているリンク先

Transitioning to ARC Release Notes
https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

が一番詳しいので、これさえ読んでおけば、充分だと思います。

私自身の経験ですが、NSLog などで

Thread 1: Program received signal: "EXEC_BAD_ACCESS".

が表示される時、原因となるファイルの ARC を無効にすると回避できることがあります。本当は、原因を取り除くべきなのですが、私自身、究明できないので暫定処理として使っています。

ARC のファイルごとの設定方法は、上のリンク先に載っています。簡単に説明すると

プロジェクト名/プロジェクト/Build Settings
▼ Apple LLVM compiler 3.0
Objective-C Automatic Reference  Co…

で、プロジェクト自体の ARC を有効にし、

プロジェクト名/TARGETS/Build Phases
▼ Compile Sources (6 items)

上図のように ARC を無効にしたいファイル名の右側、Compiler Flags エリアをダブルクリックし、表示されたウインドウに

-fno-objc-arc

を入力してください。これで、ARC を無効にできます。何も指定していない場合は、プロジェクト自体が ARC を有効にするので、自動的に -fobjc-arc フラグがセットされます。

また、日経ソフトウエア 2012年 1月号

連載
NEW
P74 プチコンでニンテンドー3DS/DSi/DSi LL
ゲームプログラミング講座
第1回 お題 シューティングゲーム
■松原 拓也

の記事も購買目的の一つです。早速、プログラムを入力して遊んでいます。いろいろ改造しながら、スプライトの利用方法 (ミニ・シュート: 自機の爆破処理など)を理解しています。

最後に、ちょっとした Tips です。通常 Emacs でバッファリストを開くと別ウインドウに表示されますが、同じウインドウに表示する設定です。

;;  ========================== .emacs ==========================
;; list-buffers
(setq same-window-regexps '("\*Buffer List\*"))    ;; \ = バックスラッシュ = Option + \
Force Same Window - GNU Emacs Manual
http://www.gnu.org/s/libtool/manual/emacs/Force-Same-Window.html
Special Buffer Frames - GNU Emacs Manual
http://www.gnu.org/s/libtool/manual/emacs/Special-Buffer-Frames.html#Special-Buffer-Frames

を参考に設定してみました。same-window-regexps 変数は、正規表現のリストです。

E3、WWDC、ニンテンドー3DSの本体機能更新、プチコン上でのファイルの送受信

毎年恒例の E3 や WWDC など、イベント尽くしでしたね。

最初に WWDC から

Apple - Press Info - Apple to Unveil Next Generation Software at Keynote Address on Monday, June 6
http://www.apple.com/pr/library/2011/05/31wwdc.html

上記 URL のように、あらかじめ内容が告知された珍しい基調講演でした。

基調講演は、アップルのサイト

Apple - Apple Events - Apple Special Event June 2011
http://events.apple.com.edgesuite.net/11piubpwiqubf06/event/

で、ストリーミングで見ることができます。iTunesPodcast でも

Apple Keynotes
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

配信されています。

Lion、iOS 5、iCloud などの発表がありましたが、一番興味を引いたのは iCloud です。NDA (秘密保持契約) で詳しくは話せないのですが、公開している自作ソフトにいろいろ利用できそうです。自作の Twitter アプリも作り直そうと思っています。その前に、マルチタスキングに対応した iPadRSS リーダーを iTunes Connect に申請しないといけないのですが!

次は E3 にについてです。

E3, E3 2011 - GameSpot.com
http://e3.gamespot.com/

上記ページの上部、水色の部分 ‘Videos’ にマウスカーソルを合わせると下のようなメニューが表示されます。

Press Conferences
・Microsoft
・Sony
・Nintendo
・EA
・Ubisoft

見たい会社名をクリックすることで基調講演を見ることができます。

また、同時通訳版 任天堂プレゼンテンションは

任天堂 E3 2011情報
http://www.nintendo.co.jp/n10/e3_2011/01/index.html

で見ることができます。任天堂Wii U、Sony の Play Station Vita、どちらも楽しみですね!

任天堂 E3 2011情報 - Wii U
http://www.nintendo.co.jp/n10/e3_2011/02/index.html
PlayStation®Vita | プレイステーション® オフィシャルサイト
http://www.jp.playstation.com/psvita/

ニンテンドー 3DS の ‘Nintendo eShop’ 用 本体更新が 6月7日にありました。これで、ニンテンドー DSi ウェアの ‘ニンテンドーDSi 用 BASIC プチコン‘ を ニンテンドー3DS で遊ぶことができます。

プチコン - 株式会社スマイルブーム
http://smileboom.com/special/petitcom/index_a40.html
プチコン - DSi Ware
http://www.nintendo.co.jp/ds/dsiware/kkoj/index.html

ニンテンドー DSi の DSi Ware を ニンテンドー3DS に引っ越しすることができます。ただし、セーブデータは引っ越しできません。

ニンテンドー3DS|その他(ソフトとデータの引っ越しについて。)|Nintendo
http://www.nintendo.co.jp/3ds/support/transfer/index.html

ニンテンドー 3DS 本体更新は

ニンテンドー3DS|サポート トップ|Nintendo
http://www.nintendo.co.jp/3ds/support/index.html
ニンテンドー3DSニンテンドー3DSの本体機能更新について|Nintendo
http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html

が参考になります。HOME メニューで更新の案内が表示されない時は、ニンテンドー 3DS の下画面 ‘本体設定’ ソフトアイコンをタッチしたあと、’はじめる’ か ’本体設定’ ソフトアイコンをもう一度タッチします。上画面、右下に本体のバージョンが表示されます。最新版は Ver. 2.1.0-3J です。下画面の ‘その他の設定’/’本体の更新’ を選ぶことで、本体を更新することができます。

DSi Ware のセーブデータを引っ越しできないので、ニンテンドー3DS 用に ‘プチコン‘ を再度購入しました。6月16日に DSi Ware ‘プチコン‘ の不具合修正版が配信されました。ソフトウェアの更新方法は

ニンテンドー3DS
’Nintendo eShop'/'設定・その他'/'購入済みソフト' から 'プチコン' を選び、 'このソフトの情報' ボタンの右隣の '更新' ボタンをタップして更新できます。私の場合、'更新ソフトの確認' では表示されませんでした。
ニンテンドーDSi
'DSiショップ'/'ショッピングへ'/'設定メニュー'/'購入済みソフト' から更新できます。

です。

ニンテンドー DSi ‘プチコン’ のプログラムを ニンテンドー3DS に送信するには SENDFILE、RECVFILE 命令を使います。ニンテンドー3DS、ニンテンドー DSi の両方で ‘プチコン’ を起動し、ニンテンドーDSi 側で FILES 命令を使って送信したいプログラムの ‘リソース名:ファイル名’ を確認します。送信するファイルのリソース名は、SPU0、BGU0 ではなく、FILES 命令で表示される。PRG、CHR なので注意してください。

FILES
PRG:MINE
CHR:SPDATA
CHR:BGDATA

例として ‘PRG:MINE’ ファイルで説明したいと思います。ニンテンドー3DS 側で

RECVFILE "PRG:MINE"

と実行し、待機状態にします。ニンテンドーDSi 側で

SENDFILE "PRG:MINE"

と実行すると ‘ファイルを送る相手を選択してください’ と表示されるので、ニンテンドー3DS側の名前を選択して送信してください。

ニンテンドー3DS のブラウザは、ニンテンドーDSi ブラウザの特徴であった、1つのページを片方の画面で縮小し、もう1つの画面でそのまま表示する機能 ‘通常表示’ がなくなりました。上下の画面がつながった ‘タテ長表示’ だけになりました。スライドパッド、十字ボタンでスクロールします。

また、Opera から ACCESS の WebKit を利用した NetFront に変更になりました。

ACCESS、組込機器向けにWebKitベースの省メモリブラウザを発表 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2011/06/08/006/

WbKit の表示を ‘説明書’/’12 仕様’ で確認できます。