Essential ActionScript 3.0 読書メモ 第3回 コンストラクター

constructorとは、クラスのインスタンスを初期化する命令のこと。constructorメソッドを定義するには、クラスのブロックの中でfunction定義を行う。
例:

class Blog {
  function Blog () {
    //constructor methodの中身をconstructor bodyと呼ぶ
  }
}

constructor名は、クラス名と同一でなければならない(ケースセンシティブ)。クラスが初期化されるときは、毎回必ずconstructorメソッドが実行される。

クラス内に明示的にconstructorが定義されていない場合、ActionScriptは自動的に、何の処理も行わないconstructorを補う。この機能は便利だが、ベストプラクティスとしては、必ずconstructorを定義することが推奨される(空っぽのconstructorは、constructorが不要なクラスであることを示す)。
例:

class Blog {
  // 空のコンストラクター。このクラスは初期化不要。
  function Blog () {
  }
}

クラスと違って、constructorメソッドのアクセシビリティはアクセスコントロール修飾子によって制御できない。ActionScript 3.0では、全てのconstructorメソッドはpublicである。

アプリケーションのmainクラスのconstructorメソッドには、アプリケーションの開始直後に実行されるという特徴があり、プログラムの開始地点であるといえる。

今日の進捗:168→177/4343

Essential ActionScript 3.0 読書メモ 第2回 アクセスコントロール修飾子

クラス定義の際に使うModifier(修飾子)について。

クラスはデフォルトでは、同じpackageのコードからしか利用できない。外部のpackageからアクセスできるようにするためには、public属性をクラスに付けてクラス定義を行う必要がある。

例えば、

package jp.livedoor {
  public class Blog {
  }
}

といった感じ。

(なお、第1回の記事でクラス宣言の際にはpackage名から書く(例:jp.livedoor.Blog)のが正式だと書いたが、今後は簡単のため、クラス名からpackage名は省く。『Essential ActionScript 3.0』でも、省略している)。

外部packageからアクセス出来ないクラスを定義したことを明示したい場合は、internal属性をつける。

package jp.livedoor {
  internal class Blog {
  }
}

internal属性を付けたclass定義は、プログラム上の意味は、修飾子を何も付けない場合と変わらない。internal属性の役割は、コードを読む人に、このクラスは内部でしか利用できないと知らせること。

なお、AdobeのActionScriptコンパイラーは、アプリケーションのmainクラスがpublic属性であることを要求する。

今日の進捗:158→168/4343

Essential ActionScript 3.0 読書メモ 第1回

ClassとObject

a running ActionScript program is a group of interoperation objects, based on a set of classes.(p.124)

Classは部品の設計図。Objectは部品が実体化(instance化)したもの。

Packageとは、クラスの容れ物。宣言方法は、

package packageName {
}

重複する可能性を低くするため、package名は自社のドメイン名から取る慣習がある。例として、ライブドア社(ドメイン名:livedoor.jp)の作ったパッケージなら

package jp.livedoor {
}

Classの宣言は

class Identifier {
}

で行う。Identifierの部分にはクラスの名前が入る。クラス名はUpperCaseで、かつ、パッケージ名から始まる名前をつけるのが正式な作法。
ライブドアの例でいえば、

class jp.livedoor.Blog {
}

packageとまとめると、以下のような構造になる。

package jp.livedoor {
  class jp.livedoor.Blog {
  }
}

また、別々の.asファイルで定義されていても、package名が同じであれば、.asファイルをまたいでクラスが定義される。
例えば、

blog.as内に

package jp.livedoor {
  class jp.livedoor.Blog {
  }
}

reader.as内に

package jp.livedoor {
  class jp.livedoor.Reader {
  }
}

と書くと、jp.livedoorパッケージの中にjp.livedoor.Blogクラスとjp.livedoor.Readerクラスが定義されたことになる。

一方、1つのクラスの定義を複数の.asファイルにまたがって行うことは出来ない。

Essential ActionScript 3.0 読書メモ 第0回

Essential ActionScript 3.0
Essential ActionScript 3.0

