DSi Ware 'プチコン' 、3月2日開催 Apple Special イベントと任天堂 Game Developer Conference 2011、ニンテンドー3DS 発売、iPhone アプリ iYKRSS バージョン 1.0.3 公開

3月11日(金)、東日本大震災 (東北地方太平洋沖地震) が発生しました。幸いなことに、私が住んでいる地域には影響がありませんでした。このブログに求めているものは、パソコンに関する技術的な情報だと思い、普段通り書きたいと思います。被災地の皆さん、災害に負けず頑張ってください。早い復興を心よりお祈りいたいます。

本題に入る前に、最近熱中していうものがあります。それは、ニンテンドーDSiダウンロード販売している専用ソフトウェア DSi Ware ‘プチコン‘ です。

プチコン
http://smileboom.com/special/petitcom/sample.html
任天堂ページ プチコン DSi Ware
http://www.nintendo.co.jp/ds/dsiware/kkoj/index.html

ニンテンドーDSi 上で動作する BASIC です。ニンテンドーDSi では現在 800 ポイントでダウンロードできます。ニンテンドー3DS上でも動作します。ニンテンドー3DSの場合、配信は5月末頃になるようです。

年齢がばれてしまいますが、BASIC は ポケコン PC-E500、PC-98MacintoshX68000Zaurus、PC-G850VS といろいろ経験してきたので、楽しみにしていました。X68000 の X-BASIC 上のスプライトについては、最後まで理解できませんでした。’プチコン‘ では、スプライトに対応しているので理解できるか心配していたのですが、大丈夫そうです。

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

上記 URL の ‘コマンド一覧’ と ‘サンプルギャラリー’、’プログラムリスト集’ の一部を印刷してバインダーに綴じて理解に励んでいます。特に印刷したプログラムリストの命令を調べるのに、’コマンド一覧’ だけだと不便なので、索引 (インデックス) を Python で作成しました。

追記: [ 2011/03/23(Wed) ] Twitter で知りましたが、プチコンのホームページ上に 'コマンド一覧' は残っているそうです。リンク先の URL は、http://smileboom.com/special/petitcom/command.htmlです。
プチコン - 'コマンド一覧'
http://smileboom.com/special/petitcom/command.html

残念ながら、’コマンド一覧’ は ‘仕様/ダウンロード’ の Web版・PDF ファイルに変更になりました。折角作ったので、何かの役に立つかもしれないと思い ‘索引 (インデックス) レファレンスと Python プログラム’ を公開しておきます。

【 プログラム名 】 プチコン 'コマンド一覧' 索引(インデックス) 作成プログラムと索引リファレンス
ダウンロード: PetitIndex.zip (12KB)
http://kyoshiaki.sakura.ne.jp/osx/Download/PetitIndex.zip


いろいろなプラットフォームに移植しているマインスイーパーでも作ってみたいですね。

本題に入ります。

2月26日、ニンテンドー3DS 発売、3月2日に Apple Special イベントと任天堂 Game Developer Conference 2011 Keynote が開催されましたね!

まず、Apple Special イベントから

3月2日午前10時(日本時間3月3日午前3時) the Yerba Buena Theater in San Francisco, California にて、Special イベントが開かれました。予想通り iPad 2 が発表されました。

Apple - Press Info - Apple Launches iPad 2
http://www.apple.com/pr/library/2011/03/02ipad.html

基調講演は、

Apple Special Event March 2011
http://events.apple.com.edgesuite.net/1103pijanbdvaaj/event/index.html
Apple Keynotes (iTunes Podcast)
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

上記 URL でストリーミングや iTunes Podcast で見ることができます。スティーブ・ジョブスが元気そうで何よりです。

また、3月10日に iOS 4.3 アップデートも配信されました。詳しくは

Apple - Press Info - Apple Introduces iOS 4.3
http://www.apple.com/pr/library/2011/03/02ios.html

を参照してください。

私個人としては、iPad 2 が Retina ディスプレイに対応していたら、自作の iPad アプリを対応させるために購入しないといけないと思っていたのですが、その必要がないので、今回は見送るつもりです。公開するかわかりませんが、iPod touch のカメラ機能を利用したアプリも試しに作成してみたので、必要になったら iPad 2 を購入するかもしれません。

