カテゴリー「Mac」の34件の記事

2010年3月30日 (火)

[iPhone] 忙しいときほど縁は重なるようで

先日、書籍の査読依頼を受けたという話を書きましたが、昨日はさらに

 「自分たちの会社で作っている商品について、こういうiPhoneアプリを作ってくれないか」

という話が来ました。

自分の技術力の無さに苦労しているため受託は微妙ですが(たぶん無理なので要件を引き出しておいてから他の開発者を紹介するなど)、まあともかくとして、ありがたいことです。

本当は、こういうのをサラッと作ってあげられる実力がほしいなり。
道は遠いなり。

| | コメント (0) | トラックバック (0)

2009年5月31日 (日)

[育児] カッとなってやってしまった

我が家の長男(4)の間でひそかなブームとなっているサウンドロップ。岐阜の実家に帰省した際、ボクの弟からスーパーマリオの音が鳴るバージョンのを2つもらったのをきっかけに、ハマってしまっているようです。

で、今日本屋のガシャポンで同じスーパーマリオのサウンドロップを買ってあげたところ、持っている音と同じものが出てしまいました。

これまで「欲しい」と言ってもずっとガマンさせていて、そして今日は特別だよという条件で買ったら同じもの。長男、それなりにショックだったようです。背中が小さかった。

 

「これはちょっとかわいそうかな・・・」と思い、息子が寝てからカッとなって2時間
やってしまいました。

    Illegalsoft

ココのFlashファイルを参考にして、画面上のアイコンを触ると関連したサウンドが鳴るようになっています。スターやコインの色がおかしいのは、アニメーションしている途中のキャプチャ画面だからです。本物さながらに動いています。

さらにスーパーマリオのサウンドロップは8種類しか出ていないですが、これは22種類。長男もきっと満足してくれるでしょう。

−−−

・・・はい、お察しのとおり、このソフトは各方面の著作権をバリバリに侵害しています。なので一般公開などは絶対に出来るわけがありません(任天堂を敵に回したくはないですから)。個人での使用、ということで長男が飽きたら消す予定です。

ioxさん、ごめんね。

| | コメント (2) | トラックバック (0)

2009年3月29日 (日)

[Mac] iPhoneアプリをAppleに申請しました。

   Gametitle   Gamescene_2

とうとう、初のiPhoneアプリをAppleに申請しました。「Mosquito Attack」という、湧いてくる蚊をただひたすらに潰して時間をつぶすゲーム(?)です。蚊の音もリアルにうなりますので、スピーカーで遊べば色々な応用も利くという素晴らしいアプリケーションです。0.99¢、115円での販売です。
(なぜこんな意味不明なアプリを最初に作ったのか自分でもよく分かっていませんが、その辺はお察しください)

ただ、まだ一般リリースには間があって、

  1. Appleによるリリース前検査
  2. 問題が無ければiTunes Storeに陳列!
    1. 問題があれば修正して再申請

というフェーズを経てようやくリリースと相成ります。ちなみにアプリの説明サイトはここに作りました(ドメインを変更しました)。

ジョークソフトみたいなものとはいえ、よく頑張ったよ。>自分
今日はもう寝ます。

作成したアプリのマーケティングについても考えたのですが、今回はあまり手を打たないことにしました。

  • まだアプリの種類が1つしかないため、ジョークソフトというある意味で呼び水的なアプリも意味をなさない
  • 現時点での広告により自分のソフトに対する方向性の認識が固まってしまうのを避けたい

という点を考慮したためです。だから、妻よゴメン。今回はほとんど収益には結びつかないです。

というわけで、おやすみなさい。

| | コメント (8) | トラックバック (0)

2009年3月20日 (金)

[Mac][日記] EINを取得

有料のiPhone用アプリを海外展開する場合、アメリカと日本での二重課税を避けるために米IRSに対してEIN(Employer Identification Number)の取得申請が必要です。

正確には法人の場合にのみ必要で、趣味でやるような個人事業主の場合には必要ないとのことですが、EINが無いとW-8BENを3年ごとに再申請する必要があったりするのでとりあえず必要と書いています。

そこで1週間前に申請用の用紙SS-4(PDF注意)を記入し、アメリカにFaxしました。
ところが今日も何の音沙汰がありません。

そろそろ初アプリの完成も近付いているので早く欲しいなと思って、IRSに直接電話して催促することにしました。

・・・いやあ緊張しました。何とか無事にEINを聞き出せたものの、Pardon me?の連続でした。
普段も英語をそれなりに使っているので、まあ大丈夫かななんて思っていましたがとんでもない。いかにボディランゲージを多用していたかを痛感しました。

