WEB/システム/IT技術ブログ

例えば、CDショップのサイトをCakePHPで構築するとして、ロック音楽のパスを「/cd/rock/」、ポップ音楽のパスを「/cd/pop/」としたと仮定します。

CakePHPのコントローラの基本的なルールでは、「/cd/rock/」にアクセスがあった場合に、コントローラ「CdController」のメソッド「rock」で処理が行われ、ビュー「/app/views/cd/rock.ctp」で表示されます。
同じくして、「/cd/pop/」にアクセスがあった場合に、コントローラ「CdController」のメソッド「pop」で処理が行われ、ビュー「/app/views/cd/pop.ctp」で表示されます。

ここでコントローラの処理についていうと、ジャンルは違えど処理はほとんど同じのはずです。処理を共通化したい場合には、コンポーネントを活用すればよいことは以前書きました。
CakePHPでコンポーネントを作成する

hetemlレンタルサーバにはSubversionサーバが用意されており、リポジトリを作成して利用することができます。
今回は実際にリポジトリを作成し、クライアントからsvn+sshで接続する方法のメモです。

hetemlでssh接続を有効にする

hetemlでSSHを有効にする方法は、公式サイトで公開されています。
レンタルサーバー「heteml」 – SSH のご利用方法
実際にWinSCPやPuTTYに接続できれば成功です。

hetemlにリポジトリを作成する

PuTTYでhetemlサーバに接続し、例えば以下のようにしてホームディレクトリにリポジトリ「test_repos」を作成します。

cd $HOME
mkdir -p ./test_repos
svnadmin create ./test_repos

Product Advertising APIを利用するために、PEARの「Services_Amazon」を使ってみます。

今回、構築したのはPHP5.3.0上です。
コマンドラインが実行できないレンタルサーバなどの環境下では、パッケージを手動でPEARのサイトからダウンロードします。「Services_Amazon」を動作させるためには、以下のPEARパッケージが必要となります。それらを以下にまとめます。

Services_Amazon 0.8.0 http://pear.php.net/package/Services_Amazon
HTTP_Request 1.4.4 http://pear.php.net/package/HTTP_Request/
Net_URL 1.0.15 http://pear.php.net/package/Net_URL/
Net_Socket 1.0.10 http://pear.php.net/package/Net_Socket/
XML_Serializer 0.20.2 http://pear.php.net/package/XML_Serializer/
XML_Parser 1.3.4 http://pear.php.net/package/XML_Parser/

コマンドラインが実行できる環境であれば、以下を実行するだけでインストールは完了します。

pear install Services_Amazon-0.8.0

手間な場合はローカルでコマンドを実行した後、インストール済みのPEARパッケージをまるごとレンタルサーバにアップロードする方法もあります。

これまで携帯電話用のWebサイトについては、その規格が収束に向かいそうにないので、捨てていました。Docomoとauで見栄えが異なる、同じSoftbankでも機種により見栄えが異なるなど、それぞれWebサイトについての規格はばらばらで、技術者泣かせのところがありました。そんな不安定な分野なんて、そのうち消えてなくなると考えていました。

最近、iPhoneを初めAndroidなどのモバイル端末の爆発的な広がりをみると、目を見張るものがあります。これまでの携帯電話専用サイトとは異なる、スマートフォン専用サイトの需要が高まるのは確実でしょう。

特にAndroidについてはPCサイトと変らない技術でホームページ構築が可能です。HTML、XHTMLのタグは普通に使用できますし、CSS、JavaScriptも動作します。最新のAndroidではフルFlashの表示も可能です。
繰り返しになりますが、これまで携帯電話専用サイトの規格が定まらなかったのは、キャリア間、メーカー間の仕様の問題でした。しかし、Androidについて、最近ではdocomo、au、softbankから多くの端末がリリースされています。メーカーでいうと、SHARPやTOSHIBAなどは独自のOSからAndroid OS採用への切り替えが積極的のようです。時代の流れの速さについてゆくために、独自技術で精度を求めるより、オープンですぐれたプラットフォームを活用するほうがコストが少ないんでしょうね。

最近ではFlashといっても多岐にわたります。Webサイトであったり、ゲーム、バナーやAIRアプリケーションなど。詳しくはないですが携帯でもFlashがあります。
要件に応じて最適な構築方法も異なると思いますが、そんな手法の一つとしてProgressionを試してみたいと思います。