ニンテンドー3DS は、2月26日の発売日に手に入れるつもりはありませんでした。ただ、Amazon で定価 25000 円で発売されるのを午後1時頃、夕方午後6時頃、一日に2回チェックしていました。Yahoo! オークションでも値段の推移も確認していました。たまたま確認した 2月24日午後6時頃に入荷していました。ニンテンドー3DS アクアブルーを購入しました。3月5日に到着しました。ニンテンドー 3DS の供給は十分なようで、比較的手に入れやすいようですね!

遊んでみた感想は、ARゲームズニンテンドー3DSカメラは面白かったです。私は眼鏡をかけているのですが、3D についてはそれほど気になりませんでした。

任天堂公式ライセンス商品 ピタ貼り for ニンテンドー3DS は、すごく丁寧に作ってあって iPhoneiPod touchiPad 版も欲しいと思ったぐらいです。ソフトは nintendogs 柴&フレンズを購入しました。

ARゲームズの 3D 効果も驚いたのですが、ニンテンドッグスも負けていないと思います。

また、Apple Special イベントと同じ 3月2日に、任天堂 Game Developer Conference 2011 Keynote が開催されました。基調講演については

Nintendo @ GDC2011
http://gdc2011.nintendo.com/

で見ることができます。詳細については

Live from Nintendo's GDC 2011 keynote (Update: It's over!) | Joystiq
http://www.joystiq.com/2011/03/02/nintendo-gdc-keynote/

を参照してください。


iYKRSS
カテゴリ/ニュース
無料
http://itunes.com/apps/iYKRSS

iPhone アプリ iYKRSS バージョン 1.0.3 を公開しました。

ブログには書いていませんでしたが、第4世代 iPod touch を購入していました。iYKRSSHD を普段利用していたのですが、iPad の iOS が 4.2.1 になり、マルチタスキングに対応させないと使用しづらくなってしまいました。

iPhone 版 iYKRSS も、それなりにダウンロードされているので、もしかしたら使用しづらく困っている人がいるかもしれないと思い、私のアプリケーションの中ではユーザーの多い iPhone 版 iYKRSS を最初にマルチタスキングに対応させることにしました。iPad 版は iPad 2 の発表で Retina ディスプレイに対応する必要がないことがわかったので、今月中には取り掛かりたいと思います。Xcode 4 に慣れないといけないので、少し遅れるかもしれません。

追加した機能は、簡潔に説明すると

1.0.3
- iPhone 4、iPod touch 4世代のRetinaディスプレイに対応。
- RSSフィードの更新をマルチタスキング機能に対応させた。
バックグラウンドで RSS フィードの更新が終了すると画面に通知する。
- RSS フィードの更新中以外の時に、バックグラウンド処理に移ると RSS フィードデータを保存。

です。

注意

私は RSS フィード 60個ぐらい登録しています。iYKRSS を使用中に反応がすごく鈍くなることがあります。メモリ不足が原因のようです。その時は、ホームボタンをダブルクリックして、バックグラウンドにあるアプリケーションを表示し、アイコンを押し続けると ‘-‘ 記号がアイコンに付き揺れ始めるので、’-‘ 記号をタップして iYKRSS 以外のアプリを終了してください。

簡単な使い方を説明しておきます。

基本的な使い方は、下記 URL を参考にしてください。

2009-07-29 - KOYAMA Yoshiaki の日記
http://d.hatena.ne.jp/KYoshiaki/20090729

iYKRSS をタップして起動させます。最初は ‘アップルホットニュース’ というタイトルの RSS フィードが登録されています。

最初は RSS フィードを登録する必要があります。右下の ボタンをタップして RSS フィードの URL を入力してください。RSS フィードの URL は、iPhone 上の Safari ではなく、パソコン上のブラウザを使って表示された URL を使用してください。どうやってブログなどの RSS フィードを見つけるのかについては、iPad 用 iYKRSSHD の説明ですが、 iPhone 用 iYKRSS でも同じなので

2010-10-31 - KOYAMA Yoshiaki の日記
http://d.hatena.ne.jp/KYoshiaki/20101031

が参考になります。

右下の URL ボタンを押すとサンプル RSS フィードを選択できます。

URL を入力し、左下の 更新ボタンをタップするとタイトルなどが自動入力されます。この画面での更新は、保存期間が影響しません。

トップ画面左下の 更新ボタンをタップするとすべての RSS フィードが更新されます。更新に失敗した RSS フィードは、以前ダイアログで表示されましたが、今回から RSS フィード名を赤色で表示するようにしました。更新中は iPhone はスリープしません。ホームボタンを押してバックグラウンドに移るとスリープ解除が無効になるので注意してください。

