2010年9月 のアーカイブ


PCサイトのスマートフォン対応時の考え方について、ゴチャゴチャと頭のなかにあったので、まとめる意味でも書いてみる。

スマートフォンは、Flashが駄目だとか、マウスオーバーなど一部のjavascriptが思うように動かないといった若干の制約はあるものの、基本的にはPCと機能的には変わりが無いブラウザが動く為、それ専用のポーティングを急ぐ必要性は無かった。ちょっと使いづらくてもブラウザで見れば何とかなった。
つまり極端な言い方をすれば、対応するだけであれば最初から実現できているわけ。
では、それならばという考え方で、スマートフォン用に使いやすいサイトを用意したらどうだろうというのが基本にあると考えられる。

傾向として

といったものが見受けられる。どれも利にかなった内容だと思う。

ここで、少しだけ面白い発見がある。

それは、PCサイトを携帯電話向けサイトに対応しはじめた時も、殆ど同じ傾向だったということだ。
もちろん、携帯電話はスマートフォンに比べたら貧弱な表現力と容量しか持っておらず、画面に入れられる情報もはるかに少なかった。

その為

と、ほぼ同じ傾向での対応方針がとられることが多かった。iモードが登場した、2000年前後のサイト企画では、上記傾向を前提とすることが多かったと記憶している。

それから10年以上経つ現在、PCを使わず携帯電話からのみでインターネットアクセスを済ませるユーザーも増え、携帯電話だけで完結したり、携帯電話専用だけど、PCサイトも一部対応しているサイトなど、多種多様な状況が存在している。PCサイトの機能をポーティングするという考え方がそもそも存在しない企画も沢山存在する。

そしてその視点をもう一度スマートフォンに戻すと、同じように近い将来スマートフォン専用のサイトというのも登場するのではと考えられる。
もちろん携帯電話とユーザーの行動は異なるわけで、まったく同じということは無いと思うが、スマートフォンならではの文化が新たに生まれるのであれば、それはそれで楽しみなことだと思う。

でも、しばらくは、PCサイトの機能見直しの機会としてスマートフォン対応案件が存在してもらうと、個人的にはありがたいというのは本音でもある。


Oracle11gをデータベースとして使用するシステムで、sqlrelayをコネクションプーリングのミドルウェアとして使用したので、メモを残してみる。

インストールするOS

データベースがOracleなので、それにあわせてOracle Enterprise Linuxを使用した。

Instant Clientのインストール

Oracleのサイトから、
Instant Client for Linux x86の

をダウンロードし、rpmでインストール。

.bash_profile tnsnames.oraの設定

Oracleと接続する基本設定を実施し、SQL*Plusで接続できることを確認。

sqlrelayのインストール

http://sqlrelay.sourceforge.net/から、バージョン0.39.4 をダウンロード。
(0.40以降では、インストール後、うまくデーモンが立ち上がってくれなかった。)
ソース解凍後、configureの以下の2箇所を編集する。

if ( test -z "$ORACLELIBS" )
then
 for version in `cd /usr/lib/oracle 2> /dev/null; ls -d * 2> /dev/null`
 do
  if ( test -r "/usr/lib/oracle/$version/client/lib/libclntsh.$SOSUFFIX" -a -r "/usr/include/oracle/$version/client/oci.h" )
  then
   ORACLEVERSION="10g" → 11g に変更
   ORACLELIBSPATH="/usr/lib/oracle/$version/client/lib"
   ORACLELIBS="-L/usr/lib/oracle/$version/client/lib -lclntsh -lnnz10" → lnnz11 に変更
   ORACLEINCLUDES="-I/usr/include/oracle/$version/client"
  fi
 done
fi

configureを実行。上記の変更がなされていないと、Oracleを発見できずにconfigureは失敗する。