『CSS CookBook』に次いで読んでる洋書が『Essential ActionScript 3.0』です。邦訳『詳説ActionScript 3.0』も出ていますが、約6000円と高額。一方、洋書のiOSアプリ版であれば600円で買えました(2012年10月31日現在、日本のApp Storeでは本書は販売していません)。10倍の価格差があるなら、洋書でもいいか、ということでiOSアプリにしました。

私は、ActionScriptに関しては、仕事でActionScript 2を書いた経験がある程度で、ActionScript 3(以下、AS3)の経験は全くありません。また、AS3は本格的なオブジェクト指向を備えた言語ですが、私はオブジェクト指向プログラミングの経験もほとんどありません。

仕事に関しては、AS2を書く機会はあるかもしれないけど、AS3は今の会社にいる間はないだろうな、という感じです。

『CSS CookBook』は、「自分がよく知っていて、仕事でもよく使う言語について洋書で学ぶ」という経験だったので、今回は、「未知の分野で、明日役立つわけではない言語を洋書で学ぶ」という方向でいってみようかな、と。

AS3にした理由は、AS2を触ってみて楽しかったから。ドットシンタックスで直感的に書けるし、出来上がるアプリケーションもビジュアルに訴えるものなので、ASは書いてよし作ってよしの楽しい言語です(ただし、Flash Liteは制約がきつすぎて楽しくありません)。

ちなみに、『Essential ActionScript 3.0』は、ガチガチの専門書ではありません。プログラミング経験の無いデザイナーでも読めるように、プログラミングのイロハから教えてくれる入門書です。また、英語もそれほど難しくはないですね。紙版で900ページ超、手元のiBooksでは4343ページとなっているので、時間はかかりそうですが、(興味が持続すれば)最後まで読み通そうと思います。

『Webサイト制作者のためのPHP入門講座』CodeIgniter導入時の手順について

Webサイト制作者のための PHP入門講座
Webサイト制作者のための PHP入門講座

PHPの再入門として、↑をやってます。本書の特徴は、「プログラミング経験ゼロでもOK」を謳う入門書でありながら、比較的高度な内容を扱っていること。「初心者こそフレームワークを使うべき」という考えのもと、フレームワークを使った本格的なWebアプリケーションの作成を行います。PHPの入門書で、MySQLを全く扱ってないのも珍しいですね。

今日は、本書で使用するフレームワーク、CodeIgniterのインストールをやっていました。基本的には、ダウンロードしてサーバーで公開するディレクトリに設置すれば動くお手軽フレームワークなのですが、いくつか設定が必要です。

本書で紹介しているのはCodeIgniter 1.7時代の設定方法で、2012年現在の最新バージョンであるCodeIgniter 2.0では多少設定方法が異なります。著者のブログ記事でも2.0対応の方法は書いてあるのですが、これは「1.7環境で作成したアプリの実行環境を2.0に変更し、2.0でも動くように書き換える方法」です。

これから本書をやる人に必要なのは「いきなりCodeIgniter2.0をインストールして、2.0上で本書のアプリを動かすための設定」でしょう。基本的には、上記ブログ記事を参考に本文の読み替えを行えば解決するはずですが、設定段階で上記ブログ記事にたどり着いた人のために補足しておきます。

1. Applicationsフォルダが無い(変な場所に有る)

本書の本文中では/system/Applications/という階層構造になっていることになっていますが、これはCodeIgniter1.7の仕様。2.0では、Applicationsフォルダはsystemフォルダと同じ階層にあります。index.phpの設定も、systemフォルダの場所だけでなく、Applicationsフォルダの場所も指定してやる必要があります。

2. station.php等が無い

station.phpは本書で作成するphpのことなので、インストール直後の段階では存在しません。gnaviapi.php、yahooapi.phpも同様。

3. welcome.phpが既に有る

welcome.phpはCodeIgniterにはじめからついてきますが、本書でも新たにwelcome.phpを作成します。仮に、welcome2.phpなどを作成して、上記ブログ記事で変更箇所として挙げられている記述をメモしておくとよいでしょう。

私はフレームワークといえばRuby on Railsしか触ったことが無かったのですが、CodeIgniterはRailsに比べて、導入が非常に容易であると感じました(その分、Railsのような至れり尽くせり感はありませんが…)。