gitとgithub

いやー。1年以上も放置してしまいました。

諸事情があり、公のweb上からは姿を消していた時期がありまして、それ以来、プログラミングも止まったままになっておりました。

それからわたしにもいろいろありまして、今はSEとして仕事をしております。

現在従事している仕事を通して、JenkinsやRedmineなどを覚えるようになりました。
開発ツールといっても、昔に比べて本当に多種多様になったものですねー。

20年前ならたぶん、数十万円という値がつけられていたんじゃないかと思われるツールも、今はオープンソースとしてほとんどが無料で使えるようになったのも、驚くばかりです。

ということで、プログラミング復帰のリハビリ的に、開発環境の整備をはじめました。

まずgitのインストールとgithubのアカウント作成。
自分が作ったソースファイルのバージョン管理と、github上で公開されているソースを利用させていただくのが目的。

gitのインストールも、最初はブログなどを参考にさせてただき情報収集しましたが、結局はインストーラーのクリックを3回ぐらいやっただけで無事終了。

githubのアカウント作成も、ページが全て英語でしたがわかりやすい手順だったので、難なく作成完了しました。
でも、ページに書いてあった例の通りに進めたので、リポジトリにはしっかりと「Hello-World」が存在してますよ!

よかったら見に来てください。立派なREADMEもあります!

id:kussyy

また試行錯誤しながらプログラミングを進めていきたいと思っています。本当に試行錯誤なので、みなさんぜひ良いアドバイスをください。
よろしくお願いいたします。

いよいよiPhoneアプリ開発へ!

なんですけどね…。おもったほどうまくいかない。

iPhoneアプリ開発に特化した教科書を入手

ここまでObjective-Cの勉強をしてきましたが、言語の習得がメインの記述だったので、ちょっと飽きてきた感じです。まだ覚えることはあるにしても、どうやらObjective-Cを習得することと、iPhoneアプリの開発を覚えることは、イコールではないことまでがわかり、同時並行して勉強することにしました。

そこで入手したiPhoneアプリの教科書がこれ。

とにかくすぐに写経をして、動作を確認できるものが欲しかったので、いくつかのサンプルがあることと、ちょっとお値段が安いということで、この本を選択しました。

書店で購入し、さっそく開始。

でも、ここまで勉強してきたコンソール画面でのプログラミングとはかなり違って、Xcodeのツール類をあれこれ使うので、どうも勝手がわからず、ただ写経しただけだったのにサンプル通りに表示しない。

今日はとにかくサンプルを写経して、表示させたいということが先行して、ちゃんとツールの使い方やそれぞれの意味を理解するところを飛ばしてしまっていました。だから、結局ツールにお仕事をさせないまま、ソースコードだけ作り込んでしまったみたいです。
今日やったところをもう一度最初から写経しなおして、それぞれのツールの使い方をきちんと勉強して、表示ができるまで繰り返そうと思います。

今日学んだこと

  • iPhoneGUIはInterface Builderで作る。
  • Interface Builderでプロジェクト作ると、いくつかのメソッドは既に用意されている。
    • VBやVCなどの経験があれば、このメソッドの役割は直感的にわかる。
  • 写経はソースコードばっかり追わない。
    • ツールを使って写経するときはツールの勉強であることを忘れない。

第8章 駆け足でまわる Foundation キットツアー

CocoaのFoundationフレームワークを駆け足で一回りする、という章。
ここはC言語とはかなり違う概念の部分を丹念に説明してあったので、勉強になりました。

C言語にはない型と、C言語と同じ型でも、オブジェクトとして定義されていることで、全く違う機能を持っていたりします。
文字列型が持ついくつかのメソッドは、C言語のライブラリ関数よりも高度な機能を持っていて、それまでの文字列操作の用途として必要と思われるメソッドが、ニーズから生まれて来たのであろうという想像に難くないものでした。例えば文字列の比較に「大文字と小文字を区別しない」メソッドなどは、C言語では自分で実装するしかないものでした。
でも、よくそのようなことはやっていた記憶があるので、後にはこのように標準化されたのでしょう。

また、C言語と大きく違う考え方に「イミュータブルとミュータブル」というものがありました。
イミュータブルとは、生成後に変更ができないオブジェクトで、ミュータブルはその逆に、変更可能なもの。

これもオブジェクト指向プログラミングならではの考え方と思いましたが、残念ながらこの章ではそれを実際にコーディングして覚えるようには書かれていなかったので、概念を一通り読み込んだだけ、という感じでした。でも、タイトルにも「駆け足で」とあったので、その通りでした。

