TapkuLibraryを利用してiPhoneアプリ内でカレンダーを表示する

開発途中の覚え書きを兼ねて。

TapkuLibraryというものを利用して、月別のカレンダーをiPhoneアプリに表示する方法を記載します。(Xcode 3.2.6を使用しています)

Tapku:http://tapku.com/

ClassesグループにTapkuLibraryフォルダをドラッグ

1.TapkuLibraryをダウンロード、展開し、”src/TapkuLibrary”のフォルダをXcodeの「グループとファイル」内にあるClassesグループにドラッグします。すると、ファイルの追加方法を求められます。「デスティネーショングループのフォルダに項目をコピーする(必要な場合)」にチェックをして、「追加」をクリックします。

ResourcesグループにTupkuLibrary.bundleをドラッグ

2.続いて、TapkuLibraryと同じ方法で「TapkuLibrary.bundle」をXcodeの「Resources」グループにドラッグ、「デスティネーショングループのフォルダに項目をコピーする(必要な場合)」にチェックをして、「追加」をクリックします。

2つのフレームワークの追加

3.Xcode上のFrameworksグループのコンテキストメニューから「追加」→「既存のフレームワーク」をクリックし、「QuartzCore.framework」を追加。同じ手順で「MapKit.framework」も追加します。

4.Other Sourcesグループ内の「(プロジェクト名)_Prefix.pch」ファイルを以下のように書き換えます。

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
	#import <QuartzCore/QuartzCore.h>
	#import <MapKit/MapKit.h>
#endif

5.1で追加したフォルダの中にある「NSMutableURLRequest+TKCategory.h」と「NSMutableURLRequest+TKCategory.m」をdeleteキーで取り除きます。

"t"で定義されているところが2つも

6.ここでビルドと実行をすると、「TKCategory.m」のファイルにエラーが出ます。”t”で定義されているものが2つあることがわかるので、ここを修正します。

TapkuLibraryのカレンダー

実行結果です。

Apple流儀のMac上でのプログラミング

このブログを含む私に関連するWebページやTwitterには、Mac OS XやiOSで動くアプリの開発をしている旨をプロフィールに記載しています。
Macを含むパソコンやiPhone/iPadの自分なりの使い方を模索したり、紹介することはありましたが※、アプリ開発(プログラミング)に関連する話題をネット上ですることは、今までにありませんでした。

※正直なところ、この下線部をしている時の方が自分にとっては楽しく、それが習慣になってしまっていたため、アプリ開発の方はいつも後回しになってしまっていました。ですが、既にあるものを使いこなしていくだけではなくて、自分自身で、ソフトウェアを作ることによって、 MacやiOS端末で「できること」を増やしたいなと思う気持ちは変わっていません。

この春からは、そのような話題もネット上で出していきつつ、モチベーションと技術力の向上に繋げられればいいなと思います。

今回の記事では、私が「これで何でも作れるようになりたい」と思っている、”Mac上でアプリケーションを作るための技術”をまとめたいと思います。

今日、Appleが販売しているパソコン「Mac」には、「Mac OS X」というOSが搭載されています。「Mac OS X」が登場する前のMacには「Mac OS」という名のOSが搭載されていました。
「Mac OS X」の「X」の意味は、Mac用のOSでバージョンが10番目(ローマ数字のX)にあたるということと、Mac OS X(前身のNEXTSTEP)がUNIX系の技術を採用していて、そのUNIXの”X”を取ったということが挙げられます。 「Mac OS X」と書いて、「まっくおーえすてん」と読みます。

Appleのスティーブ・ジョブズCEOは、1985年にAppleを追放されてしまいました。その後、NeXTという会社を設立し、NeXT社オリジナルの教育・ビジネス向けのワークステーションを販売していました。そのワークステーションには「NEXTSTEP」というOSが搭載されていました。