あぁ、英語をもっと勉強しないとなあ、と思った休日前の深夜1時でした。

| | コメント (0) | トラックバック (0)

2009年3月13日 (金)

[日記][プログラミング] 近況報告と、高校数学(をマジメにやらなかったことの代償)

Rotatedirection_2 「ちょっと、最近あなたたちちゃんと生きてるの?」

みたいなことを実家の母から言われたので、生存報告がてらの状況報告です。

ハイ、みんな元気です。

長男は一昨日吐きましたが今はケロリとしていて、次男は中耳炎になりかけていたのですが元気でよく食べていて、妻は育児にてんてこまいで、ボクは花粉症が始まって仕事が手に付かない、という状況ですよ〜。
(最後のはどうなんだと自問自答)

 −−−

えっと、ついでにiPhoneアプリを開発していてつまづいたことも報告しておきます。

ここ数日、2点からなる直線に対する法線の角度と、画像に指定する回転角度とが、どうしても一致しなくてウンウン悩んでいました。ところが今朝ふと思い立って図示してみたら何のことはない、両者の回転方向が逆になっていることが判明しました。

図にすれば一目瞭然なんだね、と改めて思うと同時に、高校数学くらい覚えておけよと反省です。
ちなみに2点からなる直線の角度を求めるのに使ったソースはこちら。

#define PI 3.14159265358979323846
#define RADIANS_TO_DEGREES(x) (180.0 * x / PI)

CGFloat angleBetweenPoints(CGPoint first, CGPoint second) {
        CGFloat height = second.y - first.y;
        CGFloat width = first.x - second.x;
        CGFloat angle= RADIANS_TO_DEGREES(atan(height/width));

        if (second.y < first.y && second.x > first.x) {      
                return angle;
  // 角が第1象限にある
        } else if ((second.y < first.y && second.x < first.x) ||
                           (second.y > first.y && second.x < first.x)) {
                return angle+180;
  // 角が第2または第3象限にある
        } else {
                return angle+360;
  // 角が第4象限にある
        }
}

アークタンジェントatanが返す値は座標の存在する象限によって変化するので、それを吸収してあげるのがポイントです。

今後は計算コスト削減のために、degreeにいちいち変換しているのをradianのままで計算できるようにしてあげないとなあ。

| | コメント (0) | トラックバック (0)

2009年2月14日 (土)

[Mac] iPhoneアプリの開発者になります。

        Hello

ここ最近ずっと悩んでいましたが、本日、年間10800円のiPhoneデベロッパープログラムに加入しました。これで何が出来るかというと、

  • iPhone/iPod touch向けアプリケーションの開発・販売

です。つまり、自分の作ったアプリケーションを全世界に向けてリリースし、体験してもらうことができるようになるのです。

iPhoneアプリの開発も、そもそもソフトウェア作成の経験が少ない状況で、「そんなことしなくても」とか「まだ実力不足で早すぎるのでは?」とも思いました。ですが、コストをかけること、世界中を相手に勝負していくことのプレッシャーに晒されることへの自分の成長を期待して、1歩を踏み出すことにしました。

成長すれば家族への自分なりの還元もできますし、有料の(面白い)アプリを作れば小銭くらいは稼げるかもしれませんし、ね。←こっちが本音?

いざソフトがリリースできたらこのブログで紹介しますので、皆さん買って使ってくださいね!

iPhone用開発キット(iPhone SDK)は誰でもダウンロードできて使えるのですが、動作はシミュレータ上に限られていて、実機上で動かすためにはプログラムに加入しないといけないのです。
(実はjailbreakしてもSDKで作ったプログラムは動かせないです)

| | コメント (4) | トラックバック (0)

2009年2月13日 (金)

[プログラミング] 猛勉強中

iPhoneアプリで一儲けしようと世間に新しい経験をしてもらおうと、目下Cocoa&Objective-Cを勉強中です。

 

ところで勉強を重ねるごとに、「言語が思考を規定する」という感覚が「ライブラリ→コンポーネント→フレームワーク」の順で強くなっているのを感じます。.NET FrameworkとPOSIXライブラリくらいしかまだきちんと比較したことがないのですが・・・。

何というか、POSIXは良くも悪くもローレイヤでのトピックが多いのに比べ、.NETは手当り次第にオブジェクト指向(ただしGUIの設計方法はMVCを全く意識しづらいインタフェースになっているのが気持ち悪すぎ)だし、CocoaについてはMVCの見事な分離と委譲(delegate)・データソースの考え方がすばらしい(けれどフレームワーク外の作業はPOSIXべったり)。