更新中にホームボタンを押してバックグラウンドに移っても、更新処理は継続されています。すべての RSS フィードの更新が終了すると画面に通知されます。

RSS フィードの更新に失敗すると赤色で表示されます。個別に失敗した RSS フィードを選択して更新するとエラーの詳細をダイアログで表示します。

iYKRSSHD は、まだマルチタスキングン対応していません。注意してください。

iTunes の デバイス App ファイル共有で表示されるファイル RSSArchive.iYKSS は iPhone 用 iYKRSS と iPad 用 IYKRSSHD で互換性があります。iYKRSS の RSS フィードデータを iYKRSSHD に移行したい場合は、iYKRSS のファイル RSSArchive.iYKSS を iYKRSSHD のファイル共有に移動してください。逆に iYKRSSHD のファイル RSSArchive.iYKSS を iYKRSS のファイル共有に移動することもできます。

通常は、必要ないと思いますが、文字列を URL エンコードする Python スクリプトを作成しました。

文字列:  ニンテンドー3DS
URL エンコードした文字列: %E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
~ $ cd Desktop/
~/Desktop $ ./escape.py ニンテンドー3DS
%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
~/Desktop $ ./unescape.py %E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
ニンテンドー3DS
~/Desktop $ 

登録する RSS フィード

feed://k.hatena.ne.jp/keywordblog/ニンテンドー3DS?mode=rss

ではなく

feed://k.hatena.ne.jp/keywordblog/%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS?mode=rss

なので注意してください。

公開するのも恥ずかしいプログラムではありますが、良かったら、ダウンロードしてください。

URL エンコード/デコードするプログラム escape.py, unescape.py
ダウンロード: Escape.zip (4KB)
http://kyoshiaki.sakura.ne.jp/osx/Download/Escape.zip

また、私が公開している HatenaDiaryAssistance に追加してみました。

要望があれば公開したいと思います。

Mac App Store、さくらのレンタルサーバ用アクセス解析プログラム Sakura Version 1.0 公開

随分遅れましたが、新年明けましておめでとうございます。今年も宜しくお願いします。
Mac App Store が始まりましたね。私は iWorks を持っていないので、とりあえず

Numbers
カテゴリ:仕事効率化
\2300
http://itunes.apple.com/jp/app/numbers/id409203825?mt=12

を購入しました。Pages と Keynote については、購入するか悩んでいます。

前回、紹介した ‘さくらのレンタルサーバアクセス解析プログラム Sakura Version 1.0 ‘ を

さくらのレンタルサーバアクセス解析プログラム Sakura Version 1.0
Programmed by KOYAMA Yoshiaki
概要
ターミナル上で動作するスクリプト。
ファイル名を指定しなくても、さくらのレンタルサーバから現在最新のアクセスログ
ファイルをダウンロードし、アクセス解析を表示する。
Yoshiaki's HomePage
http://kyoshiaki.sakura.ne.jp/osx/index.html

で公開します。あまりアクセス数の多いサイトにはむかないかもしれません。良かったらダウンロードしてください。

Learning Python ( with/as statement )

ようやく Learning Python ( asin:0596513984 ) を読み終えました。

読み終えて気付いたのですが、最近の言語はどれも似たような機能が搭載されていまね。Objective-C 2.0 の Fast Enumeration

===== Objective-C 2.0 =====
Fast Enumeration
for ( Type newVariable in expression ) { stmts }

などは、RubyPython にも似たような構文があります。

Mac OS X に標準でバンドルされている Python 2.5.1 ではサポートされていませんが、Python 2.6 でサポートされている with/as statement などは ruby の ‘ブロックつきメソッド’ に非常に似ていますね。

===== Ruby ( with.rb ) =====
#!/usr/bin/env ruby
File.open("sample.txt") { |f|
f.each { |line|
print line
}
}
===== Python ( with.py ) =====
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import with_statement
with open(r'sample.txt') as myfile:
for line in myfile:
print line

上の例だと RubyPython のどちらもファイルをクローズする必要がありません。後、Lisp を多少なりにも勉強しておいて良かったですね。下記の2冊はお勧めです。Practical Common Lisp ( asin:1590592395 ) は途中までしか読んでいませんが!

話が変わりますが、VMware Fusion 上で Windows XP Professional を使えるようになって、今更ながら GyaOYahoo!動画を楽しんでいます。年のせいかほとんどアニメを見なくなりましたが、最近だと ‘電脳コイル‘ を見たぐらいです。

