2013.01.28 · 技術と道具

[HTML5でAndroidアプリ開発] JavaScriptで検索ロジックを実装しよう

連載の第4回目になりました。
前回はユーザインタフェースを作ったのですが、今回は検索ロジックを実装します。ついに、ちゃんとしたアプリになりますよ。

HTML5を使ったAndroidアプリの開発では、ロジックはJavaScriptで書きます。サーバとの通信はAjaxで行います。完全にWebアプリと同じですね。

ユーザインタフェースの振り返り

前回の記事でユーザインタフェースのHTML5コードを掲載しましたが、重要な部分を振り返っておきます。

HTML
<div data-role="header">
<h1>BookNavi</h1>
<form id="searchForm"><input id="keyword" name="keyword" type="search" value="" placeholder="検索キーワード" /></form></div>
<div data-role="content"></div>

実装したいロジックは、検索キーワードを入力してformをsubmitすると、booklistというidのulリストに検索結果を表示すればよいわけです。

検索ロジックの実装

検索ロジックの実装はJavaScriptで行います。AjaxやJSONも使いますのでjQueryを使いたいと思います。
jQueryを使ってイベント処理(ここではformのsubmit)を実装するには、$(document).ready()を使うことが一般的ですが、jQuery Mobileを使う際は、$(document).on(‘pageinit’)を使います。

JAVASCRIPT
$(document).on('pageinit', '#page-home', function(event){
  $('#searchForm').on('submit', function() {
    var keyword = $('#keyword').val();
    if (keyword == '') {
      alert('検索キーワードを入力してください');
      return false;
    }

    url = 'http://api.rakuten.co.jp/rws/3.0/json';
    url += '?developerId=your_developer_id';
    url += '&version=2011-12-01';
    url += '&operation=BooksBookSearch';
    url += '&title=' + encodeURIComponent(keyword);
    url += '&sort=' + encodeURIComponent('-releaseDate');
    url += '&outOfStockFlag=1';

    $('#booklist').empty().listview('refresh');

    $.ajax({
      type: 'GET',
      url: url,
      dataType: 'json',
      success: function(data) {
        for (var i=0; i<data.Body.BooksBookSearch.Items.Item.length; i++) {
          item = '
<ul>
  <li><a href="#detail">';
    item += data.Body.BooksBookSearch.Items.Item[i].title;
    item += '</a>
  </li>
</ul>
          ';
          $('#booklist').append(item);
        }
        $('#booklist').listview('refresh');
      },
      error: function(xhr, status, thrown) {
        alert(status);
      }
    });

    return false;
  });
});

このアプリでは書籍の検索を楽天ブックスのAPIを使っています。結果はJSONで戻ってきますので、1行ずつ処理してbooklistというidのulリストに、liタグを内部挿入しています。

注目して欲しいのは、listview(‘refresh’)というコードです。jQuery Mobileで表示したい部分をDOMで操作した場合、refreshが必要です。

Androidエミュレータで実行してみましょう。

検索結果が表示されていますね。これですっかりアプリといっても過言ではない状態になりました。(まだ過言か・・・)

次回は、検索結果をクリックすると書籍の詳細を表示するようにしていきましょう。

2013/01/28 08:00
← [HTML5でAndroidアプリ開発] HTML5とjQu…
スマートデバイスを使ったソリューションについて調べた →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。