スティーブ・ジョブズ氏がアップルに復帰する直前の1996年、Appleでは「Mac OS」に代わる新しいOSをMacに搭載しようという計画が立っていました。その次期OSでは外部の技術を新しく採用することになり(なんとMicrosoftのWindows NTも候補のひとつでした)、幾つかの会社の製品の調査を行った後、NeXT社の「NEXTSTEP(この頃にはOPENSTEPという名称に変わっています)」を次期OSの技術として採用することになりました。NeXT社はアップルに買収され、スティーブ・ジョブズ氏もAppleに復帰することとなり、後にCEOの座を取り返しました。

Mac OSはMac OS Xが開発される中、2001年まで改良が重ねられました。
最後のMac OS 9では非常に安定したOSとなり、たくさんの新機能も盛り込まれていたことと、当時のアプリケーションを今でも大切に使いたいという理由から、Mac OS 9を現在でも愛用するユーザーがいます。一例として、印刷業を営む事業所へ赴くと、まだMac OS 9が活躍する姿を現役で見ることができることがあります。

2000年、NEXTSTEPの技術を採用したMacの新しいOS「Mac OS X」が登場しました。

さて、Mac OS X向けのアプリケーションを開発するための新しいAPIとして、「Cocoa」というものがあります。iPhoneやiPad、iPod touchのOSはMac OS Xの技術を使った「iOS」と呼ばれるもので、iOS向けのアプリケーションを開発するためのAPIには「Cocoa Touch」というものがあります。

CocoaとCocoa Touchを呼び出すにはObjective-Cというプログラミング言語が必要になります。

Cocoaのクラスライブラリの名前は“NS”で始まります。 これは、Mac OS Xの前身である「NEXTSTEP」の略であり、Mac OS X上でアプリ開発を行う際には、今でもNEXTSTEPの名残を感じることができます。

Mac OS XにはCocoa以外のフレームもあり、その代表として「Carbon」というものがあります。
Carbonは過去のMac OSで動いていた機能をMac OS X上でも動かせるようにすることが目的で作られたものです。
初期のMac OS Xに標準で搭載されていたアプリケーションの中にはCarbonで作られたものがたくさんありましたが、現行のMac OS X 10.6 Snow Leopardではほとんどの標準搭載のアプリケーションがCocoaで書き直されています。更に、Cocoaは64bit環境に対応していても、Carbonは64bit環境に対応していません。iOSにもCarbonは移植されていないので、今後はCocoaやCocoa Touchで作られるアプリケーションが格段に増えていくのでしょう。

それで、私はCocoaとCocoa Touchを自由自在に操れるようになれたらいいなといつも思っていて、非常にロースペースながら、Mac上で自分のアイディアを使ったiOSのアプリを開発しています。

次のアプリ開発に関連する記事では、技術面での深い話題や、開発途中の覚え書きなどを書けるようになれたらいいなと思います。

目標へのステップでトラブルにぶつかる-その2

前の記事からの続きです。
トラブルの核心に触れていきたいと思います。

下記の話は、3月26日(金)から4月1日(木)までにあった出来事です。

私は、iPhone Developer Programへの加入手続きを始めました。加入手続きはアメリカのアップルのサイトで行うのですが、入会費用の支払いは日本の「Apple Store」のページで行います。

しかし、その肝心のApple Storeで「iPhone Developer Program」の権利をカートに入れて、「ご注文手続きへ」のボタンをクリックすると、Mac OS XのSafariに『サーバとの接続が予期せず解除されました』と表示されてしまうのです。

Safariのリセット(Cookie、キャッシュ等全て)をしても、改善しませんでした。

Apple Developer Connectionの、日本のサポート先へ問い合わせをしてみました。
『WindowsのInternet Explorerで手続きを行うとそのようになる場合がございます。Mac OS XのSafariやFirefoxで手続きを行ってください。』という返答を頂きました。

「既にMac OS XのSafariで手続きをやっているんだけどなぁ…試しにMac OS XのFirefoxでやってみるか。」
Firefoxでも、Safariと同じようなエラーになってしまいました。