それでも GyaO の ‘RD 潜脳調査室‘ はかかさず見ています。ちょっと暇な時間があったので、Yahoo!動画のアニメページを見ると ‘精霊の守り人‘ と言うタイトルが目に付いたので、ちょっと見てみました。

結構面白かったので1話から5話まで見てしまいました。6話以降は有料だし、全話見るには相当時間がかかりそうなので、Amazonで書籍をとりあえず4冊購入してみました。

まだ続編があるみたいです。’精霊の守り人‘ は NHK-BS2 で 2007 年 4月に放映されていたようです。

うっかりしていたのですが、ハリー・ポッターの最終刊も発売されていたので、ついでに注文しておきました。ハリー・ポッターは全巻持っています。月日が経つので、以前の内容は結構忘れていますね!

list.py

iPhone いよいよ発売されましたね。私の利用方法が、主に自宅の Wi-Fi を想定したものだと考えると、 iPhone 16GB で 月額料金 \8720円(+通話料) は躊躇してしまいますね。
本体一括払いにすると、月額料金\5360(+通話料) になるようですが!
たぶん、iPod touch 32GB を購入することになると思います。ただし、iPod も 9月には一新される噂もあるので迷っています。

前回にも書いたように

を続けて読んでいます。574ページまで読みました。今月中には読み終わりそうです。

簡単なプログラムを作りたくなり、2ch 掲示板 ‘新・mac’ 板のスレッド一覧をダウンロードし、スレッドタイトル名でソートして表示するプログラムを作ってみました。

------------------[ list.py ]------------------
#!/usr/bin/env python
# coding: UTF-8
import httplib
import re
connection = httplib.HTTPConnection( 'pc11.2ch.net' )
connection.putrequest('GET', '/mac/subject.txt')
connection.putheader('User-Agent', 'Monazilla/1.00')
connection.endheaders()
connection.send('')
response = connection.getresponse()
print response.status, response.reason
data_shift = response.read()
connection.close()
data = data_shift.decode('shift-jis', 'ignore')
re_line = re.compile("(.*)<>(.*)\((\d+)\)")
subject = []
for line in data.splitlines():
match = re_line.match(line)
t = (match.group(1), match.group(2), int(match.group(3)))
subject.append(t)
subject.sort(lambda x,y: cmp(x[1], y[1]))
for f, t, d in subject:
print '%(f)s %(d)4d %(t)s' % {'f': f, 'd': d, 't': t}
------------------[ list.py ]------------------

利用しやすいように Zip で圧縮したものを以下のリンク先に置いておきます。

ダウンロードファイル list.zip
URL [ http://homepage.mac.com/yos_koyama/list.zip ]

実行結果

ターミナルの環境設定で下図の赤丸部分に注意してください。デフォルトの設定だと文字が汚い場合があります。
その場合は、ターミナルの環境設定を開き、テキストタブを選択し、’フォント’ を Monaco 11 pt. 、’ボールドフォントを使用’ のチェックを外してください。
次にウインドウタブを選択し、’ウインドウサイズ’ を 列 80、行 30 に設定してください。
気に入らない場合は、いろいろ試してみてください。ただし、文字コードUTF-8 以外だと正しく動作しません。


5行目
connection = httplib.HTTPConnection( 'pc11.2ch.net' )

の URL: pc11.2ch.net は変更になる可能性があるので注意してください。

変更された URL は、拙作 Search2chBBS [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ] か bbsmenu.html [ http://menu.2ch.net/bbsmenu.html ] から判断できます。

プログラムを作るためには、リファレンスが必要なので

Python Programming Language -- Official Website
http://www.python.org/

の DOCUMENTATION から Download Current Documentation をクリックし

Download Python 2.5.2 Documentation
http://www.python.org/doc/2.5.2/download/

から HTML 版の Zip ファイル [ html-2.5.2.zip ] をダウンロードしました。

Global Module の httplib、re の使用方法も、ダウンロードしたファイル html-2.5.2.zip を展開して作成されたドキュメントを参考にしました。正しい使用方法なのか、あまり自信はありません。

Python入門
http://www.pythonweb.jp/tutorial/index.html

も参考になると思います。

簡単なプログラムなので理解しやすいと思います。大ざっぱに言えば、ブラウザで

http://pc11.2ch.net/mac/subject.txt

にアクセスするのと同様な動作を行っています。

2ch の仕様については、拙作

2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ]
2ch Script version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs01 ]
Search2chBBS version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ]

