APIの利用についてしかWebへのアクセスについて解説してきませんでした。API以外でのネットワークアクセスについて解説していきます。APIを持たない情報源からの情報の取得,つまりはhtmlでのみ提供されている情報を取得し必要な部分だけ利用する方法として,YQLの利用についても解説します。Ti.Network.HTTPClient詳細Ti.Network.HTTPClientについては連載第2回で解説したあと,tm_twitter_apiを経由した利用しか解説しませんでした。Ti.Network.HTTPClientは単体でも非常に高機能なオブジェクトです。jsonの取得だけでなく,XMLの取得や画像の取得も可能です。this.responseText}xhr.send();というようにresponseTextプロパティで取得している例が多くありますが,this.responseXMLとしてレスポンスを受け取ると,XMLをparseしJavaScriptのオブジェクトとして扱うことができます。例として,はてなブックマークの人気エントリのRSSを取得し表示してみます。showItems(items);}xhr.send();このように簡単に記述することができるので,JSONのAPIを持たないようなサービスでもRSSなどXMLを利用して情報を取得できることがあります。難点は,parseした後のXMLのオブジェクトがもつAPIが少しわかりずらいので,このサンプルや,KitchenSinkなどの例を参考に実装を進めてみてください。APIが実装されているとのことです。サーバーの返すcontent-typeがapplication/xmlでない場合や,XMLの形式が正しくなかった場合にはむりやりにparseされることはなく,nullオブジェクトになることがあるので注意してください。人気エントリのタイトル一覧データの取得ネット上にある画像の表示は,Ti.UI.ImageViewを利用すると簡単に行えますが,直接ファイルを取得して保存したいというような例もあります。Mobileの汎用的なデータを表すオブジェクトであるBlobオブジェクトを取得できます。このオブジェクトを利用すると下記のように取得した画像をファイルシステムやアルバムに保存できます。}xhr.send();この例では,画像を取得し画面に表示すると同時に,Ti.Media.saveToPhotoGalleryメソッドを使って端末のアルバムに画像を保存しています(このメソッドはiOSでのみ有効です⁠)⁠。動画や音楽など画像以外のファイルもこの方法で取得することができます。同期的リクエストxhr.open('GET','http://cdn-ak.f.st-hatena.com/images/fotolife/r/r_kurain/20090622/20090622140659.jpg',false);openメソッドの第3引数をfalseにすると,非同期リクエストが無効になります。httpリクエストが終わってonloadに指定されている関数の実行が終わるまで待つことができます。この方法はiOSでしか有効でないので,Androidと共通に使うコードでは利用しないように実装する必要があります。YQLJSONもXMLも用意されていないWebPageから情報を取得したいということも,スマートフォンアプリを作成しているとよくあります。Ti.Network.HTTPClientを利用してhtmlを取得した上で,正規表現を利用してhtmlから必要な情報を取得するという方法もありますが,対象とするhtmlが巨大な場合には通信時間が長くなりますし,正規表現では抽出しずらいデータ構造もありえます。そのようなときに便利なのがYQLの利用です。inc.が提供しているサービスで,Web上にある情報をYQLと呼ばれるSQLに似た言語で取得することができるサービスです。Yahoo!が運用していることもあり,安定していますし,それなりの速度で応答してくれます。どのようなリクエストが書けるかは,web上のhttp://developer.yahoo.com/yql/console/から試すことができます。いうURLだけがわかっているときに,このURLが返すhtmlのタイトルだけが取得したいとします。xpath="//head/title"と記述するだけで取得できます。この例ではfrom句では対象をhtmlファイルと指定し,where句で,対象とするurlと取得するエレメントのxpathをしています。Consoleで試してみてから,Titaniumへの実装に持って行くと便利です。YQLへのTitaniumからのアクセス方法は,次のようになります。});第一引数がYQLになっており,第二引数のcallback関数に渡ってくるオブジェクトにデータ取得の可否についてのプロパティであるsuccessと,実際にYQLを実行した結果であるdataプロパティが格納されています。Consoleで確認できるresultパラメタと同じになっています。API利用以外でも便利なネットワーク周りの機能について解説しました。YQLを利用すると,htmlのパースをしないと情報の取得が難しいような場合でもTitaniumだけで済ますことができるようになっています。今回のサンプルコードもhttps://github.com/kurain/TitaniumNetworkSampleで確認できますのであわせて御覧いただければと思います。アプリケーションエンジニア。スマートフォンアプリからSQLチューニングまで幅広く格闘中。好きな言語はRuby。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。