Squirrel MailログインページをiPhone向けにカスタマイズ

iPhone OSのファームウェア2.1で、auの絵文字入りメールが全文文字化けするようになってしまいました。以前は絵文字部分だけが化けてたので内容は読み取れたのですが、今回は全文化けてしまうのでどうにもなりません。IMAPもMobileMeもダメです。

で、対策されるまでの一時しのぎで、文字化けメールが来た時はSafariからPHPベースのWebメールASPであるSquirrel Mailを使って読んでいるんですが、このログインページがデフォルトだと写真のように表示され、フォームの選択がやりづらい。ダブルタップでも拡大してくれず、ピンチで手動ズームする必要があります。

対策前

そこで、例によってmetaタグを追加して、iPhone/iPod touchで適当な倍率で表示されるようにしてみました。

なお使用中のバージョンは1.4.8です。

手を加えたのは、functions/page_header.phpです。30行目付近にページ先頭部分のHTMLが定義されているので、赤字部分を追加するだけです。PCでは解釈されず無視されるので影響はないはずです。

    echo ‘<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>’ .
         “\n\n” . html_tag( ‘html’ ,” , ”, ”, ” ) . “\n<head>\n” .
         “<meta name=\”viewport\” content=\”width=device-width, hight=device-height, initial-scale=0.8, \
user-scalable =yes\”>\n” .

         “<meta name=\”robots\” content=\”noindex,nofollow\”>\n”;

initial-scaleは0.8位だと縦画面でちょうど良い感じになりました。横画面メインの方は適宜調節してみて下さい。

対策後

こんな感じになりました。たかだかピンチ1回の手間ですが、省けるものは省いた方が気分が良いです(ピンチは片手持ちでできないので結構手間ですしね)。

iPhoneからAsteriskで発信するAsteriskC2D

AppStoreにAsteriskC2D[iTunesで開く]というアプリがあります。説明によるとiPhoneからAsteriskでダイヤルできるようなことが書いてあります。まさかSIPクライアント!と期待するワケですが、残念ながらダイヤルしてくれるだけ。実際の通話は別のSIP端末でする必要があります。

なにが便利かというと、iPhoneの電話帳に登録済みの番号へ固定電話(Asterisk)からかけたい、なんて時にiPhone上の番号を見ながら電話機のテンキーを叩かなくていい、って位ですね。\115とは言え、有料アプリ買ってまでしたいことかどうかは微妙です。

でも物好きなので試してみましたw。AppStoreの説明読んでも具体的にどう機能するのかさっぱりだし、探しても日本語の情報(どころか英語も)が見つからなかったので書いておきます。

■動作の仕組み

Asterisk(とWebサーバー)が動いているマシンに、専用のPerlスクリプトをインストールし、iPhoneからはhttpでそれを叩いているようです。Perlスクリプトは(必要ライブラリからして)Asteriskにtelnetして操作をしているようです。公式サイトによれば、元々はMac用のクライアントが主みたいですね。ブラウザ上で表示している番号などに簡単に発信するためのソフトのようです。ただし、iPhoneの場合は連絡先に登録した番号を呼び出せるだけ。まぁ、OSとしてコピペがない以上、どうしようもないんでしょうね。

■実際の操作手順

iPhoneにAsteriskC2Dアプリをインストールすると、設定画面にAsteriskC2Dという項目が追加されるので、そこから設定を済ませておきます。Extension欄に通話に使いたい電話機のSIP番号を指定します。UsernameとPasswordはLDAPを使う場合のもので、使わないのであれば、後述の設定をしておけば設定しなくて良いのかも知れません。

次にAsteriskC2Dアプリを立ち上げます。押せるのはContactsボタンのみ。押すと文字通り連絡先画面が開き、番号を選ぶと最初の画面に戻ってきます。

この状態で既に発信作業は行われており、間髪をおかずしてExtensionで指定した電話機が鳴ります。芸が細かいことに、発信者番号は発信先のものが表示されます。つまり、Aさんに発信した場合、あたかもAさんからかかってきたように見えるわけです。

電話を取ります。するとその時点で発呼がかかるようで、受話器からは呼び出し音が聞こえ、相手が出ると通話が開始できる、という流れです。

■サーバースクリプト導入のTips

サーバー側の設定は公式サイトに解説ページがあります。ただ少しいじる必要がありました。まずウチはLDAPを使っておらず、またCPANのライブラリもサクっとインストールできなかったので、LDAP関連の部分を無効化しました。

#use Net::LDAP;

設定部分直後の下記3行もコメントアウト 。

#my $ldap = Net::LDAP->new($LDAPServer, debug=>0) ||die "$@\n";
#my $ldapbind = $ldap->bind("uid=$in{‘username’},$LDAPSearch", password => $in{\’password’});
#if ($ldapbind->is_error()) {print "NO! username/password incorrect\n"; die "username/password incorrect: $in{‘username’} -> $in{‘password’}";}

また、番号の先頭に無駄に9を追加するので、 下記の行もコメントアウト。

#if ((substr($exten,0,1) ne ‘9’) && (length($exten) > 4) ) { $exten = ‘9’.$exten; }

あと、このスクリプト自体が勝手に呼ばれないよう、Apacheのアクセス制限で、LAN以外からはdenyするようにしておきます。同時にディレクトリ名やファイル名も適当に変えておくといいでしょう。

このスクリプトは以下のようなURIで簡単に電話がかけられるので、他にも応用が利くかも知れません。

