iPhoneアプリ?何それおいしいの?

iPhoneアプリ?何それおいしいの?

インフラエンジニアがiPhoneアプリを作るまで...

Amebaでブログを始めよう!
奴 : 「なんかかなり間が空いちまったな」


私 : 「まぁ気にするな、それでは実際にアプリを作ってみよう!」


奴 : 「あれ?、おぶじぇくてぃぶなんたらの勉強は?」


私 : 「はいそこ、Objective-Cね。」


奴 : 「それそれ、そんな感じの奴」


私 : 「そんな感じの奴て。。。」


私 : 「Objective-Cの勉強からガッツリ入ろうかと思ったが、作りながら学んだ方が退屈しないかなと」


奴 : 「なるほど!、じゃあさっさと作って売っちまおう!」


私 : 「売れるものが作れるのは当分先だと思うが…その意気だ!」


私 : 「それでは作ってみよう!、最初は何と言っても『Hellow World』だな」


奴 : 「世界よ、こんにちは??」


私 : 「慣習というか何と言うか…プログラミングの勉強を始める場合には、まずその言語で画面に『Hollow Wolrd』と表示させるところからスタートするという、古くからの習わしがあるのだよ」


奴 : 「ほう…つまり画面に文字をだせりゃいいんだな?」


私 : 「そういうことだな」


私 : 「さて、ここからは未知の領域だから、参考書とネットの情報を漁りながらマスターしていこう」


奴 : 「まぁ楽勝だな」


私 : 「(何だその根拠のない自信は…) それじゃあXcodeを起動だ」


奴 : 「この青い板にハンマーのアイコンだな」


私 : 「新規プロジェクトを作成で、テンプレートにView-based Applicationを選択して、名前は分かり易く『HellowWorld』にしとくか」

$iPhoneアプリ?何それおいしいの?

$iPhoneアプリ?何それおいしいの?




奴 : 「これがプロジェクトの名前になるのか…何かプログラムらしくなってきたな」


奴: 「ところで『View-based Application』ってなんだ??」



私 : 「作ろうとするアプリに合わせて、テンプレートを選べば、自動的にそのアプリを作り易い構成にしてくれるんだが、「1つの画面で作る簡単なアプリ」の場合は『View-based Application』が最適ってことらしい」


奴 : 「なるほど…他のはどうなってるんだ??」


私 : 「中々、勉強熱心じゃないか、簡単に纏めてみたぞ」


View-based Application:
画面1つを使用したアプリケーションを作るテンプレート(画面の追加は可能)

Utility Application:
画面2つ(表と裏)を使用し、タップすると画面が切り替わるアプリケーション用テンプレート

Tab Bar Application:
複数の画面をタブで切り替えて使用するテンプレート

Navigation-based Application:
複数の画面が階層構造になっているテンプレート

Open GL ES Application:
2Dや3Dをグラフィックを描画する機能をもったテンプレート(主にゲーム用)

Split View-based Application:
画面を左右に分けて表示するアプリケーション用テンプレート(iPad用)

Window-based Application:
何もないWinodowだけのテンプレート(全てから自作したい場合に使用)

奴:「
Ebi-Fried Applocation:
エビを衣で包んで油で揚げる場合のテンプラーと(空腹時に使用)



私 : 「今、変なの混ざってなかったか??」


奴 : 「気のせいだ、次はどうするんだ?」


私 : 「プロジェクトの画面が開いたな」


奴 : 「何か右側に沢山ファイルっぽいのががあるな」


$iPhoneアプリ?何それおいしいの?


私 : 「まず、どのファイルが何なのかざっくり分かってないと始められんな」


奴 : 「それじゃ説明よろしく、終わったら起こして。。。」


私 : 「永久の眠りにつかせてやろうじゃないか」


奴 : 「ハハハ、じょ、冗談に決まってるじゃないか、右手の鈍器を下ろしたまえ」


私 : 「それじゃ各ファイルについてざっくり調べてみよう」


奴 : 「OK!(冗談が通じない奴だ。。。)」


私 : 「今あるのは...」

CoreGraphics.framework
Foundation.framework
UIKit.framework
HellowWorld.app
HellowWorld-Info.plist
HellowWorld_Prefix.pch
HellowWorldAppDelegate.h
HellowWorldAppDelegate.m
HellowWorldViewController.h
HellowWorldViewController.m
HellowWorldViewController.xib
main.m
MainWindow.xib

私: 「この13個だな」


奴 : 「そうか…じゃあ諦めよう」


私 : 「こらこら、数に圧倒されるんじゃない」


奴 : 「えー、13個覚えるとかぁー、マジ無理じゃなくなくなぁーい?」


私 : 「なくなくなーいってどっちやねん!、中身が分かればそんなに複雑な話じゃないぞ」


奴 : 「それは無理じゃなくなくなくないかも知れないな」


私 : 「そうだろう(無理なのか?無理じゃないのか?)」


私 : 「簡単に調べてみたぞ」

XXXX.framwork : フレームワーク(プログラムでよく使う機能を纏めたもの)を使用するためのファイルで、直接触ることはない。必要なフレームワークがあれば追加する。

CoreGraphics.framework : グラフィック関連のAPIを実装
Foundation.framework : Objective-Cの基本的なクラスを実装
UIKit.framework : iPhoneアプリに必要なクラスを実装

私 : 「frameworkファイルはよく使う機能をひとまとまりにして、それを呼び出すだけで使えるようにするファイルってイメージだ」


奴 : 「つまり、いちからプログラム書かなくても、フレームワークを使うだけで簡単にプログラミングができちまうと?」


私 : 「そういうことだな、例えば画面に画像を出すだけでも一から作ったら大変だから、画像を読み込ませるだけで、面倒くさいとこはフレームワークさんが残りをやってくれるってわけだ」


奴 : 「なるほど、つまりフレームワークを使いながら、自分たちが必要なプログラムを作って、フレームワークがあるとこはフレームワーク使えば楽なんだな」


私 : 「もちろん、フレームワークじゃ性能や処理に問題がある場合は、フレームワークで同じような機能があっても一から作らないといけない場合もあるけどね」


奴 : 「そんなコアなところをいじるのはまだまだ先の話だな…」


奴 : 「ところで先生!APIとクラスって何ですか!」



私 : 「APIってのはアプリケーションプログラミングインターフェースの略で、プログラム上の面倒くさい手続きとかを纏めておいて、呼び出すだけでそれを使えるプログラム群ってイメージかな」


奴 : 「ほうほう」


私 : 「クラスってのは、追々説明するけど処理(関数)や変数を一つのまとまりにしたものだな」


奴 : 「うーんうーん」


私 : 「膨大な1個のプログラムを作るのではなくて、必要な処理をクラス単位に分けて複数のプログラムを作り、それを組み合わせて必要なときに必要なクラスを使って処理をするようなイメージだ(厳密に言うとクラスから生成したインスタンスだが)」


奴 : 「うーんうーんーうーん…..プシュー!」


私 : 「難しすぎてショートしたか!」


奴 : 「なんとなくわかった!」


私 : 「理解してくれたか(プシューって理解した音なの?)」


奴 : 「よし残り10個だ!」


私 : 「長くなってきたから今日はここまでだな、続きは次回だ」


奴 : 「さーて、来週のワタシさんは!

奴、アプリで大成功!!
奴、大金持ちになる!!
奴、ハーレムでウハウハ

     の3本です!



私 : 「まぁ努力次第だな。。。」


続く…