./configure \
  --disable-mysql \
  --disable-msql \
  --disable-postgresql \
  --disable-sqlite \
  --disable-freetds \
  --disable-sybase \
  --disable-odbc \
  --disable-db2 \
  --disable-interbase \
  --disable-mdbtools \
  --disable-python \
  --disable-zope \
  --disable-ruby \
  --disable-java \
  --disable-php \
  --disable-tcl \
  --disable-gtk \
  --with-oracle-instantclient-prefix=/usr/include/oracle/11.2/client/

configureが成功すれば、その後はmake、make installでインストールを完了。

sqlrelay.confの設定

/usr/local/firstworks/etc/sqlrelay.conf.example に設定ファイルのサンプルがあるので、それを /usr/local/firstworks/etc/sqlrelay.conf にコピーし設定する。
設定内容は、http://sqlrelay.sourceforge.net/sqlrelay/configuring.htmlを参照。

環境変数の設定

PATH に /usr/local/firstworks/bin
LD_LIBRARY_PATH に /usr/local/firstworks/lib
を追加。

デフォルト起動インスタンスIDの設定

sqlrelay.confに設定した内容でデフォルト起動となるインスタンスIDを /etc/sysconfig/sqlrelay に記述。

ここまでで各種設定は完了。
> service sqlrelay start
で、デーモンが開始される。

perlからsqlrelay経由でのOracleへの接続

DBIを使用した以下のようなコードで接続できる。

#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect('DBI:SQLRelay:host=localhost;port=sqlrelay.confで設定したポート;socket=',"接続ID","接続パスワード");
my $sth = $dbh->prepare("select * from emp");
$sth->execute;
while ( my @row = $sth->fetchrow_array ) {
	print "$row[0]\n";
}
$sth->finish;
exit;

接続先がsqlrelayに変わるだけで、その他に関してはDBI経由でOracleとやり取りする部分に違いは無い。


mybenjo.netのサーバには、フューチャースピリッツのレンタルサーバを使用しています。

フューチャースピリッツには、映画情報サイト ミニパラがスタートした当初サーバを提供していただいていおり、サポートなどの品質面について、信頼性が高いという評価を持っており、お仕事でサーバ選定案を出す場合には、ほぼ必ず選択肢に出させていただいています。
今回、共用サーバで今までオプションだったデータベースが標準提供となり、wordpressなどのCMSサービスを簡単に始めることが出来るようになりました。

SaaS型メールフォーム作成サービス 「フォームメーラ-」の独自ドメイン版をリリース ~レンタルサーバー「FutureWeb2」に標準搭載~
http://www.futureweb.jp/news/press/20100824.html

ということで、www.mybenjo.netもwordpressに置き換えてみようかと、ちょっと手を動かしてみたのですが、契約が古い共用サーバプランのままで、そちらにはデータベース提供はされていなかった模様。古いプラン自体がサイトを探しても情報が無く、現行プランに切り替えないとならないかも知れない…という状況でした。

今はVPSなどで安いサーバなども数多くあるのですが、仕事で使っているメールアドレスの遅延や未達が怖く、やはり継続して面倒を見てもらえればと考えていて、次回契約更新時に新プランに切り替えようかと思った次第。

とはいえ、ちょっと悔しかったのでmysqlは別サーバで用意して、wordpressを動くようにしてみました。
wordpressは、ちょっとした設定ですぐ動かすことが出来る便利なCMSですので、コンピュータやネットワークの知識がそんなになくても始められますが、以下は、ちょっとだけテクニカルな事柄を一般論的な記述で書いていますので、実施する場合には、詳細は各自で検討するか、お仕事として依頼していただければと思います。

  1. mysqlの動くサーバでwordpress用のデータベースとアカウントを作成する。その際に、特定サーバのIPからのみアクセスできるよう設定する。権限などに注意。
  2. mysqlの動くサーバが、外部IPからmysql接続できるよう、ポートなどの設定を実施する。
  3. wordpressの設定ファイル、wp-config.phpのDB_HOSTをmysqlを準備したサーバのIPにする。
  4. mysqlの動くサーバへ、mysql接続できるよう、ポートなどの設定を実施する。
  5. wordpressのファイル一式をアップして、index.phpにアクセスし、wordpressの設定を完了する。