とうとう関西も梅雨入り。
せっかくの週末なのに、外出をためらってしまうような天候。そこで、iPhoneアプリを作ってみることにした。もっとも、実際のところ、iPhoneアプリを作成するために使用する開発環境“Xcode”までは手がまわらなかったのだが。
iPhoneアプリの題材としては何でも良かったのだが、どうせならよく使うモノを作ろうということで、mixiを自分好みのレイアウトでブラウズするソフトにした。素人が作ることを考慮しても敷居の低い題材と思っています。
端的にいえば、mixiから出力されるHTMLをiPhoneが提供している部品に流し込めば良い。いくつか若干難易度が高そうな処理があるけど、まあ、なんとかなるだろう。全体的におおむね難易度が高くないということは、やる気が持続するということ。
mixiが度々問題になるのは、mixiは度々レイアウトを変更するということ。これにより、ユーザの使い勝手が良くなっていくのかもしれないけれども、アプリは特定のレイアウトを期待した実装になっているので、レイアウトが変われば正しく表示されなくなります。そこで“OpenSocial”という技術でなんとかならないかなと調べていたけど、どうも私の用途には合わないようだ。ごく簡単に言えば、欲しい情報をJavaで記述すれば良く、HTMLのように扱う情報にレイアウトが含まれているわけではないのでアプリ作成の視点では楽なのです。
しかしながら、mixiにおいては“OpenSocial”は“mixiアプリ”で使用することを前提にしているようで、mixiアプリを配置するためのサーバを配置しなければならなかったりで、ちょっと用途に合わないことが分かりました。そこで、泣く泣くレイアウト変更の影響を受けるHTMLを扱うことにしました。
HTMLを扱う上で重要なのは、必要な情報を見つけ出す処理。HTMLはレイアウト情報と実際に必要となる情報とが渾然一体となっているので、後者だけ収集しなければなりません。そこで正規表現なるものを使用することにします。詳細は [http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE 正規表現 – Wikipedia] を確認していただきたい。
正規表現にも方言があるようです。後々に理由は記述しますが、[http://limechat.net/cocoaoniguruma/index_ja.html CocoaOniguruma] を使用することにしました。
一般的にはiPhoneで [http://regexkit.sourceforge.net/RegexKitLite/index.html RegexKitLite] を使うみたいです。でも私の場合はいきなり、iPhoneアプリで正規表現を使ったアプリを記述するのは効率が悪いので、使い慣れた“Ruby”でテキストを抽出することに。
Rubyは正規表現として“Oniguruma”を使っているので、Rubyで確認した正規表現をそのまま使うにはiPhoneで動くOnigurumaがあれば良いのですが…探したらあったのです。それが前述の [http://limechat.net/cocoaoniguruma/index_ja.html CocoaOniguruma] だったのです。素晴らしい。
で、早速ニュースやら最新日記のなどのタイトルや投稿日時などを抽出する正規表現を書いてみたところで一日が終わりました【汗】
つたないソースですが、ニュースの一覧を表示するRubyスクリプトを貼付けておきます。
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require ‘kconv’
require “jcode”
$KCODE = ‘utf-8’
f = open(ARGV[0])
s = f.read
s = s.toutf8
s.gsub!(/\n/,”)
f.close
while s =~ /
.*?(.*?)<\/a>(?:)?<\/p><\/td>.*?
| (.*?)<\/a><\/td>.*?
| (\d{2}).*?(\d{2}).*?(\d{2}).*?(\d{2})<\/td>.*?<\/tr>(.*)/m do
date = $5 + ‘/’ + $6 + ‘ ‘ + $7 + ‘:’ + $8
puts “date=#{date}”
id= $1
media_id = $2
title = $3
news = $4
s = $9
puts “id=#{id}”
puts “media_id=#{media_id}”
puts “title=#{title}”
puts “news=#{news}”
puts ‘———————‘
end
引数に予めmixiから取得したニュース一覧を指定します。
例えば、“注目のピックアップ”なら http://news.mixi.jp/list_news_category.pl?id=pickup&type=bn をブラウザ等でダウンロードしておき、それを指定するのです。
結果は以下のようになります。
date=06/13 20:11
id=1241489
media_id=20
title=「はやぶさ」カプセル分離に成功、大気圏突入へ
news=読売新聞
———————
date=06/13 19:44
id=1241470
media_id=88
title=北陸地方が梅雨入り〜気象庁
news=日テレNEWS24
———————
date=06/13 19:03
id=1241446
media_id=4
title=SFCGから手数料3%徴収=買い戻しで出資法抵触の疑いも−振興銀検査妨害
news=時事通信社
———————
: 《もっと続くのですが省略》
上述のRubyスクリプトにてwhile文で使用している正規表現文字列を、iPhoneアプリでは [http://limechat.net/cocoaoniguruma/index_ja.html CocoaOniguruma] に渡してあげれば良いはず。
まだまだ時間がかかりそうだけれども、梅雨が終わるまでにはなんとか形にしてみようかと思います。
最近、iPhoneで[http://radiko.jp/ Radiko]をサポートするアプリが出てきた。簡単にいうとiPhoneでAM/FMラジオが聞けるようになるのです。
いろいろと技術的以外の観点で問題があるようで、位置情報をチェックして、その地域で聞けるはずの放送のみ聞けるようにしていたり、あくまでこれは実験という位置づけだったり。
ラジオというのは非常に古い媒体だけど、音声のみというところに例えば最近話題の3Dテレビでは実現できない魅力もあるわけで。
懐かしく聞いているのが『[http://www.mbs1179.com/arigato/ ありがとう浜村淳です]』という関西の番組。関西に住んでいる方以外は知らない人も多いと思うけど、この人のしゃべりは本当に凄い。ラジオだからこそ引き立つ話術を持っています。上岡龍太郎のしゃべりの師でもあるので、もし上岡龍太郎を知っていたら、どんな話術なのかは想像しやすいかもしれない。
映画の紹介をしてくださったりもするのですが、あまりに素晴らしく想像力がかき立てられる話術のため、ほどほどの映画だと行かなくても満足しちゃった・・・と思えるくらいです。更には結末まで克明にしゃべってしまうこともあるのでなおさらです【汗】
8時開始でその頃には仕事場にもう着いているのですが、その日にやることを整理しつつ聞いています。この時間帯は時事について話をしていて、時には朝から耳を塞ぎたくなるくらい酷い事件も話題になるのですが、それを覗けば前日や最近起こったことをほどほどに短く、楽しく整理するのに役立っています。
聞くのは学生の時以来。通学に片道1時間くらいかかっていたのでラジオ付きのウォークマンで聞いていた気がします。懐かしい…
先日、仕事の打ち上げを行った。
私がジャズ好きということを知っていた先輩社員が行きつけのジャズバーに連れていってくださったのでした。連れていってもらったのは、『カピルス』というお店。曾根崎にあるお店でした。
残念ながら生演奏は土日のみということで、店内にはとりためたとおぼしきジャズが控えめな音量で流れていたのでした。会話が弾むとほとんど聞こえないくらいの音量。ジャズを楽しむためではなく、お店の雰囲気づくりのためだと思われます。流れていたのはスウィング系とフリージャズみたいで、知らない人が聴いたらBGMにしかならないのでは。
お店としてもそういう選曲をしているのでしょう。
お店の立ち位置は微妙で、ジャズバーと言われたらそうかもしれないし、スナックといわれたらそうかもかもしれない。
女の子と会話をするのが目的というお店は好きではないけど、このお店のママさんは教養が感じられ、楽しく過ごせました。そのママさんが命名したのが『カピルス』。意味を尋ねたら、サンスクリット語で『朝日が昇る、旅立ち、出発』という意味なんだそうです。
また先輩に連れられて行ってみようかなと思っています。
[http://www.kapirusu.jp/index.html 大阪・梅田・曽根崎のスナック・ラウンジ・ジャズバー・ピアノバー[カピルス]名物ママによる無料運命鑑定も]
http://www.kapirusu.jp/
[img_assist|nid=812|title=新しく購入したiPhoneジャケット|desc=プラスチックに牛革を圧着したジャケット。 牛革オンリーよりも薄く、比較的丁寧な仕上げで気に入っています。|link=node|align=left|width=320|height=240]
iPhoneが故障してしまいました。
現象はボリュームキーとマナーモードスイッチが効かなくなってしまったのです。原因は落下させてしまったからなのですが・・・ちょっと運が悪かった。
訳あってアップルではなく、修理代行業者にお願いした。修理にかかった時間は2時間。値段はそれなりだったけど、特急料金と理解し、納得することにした。
これまでプラスチック製で、表面を光沢のある樹脂を蒸着させたような『ジャケット』を使っていたのですがこれがとても滑る。
そんなわけで、大手量販店でジャケットを物色。シリコン製は誇りがつきやすかったりへたると素材が伸びたりするので候補がはずし…表面が滑りやすい加工をしたプラスチックも候補からはずし…なかなかいいのがないなーと思いながらながめていてふと目についたのが革製のジャケット。その中でも購入したものはプラスチックに牛革を圧着したものです。赤い部分はエナメル加工(!?)をしているので少々滑りやすいけどプラスチックほどではありません。
真ん中の黒のラインはシボのある加工。パッと見たところ、革っぽくないんだけれども、ちゃんと革の独特のにおいがしています。
革とプラスチックは圧着加工をほどこしているのですが、完全に一体化しているように見えます。うん、気に入った!あとは、これで落下事故がなくなるといいな〜。
[img_assist|nid=811|title=これまで使用していたiPhoneジャケット|desc=写真では分かりにくいですが、表面に光沢加工が施してあります。そのためとても滑りやすい。 よって引退してもらうことにしました。|link=node|align=center|width=320|height=240]
|