2009/08/30

iPhoneアプリをリリース (2)

 リリース依頼をしてから13日。すっかり言語開発モードに入ってしまったのですが(汗、先程確認したらiPhoneアプリがApp Storeで公開されてました。名前は、

PuchiPuchi (プチプチ)

です。ご想像の通り、あのプチプチ潰せるものをiPhoneで体感出来ます。有料(115円)では更に高機能なものがあったりするのですが、そこまで必要ないもののプチプチしたいじゃないですか。それなら作ってしまおうと。

是非使ってみて感想をもらえると嬉しいですm(_ _)m。

ダウンロード : PuchiPuchi (iTunes Music Store)

2009/08/28

OS X Server on VMware Fusion (2)

 うーん。設定はほぼ完了したのですが、(サーバー管理から実施する)Apacheのアップグレードが出来ません。

 1.3から2.2へバージョンアップしてくれるのですが、PowerMac G5でセットアップした時にはエラーは無かったんですよね。検索してみるとそれらしい答えはあるのですが、どうも/etc/apache2/site内の*.confの記述がおかしいとか言ってる様です。

 じゃあ、その中にあるファイル全部移動したらいいじゃん。と言う事で試しましたが、玉砕。その上の/etc/apache2内のものも対象かと思って覗いてみましたが、先に設定完了済みの*.confが大量にあって諦めました(T-T;。

 結局入れ直して、他の設定の前に実行したらすんなり出来ました。こんな時はスナップショットが有効なので、入れ直す時にインストール直後のスナップショットを取っておく事にしました。ロールバックだけでなく、ロールフォワードも出来ると嬉しいんですけどねぇ。


2009/08/27

OS X Server on VMware Fusion (1)

 コスト削減の一環で、Power Mac G5に入っているOS X Serverを移行しようと考えています。工事中はプロジェクトページにつながりにくい事が予想されますが、ご了承ください。

 redmine, subversion, 内部DNS, OpenDirectoryがメインなので、そんなにデータ量も多い訳ではなく負荷も少ないんですよね。データの管理もあるので紛失しない事を優先していましたが、電気代(これが大きい)と天秤にかけて実行する事にしました。

 肝心の内容ですが、VMware Fusion上でMac OS X Server 10.5を運用します。experimental supportって書いてありますが、上手く行けばサーバーごと要らなくなりますので、やってみる価値はありそうです。

 インストールしてみた感じは良さそうなので、続きは後ほど投稿します。


2009/08/26

Qtで言語を作る (3)

 2回目で挙げた必要なライブラリの中に、入れ忘れていたものがありました。それは、
正規表現
プログラムを書いていても触れる機会が無かったりするものです(無くても書けるから)が、知らないとかなりの時間を浪費すると思います。

 例えば、C言語の変数の仕様を正規表現で表してみる事にしましょうか。仕様自体は、

  1. A〜Z a〜z 0〜9 _(アンダースコア)で表現する。
  2. ただし、先頭の文字は、英字またはアンダースコアで始まる。

と書いてありますので、実際に表現してみるとこんな感じになります。

^[A-Za-z_]{1}[A-Za-z0-9_]*$

{1}は要らないとか、もっと簡潔に書けるよぉって言われそうですが、ここは我慢してください。この表現の詳細を見ていきましょう。各表現は次の様に対応します。

  • ^ => 文字の始めに当てはまる。
  • [ ] => 括弧内にある任意の文字に当てはまる。
  • - => (括弧内にて)文字の範囲を表す。[A-Z]は大文字のA〜Z。
  • { } => 前方に現れた正規表現の繰返しを表す。{3}は3回の繰返し。
  • * => 前方に現れた正規表現の0回以上の繰り返し。
  • $ => 文字の終わりに当てはまる。

となります。これを先の仕様に当てはめると、

  1. [A-Za-z0-9_]*
  2. ^[A-Za-z_]{1}

になりますので、それぞれを足して^[A-Za-z_]{1}[A-Za-z0-9_]*$となる訳です。では、どんなケースでの使用が想定されるのでしょうか。Qtのドキュメントには、

  • 検証
  • 検索と置換
  • 文字列の分割

とありますので、検証をしてみましょう。実際のコードはこうなります。

// QStringはunicode文字列を格納出来るクラス
QString s1 = "x_data";
QString s2 = "0_data";
bool b1,b2;

QRegExp e( "^[A-Za-z_]{1}[A-Za-z0-9_]*$" ); // さっきの正規表現
b1 = s1.contains( e ); // 正規表現にマッチするので、true
b2 = s2.contains( e ); // 正規表現にマッチしないので、false

コメントに書いた様に、b1は真でb2は偽になります。これで、その文字列がC言語仕様上の変数に値するかどうか判定出来る様になりました。

 後は、変数やら文字列定数等の条件を決め、言語を実行する前の検証に使えばOKです。これから作る言語は、単語の定義を^[A-Za-z0-9]+[A-Za-z0-9-_]*$にしようと思います。


2009/08/24

Qtで言語を作る (2)

 QtってGUIフレームワークの印象が多いと思うのですが、近代的なものも含めてプログラミングに必要なライブラリは大方揃っています。例をとると、

  • List,Map,Hash,Stack 等のテンプレート
  • マルチスレッド
  • マルチランゲージ
  • XML parser
  • WebKit
  • Model View
  • OpenGL
  • DB
  • プラグイン
  • Signal-Slot機構

等々。Qtのクラスに無いものに関しては、CやC++のライブラリの中から拝借出来るので、まず困らないです。C++である事は好き嫌いが分かれるかもしれませんが、大きいプログラムを書く時には、ある程度の型チェックが早い段階で分かる仕組みの方が私は助かります。

 これらのクラスをベースとしてアプリを開発出来るので、開発者は本来のプログラムに集中する事が出来るというのがQtの長所(の一つ)ですが、更に突っ込んで言語を作ろうというのがこの企画です。

 開発者は本来のプログラムに集中するって書きましたが、これだけ豊富なクラスがあっても、本来のプログラムに集中出来ているとは思えませんでした。これはQtが何かに比べて劣っているのではなく、そもそもの仕組みがマズいんです。高度に抽象化されたクラスを設計しても、実際にはそれを使って手続き型に近いコードも書く訳ですから、まぁつまらない訳です。そういう所をなるべく吸収出来るものにしたいと思っています。

 次回は、言語仕様案について更に踏み込みながら、Qtのクラスの使用方法についても書く予定です。


2009/08/21

Qtで言語を作る (1)

 iTunes Connectでは、まだ"In Review"中のiPhoneアプリですが、それはそれとしてメインプロジェクト進めなければなりません。

 企画案出しは終わったので、少しずつプログラムを書き始めています。最終目標は、言語を作る事。開発ツールや書籍への追加投資をするだけの費用は無いので、今有るものでなんとかします。

使用するもの
  • 統合開発環境 : Xcode
  • フレームワーク : Qt (LGPL / Free)
  • モデリングツール : JUDE/Professional

 Qtの場合は、Qt Creatorなる統合開発環境も同梱されてくるのですが、今年リリースされたばかりという事で少し物足りないです。デバッガでQt独自のクラスの中身が確認出来たり、ドキュメント(Assistant)が統合されているのは助かるのですが、カラーテーマの設定があまり出来ないので肝心のコード編集時に疲れます。

 ですが、揃っているAPI群は豊富で(Cocoaとは違って)名称が覚えやすく、cross-platform対応ですので成果を多方面で共有出来ます。挙げていると長くなりそうなので、次回からはQtと言語案について少しずつお話ししていこうと思います。


2009/08/17

iPhoneアプリをリリース (1)

 やっとお盆が終わりました、更新も出来ずに申し訳ないです。。来客が多かったり逆に行かなければならなかったりで、なかなかプログラミングがはかどらないものです。

 とは言うものの、人が沢山居るのであればデバックをしてもらうのには最適ですよね。折角なので、作ったiPhoneアプリを何人かに試してもらいました。

 反応を見る限りは、とりあえずリリースしても大丈夫そうと判断したので、先程iTunes Connectで申請をしました。申請が通ったら(通ると思いますが)改めてご案内します。

 あれ、いつの間にかPay-PalでAmerican Expressが使える様になってますね。念願のVersionsが購入出来そう(^^/。

2009/08/12

SyncMaster LD220G (3)



 ...と言う訳で、トリプルモニタ構成にしてから1週間経ちました。最初のうちは、ブラウザでスクロール中に(OSごと)クラッシュして大変だったのですが1.1.3 Betaを使えば快適です。

DisplayLink : Mac OS X Drivers

 リリースノートにも書いてある通り、3Dアクセラレーションに対応していないので注意が必要です。Beta版でなくとも3D関係はあまり期待しない方が良いですが、今後のアップデートに期待ですね。

 また、アクティビティモニタの画像を添付しましたが、動画再生をするとDisplayLinkManagの負荷が高くなります。MacBook Proのファンが回りっぱなしになるので、負荷の大きいコンテンツは本体側のモニタで再生する方が良さそうです。コレ位の制約はあるものの、

  • 左にXcode製品ドキュメント
  • 中央にXcode(ソースコード)
  • 右にInterface Builderやオーガナイザ

の配置で贅沢に開発出来ますので、ありがたいの一言です。

2009/08/09

研修終了

 はじめてのiPhoneプログラミングによる、iPhoneプログラミング講座研修終了です(^^/。途中、Objective-Cの言語仕様確認もありましたが、実働2週間程度と言ったところでしょうか。

 一番の収穫は、とっかかりが出来た事とAppleのドキュメントに慣れた事。いくら解説書を読んだところで、書いてないものは書いてませんので、開発元のドキュメントが読める状態になっておくと後々重宝します。

 と言う訳で、iPhone用のアプリを作りつつ、遅れ気味のメインプロジェクトGunjou再開しますよ。Objective-Cの[receiver message]の形式も取り入れてみようかと思います。

2009/08/07

iPhoneへアプリをインストール その2

 1万円払ったのに、iPhoneの実機でデバック出来ないってどういう事よ。

の続きです。web上を渡り歩いてここに辿り着いた方は、もう説明なんて聞いていられないと思いますので、結論から。

~/Library/MobileDevice/Provisioning Profiles

を作成して、この中に作成済みのProvisioning Profileを入れてください。後は、Program Potal内のHow Toを斜め読みした程度で大丈夫です。正確に言うと、

Alternatively, you can drag the .mobileprovision file onto the iTunes icon in the dock or copy the file to ‘~/Library/MobileDevice/Provisioning Profiles’. If the directory does not exist you will need to create it.

なので、How Toに書いてある通りで問題ないんですけどね。オーガナイザのProvisioningに追加したら、勝手に作られるものと思うじゃないですか。...とりあえず出来る様になりましたので、加速度センサーで遊んでみようと思います。

2009/08/06

iPhoneへアプリをインストール

 iPhoneプログラミングもそろそろ終わりそうな雰囲気なのですが、

実機でデバックしてません ( ̄□ ̄;)

いや、忘れてた訳じゃないですよ。iPhone Simulatorの出来が良いので、すっかり満足していた訳です(本にも書いてなかったのですが)。


 実機での動作は、iPhone Dev Centerで証明書を取得しないと出来ない様になっていて、それをキーチェーンアクセスとXcodeに組み込むようです。ページにかかれているHow toを流し読みしながら試してみましたが、どうも上手く行かず。明日、まじめにやってみる事にします。


 iPhone関連ですが、後でwikiの技術情報コーナーにまとめますね。

2009/08/05

液晶モニタ その2


 善は急げという事で、SyncMaster LD220G 2台届いたのでMacBook Proに繋げてみましたよ。

 OS X用のドライバもあるのでインストール後、USBポートへ差し込んで完了です(電源は別途必要)。後は、解像度を若干修正してこんな感じです。いやぁ、良い時代になりました。ドキュメントも、UML図も開きたい放題。

 OpenGLを使ったものは使い物になりませんが、それ以外だったら今のところ問題ないです。1週間程使ってみて、また投稿します。

2009/08/04

iPhoneでDB

 ようやくGUI講座から解放され、続きが気になるiPhoneプログラミングですが、
  • settingsバンドル
  • SQLite3でDB操作
を試してみました。

 前者は設定アプリをタップすると現れる、Macで言うところのシステム環境設定に相当するものです。plistを編集・追加するとサクッと出来てしまいます。これは使ってみる価値があると思います。

 後者はDB操作になる訳ですが、iPhoneのライブラリは今のところORM(オブジェクトリレーショナルマッピング)をサポートしていません。ライブラリの出来によっては、SQLが必要になるケースがあるのだから、全部SQLでも良いじゃんって思ったりするのですが、期待をされている方は要注意です(純粋にCの関数群です)。

2009/08/03

液晶モニタ

 第9章があまりにも長過ぎて今にも投げ出しそうなiPhoneプログラミングですが、進むにつれてサブモニタが欲しくなってきました。Mac OS XにはSpacesが付属していて、MacBook Pro(17inch WUXGA)のモニタを使用している事もあり、通常は困りません。

 でも、開発用ドキュメントを見つつ、Xcodeでコードを書きつつ、iPhoneシュミレータで確認だと、その度に画面を切り替える必要に迫られて不便なのです(--;。DVI経由でサブモニタの接続を試みた事も有りましたが、あのごついケーブルをMacBook Proに接続するのと、メインモニタと視線の位置が合わなく不便だったので、そのうち使わなくなってしまいました。

 と思っていたら良さそうなのがじゃないですか、SyncMaster LD220G。発売から半年程経っていて、安いところでは1万5000円位で手に入るので、トリプルモニタも夢ではありませんよ ( ̄□ ̄;)。USB接続なので配線も困らないし、買ってみようかなぁ。

2009/08/01

Objective-C 言語仕様

 昨日は市場調査の為、全く手につかなかったのですが、全部読みましたよ。

Apple Develoer Connection : Objective-C 2.0プログラミング言語

 オブジェクト指向言語での開発経験あれば、この説明で充分に事足りると思います。ソースコードのあちこちに出現する"@"や"[]"も、C言語の拡張を目的としているのが言語仕様というのであれば、なんとか我慢して使えるような気がしてきました。

 抽象クラスの代替えとなる"プロトコル"や、rubyでのmixinに相当する"カテゴリ"の思想も興味深く、今後参考にさせてもらおうかと企んでいます。言語仕様の確認はしておいた方が良くて、

読む時のポイント
  1. オブジェクト指向については、別の本で勉強
  2. 付録から先に読んで、構文要約を頭に入れる。
  3. 9章以降の使用頻度は低いかもしれない。

と心構えしておけば、すんなりと読めると思います。ただ、Cocoaフレームワークについては、殆ど記述がありませんので、別途ドキュメントを見る必要はあります。

 明日からは、iPhoneプログラミングの再開です。
Powered By Blogger