AsteriskC2D.pl?deskphone=[使いたい電話機のSIP番号]&toCall=[発信したい電話番号]

rep2をiPhoneに最適化しよう

ASP型2chリーダーのrep2は、PCとケータイで2chの未読やお気に入り管理を共通管理できて重宝しています。そのrep2のケータイ用UIをiPhoneに最適化しようってスレ「p2をiPhoneに対応させようぜ」が当の2chのiPhone板に立っていて、非常に活発に改良が進んでいます。

現状の画面はこんな感じ。

IMG_0010 IMG_0009
お気に入りスレ一覧 レス表示

 

■試験導入

今のところ、ケータイ用ビュー(&b=k)を上書きする形でパッチが配布されているのと、まだ開発途上ということなので、ウチでは本環境をいじらずに済ませるべく、以下の手順で導入してみました。

  1. 既存インストールフォルダ(例. rep2)を、丸ごとコピーする(例. rep2i)
  2. rep2i/data/フォルダを削除し、rep2/dataからシンボリックリンクを張る(例. ln -s rep2/data rep2i/data)
  3. 最新パッチをrep2i側に上書きコピーする

これで一応、動いています。まぁ、iPhoneがあれば、わざわざ通常のケータイからアクセスすることはないとは思いますが。

■お気に入りスレ一覧へ簡単に戻れるようにする

σ(^^)は基本的にPCでお気に入りスレ一覧を管理してあり、ケータイからはそこの最新レスを読むだけなので、スレ一覧画面が基本画面となります。しかし、現状ではレス表示画面からはトップ画面にしか遷移できません。ブラウザの「戻る」だと、レスが何ページにも及んだ時に手間になります。トップ画面へはお気に入りスレ一覧から戻れるので、とりあえず、レス表示画面下のTOPボタンのリンク先をお気に入り一覧に書き換えてみました。

補足:以下、2008年9月末時点のバージョンに即して修正しました。

iphone/read_footer_k.inc.phpの75行目付近

書き換え前:

<li class=”home”><a href=”index.php?&b=k”>TOP</a></li>

書き換え後:

<li class=”home”><a href=”subject_i.php?spmode=fav&sb_view=shinchaku“>お気に入り一覧</a></li>

これで移動中の2ch閲覧がかなり快適になりました。電車の暇潰しに最高です(^^)v。

iPhoneとPCでメモを共有できるWebアプリ作成

iPhoneとPCのデータ同期を手軽に行えるMobileMeですが、残念ながらメモに対応していません。AppStoreも毎日眺めてますが、なかなか満足のいく同期機能付きメモソフトが出てきません。

そこで、当座しのぎとして簡単なASP型メモシステムを作ってみました。単なるPHP + RDBMSを使ったテキスト保存ページなので、iPhoneが圏外の時はアクセスできませんが…

iPhone専用っぽいUI部品やCSSを使って、外観をネイティブアプリっぽく仕上げたのがポイントです。

 

トップページ

トップページ。リストで見えてるのはカテゴリ一覧です。

右上が新規作成ボタン、左上が検索ボタンです。


メモ一覧 

カテゴリを選んで、メモ一覧に遷移したところ。

この画面から新規作成を押した場合、デフォルトで当該カテゴリが選ばれてる、とかいう細かいとこまで作り込みました(^^;)。


閲覧画面

閲覧画面。

PalmやiPhoneの内蔵メモなんかだと、いきなり編集状態になるのが普通なんですが、textareaに入れてしまうとスクロールが大変、というiPhone特有の問題を考慮して、とりあえずフォームにせず全文を表示する閲覧モードを設けることにしました。

写真には映ってないですが、下の方に編集と削除ボタンがあります。実は編集ボタンを押さずとも、textarea自体を触っても編集モードに移行できます。

電話番号、URLは自動的にリンクになります。


編集画面

編集画面。

こっちがtexeareaを使ったフォームです。

閲覧画面と間違えにくいよう、背景色を微妙に変えています。

widthを微妙に調整して、閲覧画面と折り返し位置が同じになるようしてみましたが、完璧にはなりませんでした(画面だと、一番下の行は折り返し位置がズレてます)。

下の方にカテゴリ選択メニューと保存、取り消し(保存しないで戻る)ボタンがあります。

編集中にページを閉じたりSafariを終了しようとした場合にも保存を促すようにしたいなと思っています。

検索画面

検索ページ。

全文検索ができます。


PCで見たところ

PC用のページをOpera9.5で表示させたところ。


Windows Home Server Power Pack1、ようやく登場

待望のPower Pack 1が登場しました。>Windows Home Server

日本語リソースは含まれなかったっぽいですが、お目当ての64bit版クライアントはバッチリ入ってました。第1四半期に登場予定だったので、春に仕事用マシンを64bit、しかもRAID-0で組んでしまってたのが、ようやくバックアップできます。いやぁ、今まで何事もなくて良かった(^^;)。

他にもパフォーマンスや省電力面の改善やリモートアクセスの向上なども含まれている様子。目に見えにくい改良が多いですが、とにかく嬉しい限りです。

さっそく導入。64bitマシンにも問題なくクライアント入りました。これから初回バックアップかけます。

リモートアクセスはなにが変わったんでしょうね?後で出先からログインしてみます。

組み込み済みハードが売られていない日本ではさっぱり話題になりませんが、個人的には非常に重宝しています。既に何度も助けられました。マシン毎にバックアップ時間帯を決められないのが不便ですが(夜中に寝室マシンが起きるとこっちまで目が覚めてしまう)、もはや手放せないソリューションです。