webデザイン案件はテンプレ買えばよくね?
最近安価なホームページ作成依頼が多くて、どうやってコストを下げようかと考えてます。ホームページ作成案件の流れは、
- 営業部隊が案件をとってくる。
- 営業の人が要望を聞いてくるので、それを元にデザイナーがトップのデザインを作る。
- okもらえたらHTMLコーディング。
- 納品。
といのが大筋の流れです。この中で楽に削れそうなのは、2のデザインを作るとこですね。デザイン作るのは1日かかります。ボツだったり修正などで最長3日くらいかかったりもします。
というわけで、デザインはテンプレートを買ってコストを下げようということになりました。購入先のテンプレートはモンスターテンプレートというところです。大体1つ7000円くらいなので、人日4万(営業費込み)と比較すれば大分いい感じですね。楽ですし。それ以上に、最初の段階でこんな感じのデザインという"クライアントとの認識合わせ"が出来るのが一番良いです。
で、テンプレートを使う際に気をつけないといけないのは著作権などのライセンスの問題です。モンスターテンプレートへ実際に聞いてみました。以下がモンスターテンプレートの利用条件です。
- 商用利用可
- 転売は禁止
- 1購入につき1ドメインのみ
(2ドメイン以上の場合には、必要数分ダウンロードの必要あり)
まぁ、普通に使ってれば全く問題ないですね。後日、実際どうだったか書く予定です。
PHP5.4を知らない人は要チェック。いやPHP6.0か?
最近PHP5.4が気になったので調査してみた。今(2010/9/25)はPHP5.3が最新だが次のバージョンアップではどうやらかなり変わるらしい。しかもPHP5.4にするかPHP6.0にするかまだ決まっていないので、今のtrunkにはphp5.3.99devというバージョンになっている。みんなも経験があると思うが、PHPはマイナーバージョンアップでもいきなり仕様が変わって困ることが多いので今回は恐ろしいことになりそうだ。
バージョンに関しては、自分的にはPHP6.0よりPHP5.4になる予感がするのであえてPHP5.4と書くことにする。検索するときは、PHP5.4よりもPHP6.0のほうが圧倒的に情報多いので調査のときは、PHP6.0で検索することをお勧めする。では一覧で紹介してくが、この情報はリポジトリにあったNEWSで、日々更新されるのでおおまかに説明してくことにする。
PHP5.4で何が変わるのか
dereferencingをサポート
(原文) Added array dereferencing support. (Felipe)
JavaScriptでお馴染みのやつですね。
<?php function getArray() { return array(“elem1”, “elem2”, “elem3”); } print getArray()[0]; // elem1 print getArray()[1]; // elem2 print getArray()[2]; // elem3
タイプヒンティングにスカラー値を追加
(原文) Added scalar typehinting. (Ilia, Derick)
ついにつきました!
いままでは、arrayとobject(クラス)だけでしたが、intやstringも指定できるようになった。
<?php function test1(int $sample1) { print $sample1; } function test2(string $sample2) { print $sample2; } function test3(float $sample3) { print $sample3; } test1(1); // 1 test1('hoge'); // FetalErrorが発生 test1('1'); // FetalErrorが発生 test2('foo'); // foo test2(1); // FetalErrorが発生 test2(array('foo')); // FetalErrorが発生 test3(1.1); // 1 test3(0.0); // 0.0 (いいんだ・・・) test3(1); // FetalErrorが発生 test3(0); // FetalErrorが発生
ちなみにエラーの場合は、以下のようなFetalErrorが出る。
PHP Catchable fatal error: Argument 1 passed to test3() must be of the type double, integer given, called in /home/admin/install/php5.4/test_typeh.php on line 24 and defined in /home/admin/install/php5.4/test_typeh.php on line 11 Catchable fatal error: Argument 1 passed to test3() must be of the type double, integer given, called in /home/admin/install/php5.4/test_typeh.php on line 24 and defined in /home/admin/install/php5.4/test_typeh.php on line 11
Traitのサポート
(原文) Added support for Traits. (Stefan)
Traitは多重継承ができ、Scalaで使われててアスペクト志向とかに向いているというもの。
今はextendで1つしかクラスを継承できないが、traitを使うと複数継承できる。
実際に使ってみる。
(参考)
http://wiki.php.net/rfc/traits
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); // echos Hello World!
なかなか便利そう。だがちょっと不満な点があるので、traitに関しては、別記事として書く予定。
TokyoCabinetをサポート
(原文) Added Tokyo Cabinet abstract DB support to ext/dba. (Michael Maclean)
最近話題のKVSですね。ちょっと使ってみましょう。
1、TokyoCabinet自体をインストール
sudo yum install tokyocabinet*
2、PHPインストール
1、まずダウンロード
svn co http://svn.php.net/repository/php/php-src/trunk
2、--with-tcadbをつけて、てきとうなとこにインストール。
./buildconf ./configure --prefix=/home/admin/install/php5.4/ --with-tcadb make make install
3、動作テスト用スクリプトを用意
<?php $id = dba_open("test.tch", "c", "tcadb"); if (!$id) { echo "dba_open failed\n"; exit; } $key = "test_key"; $value = "test_value"; // 追加 dba_insert($key, $value, $id); // 取得 var_dump(dba_fetch($key, $id)); dba_close($id);
詳しくはマニュアル参照
http://www.php.net/manual/ja/ref.dba.php
4、実行
[admin@localhost trunk]$ ~/install/php5.4/bin/php ./cabinet_test_fetch.php string(10) "test_value"
とりあえず動くことを確認したので満足。
次。
削除されたもの
- Removed legacy features: . allow_call_time_pass_reference. (Pierrick) . define_syslog_variables ini option and its associated function. (Kalle) . highlight.bg ini option. (Kalle) . import_request_variables(). (Kalle) . register_globals. (Kalle) . register_long_arrays ini option. (Kalle) . Safe mode. (Kalle) . Session bug compatibility mode (session.bug_compat42 and session.bug_compat_warn ini options). (Kalle) . session_is_registered(), session_register() and session_unregister() functions. (Kalle) . y2k_compliance ini option. (Kalle)
注目すべきものは、以下の2つ
- register_globals
- Safe mode
ついに削除されたー。
Dtraceをサポート
(原文) Added DTrace support. (David Soria Parra)
Dtraceは強力なデバッガで、プログラムの実行をトレースしたりします。例えばPHPでどの関数がどの関数を実行してきたのか等を調べることが出来ます。ですがSoraris用の仕組みなので今回はサンプルを用意できませんでした。。。
リンクだけ張っておきます。
Dtraceとは
Dtrace for PHP
パフォーマンス向上について
(原文) - Added caches to eliminate repeatable run-time bindings of functions, classes, constants, methods and properties (Dmitry) - Added a number of small performance tweaks and optimizations (Dmitry) . ZEND_RECV now always has IS_CV as its result . ZEND_CATCH now has to be used only with constant class names . ZEND_FETCH_DIM_? may fetch array and dimension operans in a different order . ZEND_RETURN is splitted into two new instructions ZEND_RETURN and ZEND_RETURN_BY_REF . optimized access to global constants using values with pre-calculated hash_values from litersls table . optimized access to static properties using executor specialization. A constant class name may be used as a direct operand of ZEND_FETCH_* instruction without previous ZEND_FETCH_CLASS. - Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed. (Dmitry) - Added an optimization which saves memory and emalloc/efree calls for empty HashTables (Stas, Dmitry)
まぁ色々と向上させたらしい。
PHP内部の話なのであまり興味ないあるよ。(汗
2種類のハッシュをサポート
(原文) Added Jenkins's one-at-a-time hash support to ext/hash. (Martin Jansen) Added FNV-1 hash support to ext/hash. (Michael Maclean)
one-at-a-timeハッシュは、perlで使われてるらしい。
ぁーなんか興味ない。
次。
Reflectionクラス拡張
(原文) Added ReflectionExtension::isTemporary() andReflectionExtension::isPersistent(). (Johannes) Added ReflectionZendExtension class. (Johannes) Added ReflectionClass::isCloneable(). (Felipe)
- isTemporary()メソッド追加
- isPersistent()メソッド追加
- ReflectionZendExtensionクラス追加
- isCloneable()メソッド追加
Reflectionクラスにメソッド追加? あんま興味ない。。
次。
default_charsetのデフォルトはUTF-8に
(原文) default_charset if not specified is now UTF-8 instead of ISO-8859-1. (Rasmus)
ぉぉーついにそうなりましたか。
試してみましょう。
1、--enable-mbstringつけてPHPインストール
make clean (さっきTokyoCabinetインストールしたので) ./configure --prefix=/home/admin/install/php5.4/ --enable-mbstring make make install
2、テスト実行
mb_internal_encoding()でちゃんとUTF8になってるか確認・・・
[admin@localhost trunk]$ ~/install/php5.4/bin/php -r "var_dump(mb_internal_encoding());" string(10) "ISO-8859-1"
ぁ゛?
iniになんかセットされて・・・
[admin@localhost php6.0]$ ~/install/php5.4/bin/php -r "var_dump(ini_get('default_charset'));" string(0) ""
ない。ならUTF8になるはずじゃ・・・?
[admin@localhost php6.0]$ ~/install/php5.4/bin/php -i | grep default_charset default_charset => no value => no value
謎・・・まぁ、さすがPHPということで。
国際化に関して
国際化は、「ICU (International Components for Unicode)」というライブラリを使って実装される予定でしたが、今回のアップデートからは外されてます。先日のPHPカンファレンス2010では話題に上がりましたね。全世界に対応するとコードの量が膨大になりすぎるとかで断念したらしい。(?)
これが導入されると、mb_serlen()とか使わなくてもちゃんとマルチバイトを認識して処理してくれます。ということは英語圏の人作った膨大なスクリプトを手を加えずに再利用できるので早く導入してほしい。
まとめ
まだ他にもあるがここまで。ひたすら書きましたがそんなに変わるか?というのが印象でした。なのでPHP5.4になりそうな気はしてます。やっぱ大きいのは国際化だなー早く対応してほしい。タイプヒンティングもスカラに対応したのでプロジェクトで強制したい場合はとてもやくに立つんじゃないですかね。あと、どれくらいパフォーマンスが向上したかベンチマークしてみたいなー。
リサーチ方法のまとめ - evernote編
基本は、検索とソーシャルメディアで調べることになる。wikiの情報は最新じゃない場合が多いので注意。今回はevernoteを調査する機会があったので、メモがてらまとめた。
(※この統計はあくまで個人で調査した推定のものです)
ユーザー数
売上
売上を出すために必要な項目を考える。
evernoteなら
- 有料会員数
- 価格
有料会員数
具体的に数値が載ってるかもしれないので検索。
(例)
http://blogs.itmedia.co.jp/saito/2010/05/evernote-fe69.html
有料会員率は2%とのこと。
4,000,000 x 0.02 = 80,000人
価格
公式サイトに載っている。
5$ (以下500円で計算)
売上
有料会員数 x 価格
80,000 x 500 = 40,000,000
統計のまとめ
- ユーザー数 : 4,000,000人
- 課金率 : 2%
- 課金ユーザー数 : 80,000人
- 売上 : 40,000,000円
- インデックス数 : 5,170
- 一人あたりの月間コスト : 9セント (約7円)
- 1年半ほど前(2009/9頃)から黒字
- リリース日(推定) : 2005年
3大モバイルSNS統計のまとめ
各種ソフト
Visitors
http://www.hping.org/visitors/index_jp.php
http://gigazine.net/index.php?/news/comments/20070305_visitors/
- 高速なアクセスログ解析。
- 2006年から開発してない様子。
- URLのアクセス遷移をグラフィカルに図示。
AWStats
http://awstats.sourceforge.net/
- Webalizerの次に台頭したソフト。
- 約12,000行を7分41秒で解析。
- 定期的に開発が進んでいる。現在7.0を開発中の様子。
- Analog、Webalizerより多機能。
- 数多くのレンタルサーバで採用されている。
- グラフが見やすい。
- お気に入り件数が見れる。
このソフトが無難そうなので決定。
マニュアル
使い方がいまいち分からなかったのでマニュアルを見てみた。
基本的な使い方
Syntax: awstats.pl -config=virtualhostname [options]
設定ファイルについて
(原文) First, awstats tries to read awstats.virtualhostname.conf as the config file. If not found, awstats tries to read awstats.conf
(訳) 最初に、awstats.virtualhostname.confを設定ファイルとして読み込みます。 もし見つからないならawstats.confを読み込みます。
(原文) Note 1: Config files (awstats.virtualhostname.conf or awstats.conf) must be in /etc/awstats, /usr/local/etc/awstats, /etc or same directory than awstats.pl script file.
(訳) 設定ファイルは、/etc/awstats か /usr/local/etc/awstats か /etc か awstats.plと同じディレクトリに配置する必要があります。
ふーんなんか変な仕様な気が・・・・
こんな使い方してます
./awstats.pl -config=hoge -LogFile=access_log -update -output -staticlink > report.html
出力したhtmlを開くと、統計やグラフがひたすら表示されます。
グラフはこのような感じです。(月別のグラフ)
統計の項目はこのようなものがあります。
- いつ
- 月
- 日付
- 曜日
- 時間
- だれ
- 国
- 全リスト
- ホスト
- 全リスト
- 最後の訪問
- 不明なIPアドレス
- ロボット/スパイダーの訪問者
- 全リスト
- 最後の訪問
- ナビゲーション
- 訪問の長さ
- ファイルの種類
- アクセス
- 全リスト
- 入り口
- 出口
- オペレーティングシステム
- バージョン
- 不明
- ブラウザ--バージョン
- 参照
- アクセス元
- 検索エンジン
- ホームページ
- 検索
- 検索文字列(キーフレーズ)
- 検索文字列(キーワード)
- その他
- その他
- HTTPエラーコード
- ページが見つかりません
かなり色々と見れます。使いこなしてSEOに役立てたいと思います。
でもやっぱりグーグルアナリティクスは最強だと認識させられましたね。。。
javascriptのコーディング規約で悩む
javascriptのコーディング規約を決めたいのですが、困ったことにフレームワークや会社によって書き方が見事なまでにバラバラなのです。。。
うちの会社ではjavascriptのフレームワークはjQueryなのでjQueryのコーディング規約でいいかと思ったが、
http://docs.jquery.com/JQuery_Core_Style_Guidelines
のように、あまりちゃんと決まってないようで・・・
仕方ないので他のを探すと、mozillaのjavascriptコーディング規約が。
https://developer.mozilla.org/ja/JavaScript_style_guide
うん。これでいこっと。
というか、mozillaのjavascriptやcssのドキュメントが充実しすぎw
https://developer.mozilla.org/ja/JavaScript
まぁ、IEで使えないものが分からないのが難点ですが・・・
大体感覚で分かると思いますけど。