おそらく、もっと深く勉強すれば、多くのことがこの「Foundationキット」にはあるのだと思います。また、ここには戻ってくることになりそうです。

今日学んだこと

  • XcodeEclipse並みに充実したツール
  • ミュータブルとイミュータブル
  • プログラミングは反復学習。またここに戻るであろう。

第7章 Xcode活用術

コーディング作業に入る前に、Xcodeというツールのちょっと便利な使い方を紹介している章でした。
わたしはターミナルウィンドウでviを使ってファイルを編集し、コマンドラインでmakeを入力していた世代なので、Eclipseに代表されるこのような開発環境は、まるで夢のような世界に見えます。

とはいいつつも、具体的にプログラミングの学習と直結しているわけではないので、あまり身が入りませんでした。本に書いてかるコマンドを実際にXcode上で入力してみて「ふむふむ、ちゃんと同じようになったな。」と確認する程度。

この章はもっと学習を進めて、コーディングをたくさんするようになってから、効率化のためにまた読み直したいと思います。

ご無沙汰しております。

せっかくMac Book Airが届いたにも関わらず、しばらく何もできない状態でした。実は先週からどうも体調が悪く、月曜日に病院へ行って薬を飲み続けていたのですが、熱が下がるどころか毎朝上がっていく。これは変だと昨日また病院へ行ったら、見事に「インフルエンザA型」と診断されてしまいました。

ということで、ようやく昨日からちゃんと静養状態に入り、熱も平熱に下がりました。ぼちぼち学習を再会しました。

Mac Dev Center

まずは開発環境であるXcodeのインストール。しかし、その前に1つやらねばならぬことが。それはMac Dev Center(MDC)への登録。この方法も本に書いてあります。Apple IDを既に持っていれば、そのIDでログインして、簡単なアンケートに答えれば登録完了となります。但し、iTuneStoreでID登録した方は名前や住所など日本語で登録してあると思います。しかしMDCは日本語対応してないので、日本語で登録してある部分は?????の羅列になります。
氏名の表示もそうなっていましたが、修正ができなかったので、住所など他の部分もそのままにしておきました。それでも登録は問題なくできました。

Xcodeインストール

いよいよXcodeのインストールですが、本をみながら進めても少々戸惑いました。これは想定していたことですが、本が出版された当時と、現在のAppleのサイトでの表示が違っているということです。
以下は2011年1月21日現在の差異です。

書籍の表記:
まず、Mac Dev Centerページから「Developer Tools and Technologies」の「さらに詳しく」リンクをたどり、

実際:
Mac Dev Centerページの直下に、ダウンロードのリンクが存在します。「Xcode 3.2.5 and iOS SDK 4」をクリックすると、ダウンロードが始まります。これをダウンロードします。

この差異さえクリアすれば、あとはだいたい大丈夫。

今日学んだこと

  • インストールはそんなに難しくない。
    • 情報の古さをちゃんと踏まえて考えれば「違うじゃん!」とか怒らなくて済む。
  • Xcodeをインストールすると、自動的にDeveloperフォルダができた。
    • 何も指定しなければインストール先を指定したところの直下にできる。

第5章 合成

複数のオブジェクトを組み合わせて、1つの大きなオブジェクトを作ること。プログラミングするときは、あまり考えずに行ってることなんじゃないかと思います。

せっかく読書だけで勉強してるので、書いてあることをじっくりと理解しようと思って読みました。すると、技術として合成はそんなに難しくないが、ちゃんと意図を持った設計をしないと、意味のない、もしくは訳のわからない合成をしかねないということがわかりました。
極端に言えば、相互に何の関係もないオブジェクトを、1つのオブジェクトのインスタンス変数として並べることは可能ですが、これは全く意味がない。意図がソースコードから読み取れるようにすることが大切。なるほど。

それから、なかなか興味深かったのはアクセッサメソッドの名前に「get」という単語は使ってはならない、ということ。これはCocoaでは「引数として渡したポインタを解して値を返すメソッドである」ことを表すので、getが付いているのに、実際にはただ値を返すだけのアクセッサだった場合、他のプログラマが意図を理解できず混乱するから、とのことだった。

ソースファイルもチームにとっては、かなり重要なコミュニケーションツールであるということを、あらためて認識する解説だった。

今日学んだこと

  • アクセッサメソッドは2種類
    • セッターメソッドはオブジェクトに対して属性の変更を指示する
    • ゲッターメソッドはオブジェクトに対して属性の値を返すように指示する
  • getをアクセッサメソッドの名前につけてはいけない