どれも一長一短で、学んでいる側としてはこれほど刺激になることはないですね。
このフレームワークの概念、Javaについては他の言語よりもずっとバリエーションも豊かで先を行っていると思うので、こちらもちょっと触っていってみるべきかもしれないなと、.NETでのソケット実現のスマートさに驚きながら思ったのでした。
Concurrentパッケージも気になるし。

コンピュータには面白いことが沢山ありますな。
こうして得られた技術を使って、家族やみんなが幸せになるようなものが作れたら、開発者冥利に尽きるというものです。

さあ、またがんばるぞ。

| | コメント (0) | トラックバック (0)

2009年1月27日 (火)

[Mac] NSTextFieldで役立ちそうなdelegate

Cocoaで気づいた点を箇条書き。
つまり、息子と遊びほうけているだけじゃなくてプログラミングの勉強もしていますよアピールの記事です。というわけで興味のない方は無視してくださいな。

2009/1/28追記:delegateはNSControl経由で呼ばれていることが判明。なので実装するメソッドもcontrolからのメソッドとして書かないといけない。
なぜNSTextFieldから直接呼ばれるのではなくNSControlを経由するかという理由はここに書いてあった。つまり、複数のNSTextFieldのdelegateを持っているときに、どのオブジェクトからのメッセージかを明確にするため、だそうで(意訳なので不安)。

テキストフィールド(NSTextField)のdelegateをオブジェクトと接続しておくと、少なくとも

  • テキストへの入力開始:control:textShouldBeginEditing
  • テキストフィールドへの入力終了(改行やフォーカスアウトなど):control:textShouldEndEditing

のタイミングで各メソッドが呼ばれます。他にもあるけれど、それはマニュアルを読めば分かるのでここでは置いておきます。

あと、実行中動的にdelegateに対して何が投げられるかをチェックしたい場合は、そのオブジェクトに以下のコードを埋め込んでおけばOK。すると何かdelegate経由で呼ばれるたびにコンソールにメソッド名を出力してくれるので、理解が進んで良い感じ。

- (BOOL)respondsToSelector:(SEL)aSelector
{
    NSString *methodname = NSStringFromSelector(aSelector);
    NSLog(@"respondsToSelector:%@", methodname);
    return [super respondsToSelector:aSelector];
}

※先日購入した洋書:「Cocoa Programming for Mac OS X」のp.109に載っていたコードです。

・・・それにしても、Objective-Cのdelegateの仕組みって優れているなと改めて思います。Javaのインタフェースだと、インタフェースに宣言されているメソッドを全て実装しなければならないのに対して、delegateは必要なものだけ実装すれば良いわけで(メソッド呼び出しが無視される)。

delegateの「実装していないから無視するよ」というのは静的言語の一般概念からすると有り得ないくらいの自由を与えてくれる仕組みですね。
※ちなみにJavaのインタフェースと同じように、メソッドの実装を義務づけたい場合はプロトコル(Objective-C2.0だと@required相当)を用いれば良いです。

では!

| | コメント (0) | トラックバック (0)

2009年1月 6日 (火)

[Mac] とりあえず、近況報告です

最近ブログを書いていないことへの、言い訳気味の近況報告です。

えっと、これまでこのブログでポラロイド写真のように縁取り&昔風エフェクトを入れていたプログラム(MagickCam)が、オリジナルのImageMagick&RMagickがバージョンアップしたとたんに動かなくなってしまいました。

そこで今はTiger以降に搭載されているQuartzComposer(OpenGLによるビジュアルプログラム作成環境)を使って、同じ機能を実現するアプリを作成中です。

下の動画みたいなのを作ったりと頑張ってますので、待っててくださいね。

| | コメント (2) | トラックバック (0)

2008年11月25日 (火)

[Mac] Appleに拙作アプリが登録されました。

Macを作っているAppleのソフトウェア紹介コーナーに、私の作成したアプリ「WeatherRader」が紹介されました。

  「WeatherRader」
   http://www.apple.com/jp/downloads/dashboard/information/widgetrader.html

しかも、現在はDashboardソフト紹介のトップページでも紹介されています。記念のスナップショットを下に載せておきますね。

Mywidgetsnapshot_mini

惜しむらくはアプリの名前が「WeatherRader」ではなく「WidgetRader」と登録されてしまったのが何だかな、というところではありますが、嬉しいものですね。

バージョンアップや、別アプリの開発も続けていこうと思いますので、そこんとこよろしくお願いします。

| | コメント (2) | トラックバック (0)