スタッフブログ
先週の土曜日に、CakePHPカンファレンスに参加してきました。
というのも、RYUSで今後モジュール開発にCakePHPを活用することを決めたからです。
# 実際に、現在開発中の案件でCakePHPを使ってモジュール開発をしています。
さて、では何故CakePHPでXOOPS Cubeのモジュール開発をしようと思ったのか?
まず、よくある誤解を解消しておきます。
XOOPS Cubeのことを、PHPフレームワークだと誤解されてる方がいますが、
XOOPS Cubeは、PHPフレームワークではありません!
XOOPS Cubeは、WindowsやXwindowの様に、OSとかプラットホームのようなものだと私は思っています。
# 私は、Webアプリケーションプラットホームとか、モジュールプラットホームなんて呼び方を良くしてます。
もちろん、XOOPS CubeにもXOOPS Cubeらしいモジュールを開発するためのライブラリなどはありますが、多くのフレームワークが備えているような、開発を楽にしてくれるような仕組みはほとんどありません。
方針が変わらなければ、XOOPS Cube本体に何か特定のフレームワークが組み込まれることもないでしょう。XOOPS Cubeプロジェクトのフレームワークに対するポリシーは「フレームワークを組み込まないので、好きなフレームワークを利用してね」というものですから。
さて、そんなフレームワークレスで、WebアプリケーションプラットホームであるXOOPS CubeにRYUSとして、何らかのフレームワークを採用しようと思い、選んだのがCakePHPでした。
では、なぜCakePHPを選んだのか?その理由を3点挙げたいと思います。
■理由1.参考情報の多い CakePHPでモジュール開発できる。
私がminahito氏が開発されたXOOPS専用フレームワーク exFrame に慣れていたり、その後のコードジェネレータ兼XOOPS Cube専用フレームワークであるcubsonにも慣れていたので、RYUSでは、ながらく cubson を利用してモジュール開発をしていました。
しかし、XOOPS Cube専用&コードジェネレータはWindowsでしか使えないため、利用者が増えず、ネット上の情報も少ない状態なので、私以外のスタッフに cubsonベースの開発を理解してもらうのが困難な状態でした。
その点、CakePHPであればネット上の情報量も多いし、書籍もあるので、フレームワークとしての使い方は、書籍等で学習してもらえます。
モジュール開発にPHPフレームワークを導入しようと思った理由の一つは、この情報量の多さ、習得するための環境がそろっている点です。
■理由2.CakePHPは、PHP4にも対応している
今は、可能であれば納品先サーバはPHP5にしてもらっていますが、他のシステムの関係でPHP4にせざるをえないということもあります。
そんなときに、せっかく慣れたPHPフレームワークが使えないというのは不便です。
その点、CakePHPは、PHP4にも対応しているのが高く評価できます。
■理由3.多くのプログラマが「これから覚えるならCakePHP」と答えた
XOOPS Cubeのモジュール開発に cubson以外のなんらかのフレームワークを利用したいと考え始めたときに、XOOPS Cubeに組み込むフレームワークとしてでなく「これから覚えるとしたらどのフレームワークがいいと思う?」ということを何人かのPHPプログラマに聞いてみたことがあります。
この質問に対して「自分は○○をつかってるけど、これから覚えるならCakePHPかなぁ」といように、CakePHPをおすすめしてくれる方が多かったというのも、CakePHPを使うことにした理由の一つです。
多くの開発者がおすすめするということは、それなりに評価できる点が多いということだと思っています。
というわけで、今後RYUSでは、CakePHPでXOOPS Cubeのモジュールを開発していきます。
そのなかで、フィードバックできそうな事はこのスタッフブログや、各開発コミュニティにフィードバックできればと考えています。
メルマガで紹介されていて、興味を持ったので購入してみました。
表紙がちょっとアレで引くのですが、書いてあることがソフトウェア制作の弊社のようなところでも役立ちそうなネタが盛りだくさんです。
ちょっとした表現方法の違いで効果的なキャッチフレーズを作るというところでは、
「重さ1kgのパソコン」
「軽さ1kgのパソコン」
と2つの製品があったとしたら、どちらを買いたくなりますか?などなるほどと思わせるアイデアがあります。
特に気に入ったのは
否が応でも「目標達成意識が高まるマル秘ワザ」
です。パスワードに常日頃達成したいと思っている目標を設定するというアイデア。
例えば、売り上げ650万=uriage650man、腕立て伏せ=udetatefuse、ついてる=tsuiteru
などを入れるというアイデアです。
潜在意識に目標を常に意識させるために口癖にする、というわざがありますがなかなかできないなと思っていました。これなら1日に何度も入力する機会があるので効果が出そうです。
なお、この本を知ったメルマガは
◎1分間書評!『一日一冊:人生の智恵』
http://archive.mag2.com/0000094236/
です。がんばれ社長!の懇親会でメルマガ著者にお会いしてそれからずっと購読しています。
1日一冊役立つ書籍を星マーク1〜5段階で紹介してくれるのですぐに読めて、こちらで知って役立つ本に出会えたこともたびたびありました。
是非ご覧下さい。
最近キーボードを変えたのですが,前のキーボードと比べてキーとキーの間が大きく,EnterキーやBSキーが無理をしないとホームポジションから届かなくなったので,「のどか(http://www.appletkan.com/nodoka.htm)」というキーバインド変更ソフトを利用してEnterキーやBSキーを押さなくても別のホームポジションに近いキーでEnterやBSが使えるようにしました.
のどかをインストールした後,設定ファイルに以下のように書くと,CTRL+mを押すとEnterに.CTRL+hを押すとBSになります.
key C-h = Backspace
key C-m = Enter
しかし,設定の上では押せるようになっても,人間の方は前のキーバインドに慣れている為,ついつい届かないEnterに指をのばしてミスタイプしてしまいます.そこで,EnterとBSは押しても何も反応しないようにする事でCTRL+mとCTRL+hを体に強制的に覚えこませる事にします.
特定のキーを無反応にするには,以下のようにします,
key Enter = &Undefined
key Backspace = &Undefined
こういった最適化は人間も最適化しなければいけないのでそう簡単にはいきませんが,普段の何気ない動作の中に最適化の余地を見つける事は大事です.是非やってみましょう.とは言えませんが,こういった最適化の仕方もある事を知っておくと良いと思います.
こんにちわ。なおとです。
日に日に秋が深まっていくようなこの頃ですが、私は風邪をひいてしまったようです。 皆様もご自愛ください。
バージョン管理の秘訣は、自分でバージョン管理しないこと!
バックアップなどはバージョン管理システムに任せましょう。
「自分でバージョン管理」とはなにかというと、例えば自分のところで抱え込むことが挙げられます。 複数の修正内容をいっぺんにコミットするような事態があると、「いつ(順序)、だれが、どこを」修正したかの情報を、 リポジトリではなく、自分で持ってしまうことになります。
ほかにもいろいろあるのですが、言いたいことは楽をしましょう、そのためにシステムはありますよということです。
iPhoneの日本語入力は、ひらがなの頭文字からスライドさせて入力するという、iPhoneの全面タッチパネルを有効活用した入力方法になっています。
そして全面液晶といえばWILLCOM 03ですが(個人的に)、このWILLCOM 03でもiPhone同様の日本語入力が可能になるgesture10keyというものが公開されています。
これはtouchkeysipという、WindowsMobile用の日本語入力をカスタマイズするツールの上で作られています。
これを使うと、以下の動画のように、iPhoneライクな日本語入力が可能になります。
縦持ちでの入力が弱かったWILLCOM 03ですが、これを使うとメールも普通に入力できるようになります。是非導入してみてください。
以前、RYUS で フライデーフリー制度 をやっているということを書きました。
このフライデーフリーでやったことなどを毎週交代で金曜日に発表してもらっているのですが、先週の発表で兎本が XOOPS Cube 版XOOPS for corporate について発表してくれました。
XOOPS for corporate は、XSAS という Windows 上で手軽に XOOPS を試せるソフトウェア上に、活用事例として社内ポータルを構築した状態で配布されているパッケージです。
ダウンロード後解凍して、実行するだけで、すぐさま XOOPS で社内ポータルを構築するとどんな感じになるかを試すことができます。
XOOPS やモジュールの管理画面は、通常、自分でインストールしてみないとどうなっているのか体験できませんが、XOOPS for corporate なら面倒なインストール作業なしで、管理画面まで体験できちゃいます!
そんなステキな XOOPS for corporate ですが、残念ながらメンテナンスは止まっていて、パッケージに含まれる XOOPS 等のソフトウェアはかなり古いバージョンのままです。
これを現在最新の XOOPS「XOOPS Cube Legacy」に入れ替えて、モジュールも最近のものに変更したものを当社の兎本がつくってくれました。
XSAS の変わりに WARP を利用して、この WARP 上に XOOPS Cube で構築した社内ポータル例をセットにしました。
あと少し手を入れたら公開できると思いますので、みなさん期待してお待ちください。
私のイメージだと東大に入る人だからってノートがきれい??うむ〜、って感じでした。
しかし、この本を読んでみて 字がきれい とかじゃなくて、効率的かつ効果的にノートを作っているということがわかりました。
ひるがえって自分は自分で見るのもいやなほどノートに書いてある内容は適当です。
一理ある、と感じたのでとりえあず、「行頭を揃えて」「分類」して仕事用のノートを書いてみました。うーん、確かにわかりやすいし、あとで見直したときにわからなくなっちゃうということもない。効果的です。
なかなか良い、と思ったのでついでに 東大ノート とかいうものも頼んでみました。普通のノートなんですが小さなドットが入っていて行頭を揃えたり、手書きでマトリックスを書いたりするのに役立ちそうです。
突然ですがみなさんは,何台のパソコンに触れる機会がありますか?家と会社,デスクトップとノート.複数のパソコンを使う人も昔と比べると随分増えてきています.
複数のパソコンを使っていて困るのが,それぞれのパソコン同士のデータ共有です.「ファイルサーバをつくってそこに保存しておいて…」というのは企業などでもよく行われるのですが,もっと気軽にファイルを共有できるツールが最近リリースされました.それがdropboxです.
https://www.getdropbox.com/
Dropboxは専用のアプリケーションをインストールする事で,特定のディレクトリに保存したデータをdropboxが運営するサーバに自動的にコピー,同期します.
一旦サーバにおいたものをクライアントが共有するので,パソコンAとパソコンBにDropboxをインストールする事で,Aでdropboxディレクトリにファイルをおいた瞬間パソコンBのディレクトリに同じファイルがコピーされます.
無料で利用できるのは2GBまでなので大きなデータを置くにはむいていませんが.簡単なファイル共有や,データのバックアップには便利です.
他人との共有ができるShare機能や特定ファイルをwebで公開できるPublic機能などもあるのでシンプルなファイル共有を求めている人は是非利用してみてください.
なおとです。
古い話になるのですが、今年の4月にあった第32回PHP勉強会で知ったことを、最近になって活用しました。ためになったのでそれを紹介したいと思います。 ベイエリア情報局「ライブラリが直接実行された場合はプログラムとして実行する」(btoさん)です。
前回私が書いたブログ記事の続きでもあるのですが、作りたい機能がXOOPSの中での処理だけでなく、CRON経由でCLI(コマンドラインインターフェイス)のphpを併用することがあります。
例えばなにかメールを送る機能があったとして、その場で送るのと、あとから非同期に(CRONから叩いて)送る場合と、2パターンがあるとします。 具体的な処理としては「送るメールの文面をつくる」「メールを送る」など、共通しています。XOOPSではPHPMailerというライブラリを使って送信する機能が盛り込まれているので、できるだけそれを使います。 ただし直接利用するだけでなく、ビジネスロジック側にすり寄せた、使いやすいようなインターフェイス(独自のクラス)を通して使ったりします。 これには、送信の記録を含むアプリケーション・ログを記録する部分を実装したります。
ここからはやり方次第なのですが、クラスを書いた部分以外に、同じファイルを読み込んで処理するような作りになる場合もあります。 例を具体的に挙げると、あるモジュールのアクションとして使われているスクリプトを、CLIからも呼び出すようなやり方です。
その中身は例えばなのですが、簡略化するとだいたいこんな感じになります。<?php global $xoopsOption, $xoopsConfig, $xoopsDB, $xoopsUser, $xoopsModule; if (check_exec($argv)) { $xoopsOption['nocommon'] = 1; require_once dirname(dirname(__FILE__)) . '/public_html/mainfile.php'; $mydirname = basename(dirname(dirname(__FILE__))); $mydirpath = XOOPS_ROOT_PATH . '/modules/' . $mydirname; $mydirurl = XOOPS_URL . '/modules/' . $mydirname; require_once $mydirpath . '/mytrustdirname.php'; // set $mytrustdirname $mytrustdirpath = XOOPS_TRUST_PATH . '/modules/' . $mytrustdirname; $root =& XCube_Root::getSingleton(); $root->mController->executeCommonSubset(); } if (!defined('XOOPS_TRUST_PATH')) die('set XOOPS_TRUST_PATH in mainfile.php'); // mail送信など実際の処理(省略) $mail = new MyMail($mydirname); (snip) function check_exec($argv) { // コマンドラインか判別する // HTTPD経由だと$argvは未定義 if (isset($argv[0]) and (__FILE__ === realpath($argv[0]))) { return TRUE; } return FALSE; } ?>
私の中ではこの辺の「これ」というノウハウはまだ持てていなくて、試行錯誤をしながら(つまったりして)開発しています。 面白味がある部分です。
ちょっとしたことなのですが、さっと検索してパッと見つかって、それが使えると分かればどんどん使うのが、できるエンジニアだと思います。
まとまりのない感じですが、そんなことがありました。
最近開発環境はすっかりvimに移行してしまったので、なんでもvimで開発したいのですが、pluginとかが充実していないファイルタイプには不便だったりします。
今回はvimでActionScript(AS3)の開発をする方法をまとめてみます。
■syntax
ActionScript - ActionScript syntax highligting : vim onlineからダウンロードできます。しかしAS2レベルっぽいので、AS3のsyntaxを自力で追加する必要があります。class周りとか、importとかそのあたりが抜けているので適当に追記しましょう。
■rascut
id:secondlife氏が開発した、fcshをwrapして自動コンパイルとかをしてくれるものです。前はfcwrapとか呼ばれていたやつです。
詳細に関しては、ActionScript やるなら入れとけ。rascut 導入と使い方。 - てっく煮ブログが詳しいです。
rascutはいくつか問題があるので修正します。
・fcshが日本語版だとおかしくなる
rascutとFlex3 SDK beta - holidays-l開発ブログが詳しいです。
trunkだと修正されているようなので、trunkから持ってくるのが早いと思います。
・swfobject.jsが読まれない
lib/rascut/httpd.rbの27行目で
@path = env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])
としていて、PATH_INFOが空の際にF.join(@root, env['PATH_INFO'])が呼ばれるため、無駄な/が末尾についてしまい読めなくなっているようです。
同じ行を
@path = (env["PATH_INFO"] == '/' or env["PATH_INFO"].empty?) ? @root : F.join(@root, env['PATH_INFO'])
とすることで対応できました。
ちなみにこちらもtrunkでは修正されているようです。最初からtrunkを使ったほうがいいと思います。
・画像が出ない
rascutのhttpdは、swf関係のファイルを/swf以下に配置するので、画像パスも/swf以下から読むように設定する必要があります。(rascut側の設定で対応できるのかもしれません)
親のasファイルと同じ場所にswfと画像を置くようにしておいて、as側でパスを/swf以下にしておけば大丈夫です。
[Embed(source='〜')]で埋め込む画像はもちろん関係ありません。
Eclipse周辺だと便利なツールはいろいろあるのですが、どうしても重くなりがちなので、自分の使いやすい環境で開発できるのが一番だと思います。