「あれ、MacBookのネットワーク設定がおかしいのかな、iMacでやってみるか」
私は、登録手続きをMacBookで行おうとしていました。普段、プログラミングはMacBookのみで行っているからです。
iMacのSafariで手続きを試してみたところ、問題は発生しませんでした。

「これはMacBookが不調なんだな。ちょうどOSの起動が遅くなってきたように感じてるところだったし、ついでだからOSの再インストールをやっちゃおう。」

そこでMacBookのOS再インストールを開始。
しかし、OSの再インストールをしても、Apple Storeでエラーが出る問題は解決しませんでした。

仕方が無いので、とりあえず iMacでiPhone Developer Programへの全ての手続きを済ませました。

この後、MacBookでApple Storeへアクセスし、SafariとFirefoxで下記のことを試してみました。

  1. Store画面右上の「アカウント」をクリックする
  2. Apple IDでログインする
  3. 「ご注文状況/購入履歴」をクリックする
  4. Store画面右上の「アカウント」をクリックする
  5. 「保存されたカートの中身を確認する」をクリックする
  6. ID・パスワード再確認の画面が出るので、Apple IDとパスワードを入力する
  7. 保存されたカートの確認画面が表示される
  8. Store画面右上のアカウントをクリックする
  9. Storeホームへ行く
  10. 画面右上の「アカウント」をクリックする

Safariでは必ず、8番目のところで必ず「ページを開けません」となってしまうことがわかりました。
OSの再インストール後は、Firefoxではエラーが出なくなり、正常な動作をするようになりました。

登録手続きを済ませた後、私は「早く、今作っているアプリをiPhoneで動かしてみたい!」
という気持ちだったのですが 、「iMacのSafariでは正常でも、MacBookのSafariでは上記のようなエラーを吐かれる」という状態に違和感を感じ、原因を突き止めてみることにしました。

そして、原因を突き止めるところまでには達しませんでしたが、SafariでApple Storeをブラウジングしたときにエラーが出る“条件”を見つけることができました。

  • MacBookのAirMac(Wi-Fi)を使わずに、有線LANで接続をした状態では、Apple Storeでエラーが出ることはない。
  • VMware Fusion 3がインストールしてある状態では、有線LAN、無線LAN両方の条件でApple Storeでエラーが出る。
  • Firefoxでは問題ない。

上記の3つの“条件”を見つけることができました。

「私はSafariが気に入っているので、ウェブブラウジングにはSafariを使いたい。Apple Storeを使うときには有線LANでインターネットに接続すればいい訳だし。」
という風に思うのですが、VMware Fusion 3をインストールしたときに、有線LAN、無線LAN全ての条件で問題が発生してしまうようになってしまいます。これは非常に残念です。VMware Fusion 3でWindowsを使ったり、Linuxの色々なディストリビューションを試してみたりと、仮想マシンを使って色々やってみたかったので…

「他の仮想化環境を使うとしたら、無料で使えるVirtualBoxを使うしかないかな。VMware Fusionを買う以前は愛用していたけれど、VMware Fusion 3の方が多機能で高速に動くしなぁ…」
「VMware Fusion 3は、Boot CampでインストールしたWindowsを仮想マシン上で動かせる機能が便利だったのに」
「もしかしたら私は、MacでWindowsを使うことが許されないのかなぁ…」

Mac OS Xの再インストールをする際に、HDDを全体的に初期化しました。Boot Campに入っていたWindows 7は、これで消してしまったことになります。

MacBookでMac用アプリやiPhone用アプリのプログラミング…Boot CampやVMware FusionでWindows 7!
Windowsには、Windowsでしか味わえない楽しい世界があります。
色々なゲームや楽しいアプリケーションなど…

でも私は、iPhoneやMac OS Xのアプリで自己表現をしてみたいと考えていて、Cocoaプログラミングの勉強をしています。

