Chimpanzeeとは?

オープンソースの国産PHP Webアプリケーションフレームワークです。

―そもそもなぜPHPのフレームワークをオープンソースで世に出そうとしたか?
私たちはPHPで開発をしていて既存のフレームワークに対する不満がありました。
「仰々しい」「堅苦しい」「結局それ、自分でコーディングしなくちゃいけないの?」...
そういったこともあって自社製フレームワークもどきを作っていたのですが、 どうせならそういった不満を体系的に解決してパッケージにしよう。とある日思いついて、Chimpanzeeを開発しました。 さらにはみんなに使ってもらわなきゃ作った意味がないよね。 そういうわけでオープンソース化した次第です。

―PHPのフレームワークをオープンソース化する目的は?何が嬉しいの?
私たちの満足はみんながChimpanzeeを使って多くのアプリを作り、喜んでくれること。 そしてより多くのWebサービスが世の中に出るようになってくれれば盛り上がるかな。 景気もよくないし、Chimpanzeeを使ってみんながサービス作ってもっと世の中にお金が回るようになれば、 作った甲斐もあるものです。

2011年3月11日、東北地方太平洋沖地震(東日本大震災)がありました。Chimpanzee開発の最中でした。 1000年に一度とも言われる地震に加えて津波、原発の事故。 東北や北関東地方で大きな被害が出て、絶望に打ちひしがれてる被災者の方々に みんな義援金を送る。物資を送る。励ましの言葉を送る。 自分にできることを通じていろいろな貢献をしました。
そんな中、サービスで貢献するやり方もあるじゃないか。 簡単にプログラムを書いてWebサービスを提供できる人は被災者の手助けになるようなサービスを展開すればいいじゃないか。
計画(輪番)停電もありました。停電日時の検索サービスを提供する人が出てきました。 被災者向けの宿泊マッチングサイトなどを提供する人も現れました。
そういった開発者に対して、Webサービスを今までより簡単に作れるようにする。 それも一つの貢献であり、その結果より多くの被災者向けのサービスが世に出てくる。そういった形の貢献をしたい。 我々Chimpanzeeプロジェクトは思います。

名前の由来

  • インパクトがあったから。忘れないでしょ。だって「チンパンジー」だよ?
  • ソースコードにrequire('Chimpanzee.php');と書かせたかったから。「俺にはチンパンジーが必要なんだよ」的な?
  • チンパンジーでもアプリ作れるくらい簡単(というのは嘘)。

コンセプト

「柔軟、楽、軽い」をコンセプトに、既存のPHPフレームワークの物足りないところを解決し、

  • Symfonyのように柔軟で
  • CakePHPのように楽で
  • CodeIgniterのように軽い
  • Piece Frameworkのようにステートフルでセキュアな
  • もちろん無料の

フレームワークを目指して作りました。GPLライセンスに従えば無料で利用できます。

一般的なPHPフレームワークとしての特徴

他のフレームワークでも見られる基本的なフレームワークとしての役割はカバーしています。

  • MVC
  • HTMLの自動生成
  • バリデーション
  • セッション管理

Chimpanzeeのこだわり

楽(コーディングを少なく)

フォーム処理の自動化

フォームHTML出力から値やアップロードファイルの格納まで自動化するメソッドが用意されています。

充実した自動生成

一覧表、詳細画面、編集画面、確認画面が自動生成できます。

かゆい所に手が届く

通常リファラを保存して出し分けが必要だった「戻る」ボタンの実装も自動で1つのコードでできます。

詳しくはこちら

柔軟

ORMにとらわれないフォーム処理

フォームとモデルを分けて実装することでモデルから独立した柔軟なフォーム運用を実現し、 「開発が楽かつ柔軟」といういいとこ取りのニーズに対応しました。

柔軟な自動生成機能

HTMLタグ自動生成機能では表示形式をテーブルやリストなどの形式で選択できます。 さらに自動生成するタグに手を加えることも簡単でJavascriptやデザインの実装も可能です。

さまざまな拡張

ユーザ定義関数や外部ライブラリも手軽に利用可。

詳しくはこちら

メモリ節約

動的読込によるメモリ消費の削減

あらゆる機能を動的にインスタンスを生成して使用するようにしました。 モデルやライブラリだけでなく、定数テーブルや設定ファイルまでをも動的読込。

クラスインスタンスの保持と破棄

クラスを使用する際、使用した瞬間だけ一時的にインスタンスを生成し、すぐに破棄することでメモリを解放することができます。

メモリ節約を第一に考え、必要な時に必要なだけプログラムやデータを読み込み、不要になったらすぐ破棄します。 「同じことを実現するのに少ないメモリで済む。その結果サーバ台数を減らし、コスト削減。」

詳しくはこちら

ステートフルでセキュア

サーバレベルのSQLインジェクションやクロスサイトスクリプティング(XSS)は当然禁止していますが、それに加えステートフルなユーザ/セッションレベルのセキュリティ実装も簡単です。

たとえばユーザ権限によりデータベースの操作できるレコードを絞り込み、他の権限のレコードは閲覧すらできないようにするマスク機能もメソッド一つで実装できますし、特定のアクションから特定のアクションへの遷移しか認めないようにする(不正な遷移を弾く)メソッドも用意しています。

スマートフォン、フィーチャーフォン対応

携帯電話からのアクセスを自動判別し、携帯に適したHTMLを自動生成します。携帯電話固有であるUIDや位置情報の取得機能も実装しました。 スマートフォンとPCの同一URL出し分けをする場合HTTP vary headerも自動で出力されます(SEO効果あり)。

機能一覧

  • コントローラ
  • ビュー
  • モデル
  • フォーム
  • フォームや一覧表、詳細画面の自動生成
  • 定数テーブル
  • ユーザ定義関数
  • セッション情報管理
  • フィルタ処理
    • バリデーション
    • コンバート(変換)
  • モジュール
    • データベース操作
    • ユーザ定義エラー処理
    • 位置情報取得
    • 画像処理
    • ログイン処理
    • メール送信
    • 携帯電話(フィーチャフォン)
    • スマートフォン
    • リクエスト変数
    • URL管理
    • Facebook連携

今後の実装予定

  • フォームとモデルの連携
  • 複数レコード処理
  • Webサービスとの連携(twitter)
  • WebAPI
  • CSV
  • HTMLキャッシュ
ページトップへ