の ReadMe やその中で紹介されている参考文献を参考にしてください。それほど複雑ではないと思います。

拙作、2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ] は頻繁に利用しているので、暇があれば Python で書き直してみたいですね!(2ch Script version 0.2は、sh、curlruby で作成されています。)

Learning Python

Apple - QuickTime - WWDC 2008 Keynote
http://events.apple.com.edgesuite.net/0806wdt546x/event/index.html
iTunes Store Podcast - WWDC 2008 Keynote Adress
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?i=26717006&id=275834665

ちょっと遅れましたが、WWDC 2008 基調講演 (Podcast版) を iTunes でダウンロードして見ました。iPhone SDKにも挑戦しているので、iPhone はぜひ購入したいですね!

話は変わりますが、書籍

詳解 Objective-C 2.0

詳解 Objective-C 2.0

を購入しました。

以前、発売されていた

Objective-C Mac OS Xプログラミング

Objective-C Mac OS Xプログラミング

Objective‐C―MacOS Xプログラミング入門

Objective‐C―MacOS Xプログラミング入門

の2冊も持っています。

私は、以前説明されていた重複箇所は読んでいません。おおまかに

CHAPTER 6 ガーベジコレクション
CHAPTER 11 プロコトル
11-04 高速プロコトルと列挙子
CHAPTER 12 宣言プロパティとアクセサ

を読みました。特に11章の ‘高速列挙の実装例’ は大変参考になりました。基本的に

The Objective-C 2.0 Programming Language: Introduction to The Objective-C 2.0 Programming Language
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html

を読んで理解していることが正しいのか、確認に利用しました。日本語の資料は貴重なので、持っていて損しないと思います。

また、以前ブログ [ id:KYoshiaki:20080413 ] で書いたように

Practical Common Lisp (Books for Professionals by Professionals)

Practical Common Lisp (Books for Professionals by Professionals)

を読んでいる途中だったのですが、前々から Python に興味があったので、洋書

Learning Python

Learning Python

を購入してみました。Python に関しては

みんなのPython

みんなのPython

を読んだ知識しかありませんし、ほとんど忘れてしまいました。

Learning Python (asin:0596513984) は基本を学ぶには最適な本だと思います。

みんなのPython (asin:479733665X) では理解できなかった while 文の else の動作が理解できました。(他の言語では、あまり見かけない動作です。)

while :

if : break
if : continue
else:

の条件が False になり while ループから抜ける時に が実行されます。
が True で break した後 while ループを抜ける場合は は実行されません。

インタラクティブシェル (対話型シェル) を利用して、試すと

>>> x=5
>>> while x:
...     print x
...     x=x-1
... else:
...     print 'exit'
...
5
4
3
2
1
exit
>>> 
>>> x=5
>>> while x:
...     print x
...     x=x-1
...     if x==2: break
... else:
...     print 'exit'
...
5
4
3
>>>

のような動作になります。同様に for 文にも else があります。

また、何度も object reference、変更可能 (mutable)、変更不可能 (immutable) の違いを説明されます。

例えば、インタラクティブシェル (対話型シェル) を使って説明すると

>>> L = [1, 2]
>>> M = L
>>> L = L + [3, 4]
>>> L, M
([1, 2, 3, 4], [1, 2])
>>> 

ここで
L = L + [3, 4]
は、L = [1, 2] + [3, 4] となり、L に新しく作成したオブジェクト [1, 2, 3, 4] を割り当てています。
その結果
L = [1, 2, 3, 4]
M = [1, 2]
になります。

>>> L = [1, 2]
>>> M = L
>>> L += [3, 4]
>>> L, M
([1, 2, 3, 4], [1, 2, 3, 4])

この場合 L += [3, 4] は L、M が参照しているオブジェクトに [3, 4] を追加しているので L、Mの結果は同じ [1, 2, 3, 4] になります。下の append、extend を利用した例も同じ動作です。

>>> L = [1, 2]
>>> M = L
>>> L.append(3)
>>> L.append(4)
>>> L, M
([1, 2, 3, 4], [1, 2, 3, 4])
>>> L = [1, 2]
>>> M = L
>>> L.extend([3, 4])
>>> L, M
([1, 2, 3, 4], [1, 2, 3, 4])
>>> 

Learning Python (asin:0596513984) は暇を見つけて、こつこつ読んでいます。現在、420 ページほど読みました。Practical Common Lisp (asin:1590592395) は最後まで読んでいませんが、Learning Python (asin:0596513984]) は読破したいですね!