ProgressionはFlash CS3~CS5に対応したフレームワークで、特にフルFlashサイトを構築する場合にその威力を発揮するようです。
標準のWebのような構成、つまり、ページがいくつか存在して、グローバルナビゲーションがあって、といったことをFlashで実現しようすると、結構たいへんだったりします。それぞれボタンを作成して、イベントを設定して、タイムラインを制御してなど、毎度繰り返しのめんどくさい作業が発生します。
そんな作業をProgressionでは比較的、軽減してくれるようです。

今回はそのProgressionをインストールしてみたいと思います。

サブドメインやマルチドメインに対応したレンタルサーバで複数のCakePHPで構築したサイトを公開する場合に、一番には複数のCakePHPをインストールすればよいと考えます。しかし、リソースが無駄に使用されるようで嫌ですよね。
当然ともいえる事のようですが、CakePHP1.3では複数のWebサイトを管理できます。

まず、前提として、CakePHPを非公開のディレクトリにインストールした構成とします。詳細は以前の記事を参照してください。
CakePHPのディレクトリ構成を変えてセキュリティ強化

例えば、以下のようなディレクトリ構成で、3つのサイト「http://site1.helog.jp/」「http://site2.helog.jp/」「http://site3.helog.jp/」をマルチドメインで公開するとします。

cakephpインストールディレクトリ /cakephp/
サイト1公開ディレクトリ /public_site1/
サイト2公開ディレクトリ /public_site2/
サイト3公開ディレクトリ /public_site3/

ソフトバンクのAndroid携帯「HTC Desire」に、アプリ「Adobe Reader」をインストールしてコミック「ラブひな」を読んでいます。

特に「ラブひな」ファンでもマンガ好きなわけでもないですが、今回、Jコミというサイトで無料でラブひな全巻が公開されるということで、これを機に読んでいます。
Jコミ – http://www.j-comi.jp/
普段、一切アニメやコミックは見ない人間なんですが、無料となるとついつい手を伸ばしてしまいます。貧乏性なんですかね。

コンテンツは上記サイトよりPDFファイルで展開されています。
コンテンツ公開時期と、Android携帯を入手した時期が重なっていたのもあり、それから細々と読み続けています。小さい画面だと読み物には辛いという先入観がありましたが、意外にもすんなり読めますね。

CakePHP1.3のデフォルトのディレクトリ構成を変更して、セキュリティの強化を図ります。

通常、CakePHPをインストールする場合、ダウンロードしてきたソースを公開フォルダに展開するだけです。この手軽さが利点なのですが、ログやキャッシュファイルなど、直接アクセスしてもらいたくないファイルも公開ディレクトリに展開されることになります。
アクセスを許したくないフォルダに制限を設けるのも一つの方法ですが、めんどくさいですね。
ただ、詳細は省きますが、基本的にはアクセスできないようなしくみにはなっているのです。しかし、そうは言っても気持ちが悪いですよね。

CakePHPでは「/app/webroot」フォルダに設置した静的コンテンツは、ブラウザから直接リクエストを発行してアクセスできます。それ以外のリクエストについてはフレームワークで処理されます。つまり、リクエストからの処理の流れが「ドキュメントルート」⇒「webroot」⇒「フレームワーク」のようになっているのです。
この構造を少し単純化して「webroot」⇒「フレームワーク」にしてしまおうというのが今回の考えです。つまりは、「ドキュメントルート」を「webroot」にしてしまうわけです。

CakePHPでモデルを作ってみます。

モデルは、DBの入出力だけでなく、ファイル操作や通信処理などを一様に処理できるようなしくみを構築できるようになっています。また、DBと一口にいっても、MySQL、PostgreSQLやSQLiteなどさまざまなプラットフォームがありますが、それらの依存もモデルで吸収してくれるので、プログラマは特に気にせず作業することができます。
今回はMySQLとのインターフェースを自作してみます。

まずは、以前にCakePHPのインストールでも紹介したように、DBの設定がされていることを前提にします。ちなみに設定ファイルの場所は「/app/config/database.php」です。

Twitterの公式ウィジェットが簡単に自分のサイトに設置できるみたいなので、やってみました。

サービスを提供しているページは以下です。
Twitter / ウィジェット

メニューより「自分のサイト」⇒「プロフィールウィジェット」を選択します。

「設定」で表示したいプロフィールのユーザ名を入力します。その他、ツイートの表示方法やデザイン、サイズを設定することができます。
設定が済んだら「プレビューで確認」ボタンを押して、実際にどのように表示されるかが確認できます。
表示内容に問題がなければ「完了&コード取得」ボタンを押して、JavaScriptのコードを取得します。

そのJavaScriptのコードを、自身のサイトやブログに貼り付けます。
そうすれば、以下のようにツイートが表示されます。これは実際にコードを取得、貼り付けた例です。

Monthly Archives