「これは、Windowsで遊ぶことは考えずに、アップル製品に集中しろという誰かからのお告げなのかもしれない…」

VMware Fusion 3とWindows 7は、今はMacBookには入っていない状態です。

VMware Fusion 3だけを諦めて、Boot CampでWindows 7を使うだけだったら、Mac OS X上のSafariに支障は出ないと思いますが、今はWindows 7のMacBookへのインストールを考え直しているところです。自分の気持ちのために。
Safari以外のブラウザを使えば問題ないのですが…Safariで問題が出ることを考えると、なんとなく気持ち悪い。

上記のトラブルの件は、Apple Storeのサポートセンターへメールで報告をしました。
Apple Storeとのメールのやり取りは、非常に気持ちがよく、迅速でした。

MacBook上でiPhone Developer Programへの入会が順調に進めば、私は鉄道を利用して1泊2日の旅行へ行くことを検討していました。

その旅行に行けなかったので、 私は2日の金曜日の午後から東京へブラブラと出掛けてきました。
東京への外出のお話は、またまた次回へ続きます…

目標へのステップでトラブルにぶつかる-その1

先日の「とあることで精一杯だった3月最後の週」についてのお話です。
長らくお待たせいたしました…

まずは、トラブルに入る前の経緯に触れます。

私は、Mac OS X上で行う「Cocoaプログラミング」を大学以外のところで勉強しています。(大学ではWindowsしか使わないので、Cocoaプログラミングを教わることはできません)
Mac OS XやiPhoneのアプリケーションは、このCocoaプログラミングの技術によって作ることができます。

このプログラミングを行うには、Xcodeという開発環境のプログラムが必要です。iPhoneアプリを作りたい場合には、Xcodeと「iPhone SDK」という追加のプログラムがXcodeに必要になります。iPhone SDKには、「iPhone Simulator」というプログラムが含まれていて、iPhone向けに作ったアプリを、Mac OS X上でiPhoneアプリがきちんと動作するかを確認することができます。

Xcodeは、Mac OS Xのインストールディスク内に入っていて、手動でそれをインストールすると、Mac OS X上で使うことができるようになります。

Xcodeの最新版と、iPhone SDKは、米アップル社の「Apple Developer Connection」に入会すれば、Apple Developer ConnectionのWebサイトからダウンロードすることができます。
XcodeとiPhone SDKをダウンロードするだけの場合なら、Apple Developer Connectionへ入会するときは、無料登録をするだけで済みます。

XcodeでiPhoneアプリを作って、iPhone Simulatorで動作確認。そして実際のiPhone本体でテスト…
実際のiPhone本体でテスト…そして、App Storeで完成したiPhoneアプリの配布・販売…

作ったアプリをiPhoneの実機で動作確認をする作業と、完成したiPhoneアプリをiTunesの「App Store」で配布や販売をする場合には、有料の「iPhone Developer Program」への登録が必要になります。スタンダードプログラム(アプリの配布・販売をする場合はスタンダードに入会する)の料金は、1年間で10,800円です。

私は今まで、iPhone Developer Programには加入していない状態で、iPhoneアプリのプログラミングを勉強していました。

「だんだんとアプリの作り方が分かってきて、iPhone Simulatorでの動作確認だけでは、まだプログラムの仕組みを覚えることができていない気がする… 」
「私は、iPhoneで欲しい・実現してみたいアプリがあるから、今こうやってプログラミングの勉強をしている。」
「iPhone Simulatorでは、一連の動作確認をすることはできる。しかし、iPhoneに内蔵されているカメラやマイクなど、ハードウェアの機能までシミュレートをすることはできない」
「いつかは完成したアプリを“配布・販売”することになるんだから、iPhone Developer Programへ加入しちゃおう!」

と、いうことで、iPhone Developer Programへの加入手続きを、3月末〜4月初旬に行いました。

その手続きの最中に、ドツボにはまってしまったわけでございます。

その内容は、次の記事で触れます。