<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/chromeapps/">
    <title>chromeapps @ ウィキ</title>
    <link>http://w.atwiki.jp/chromeapps/</link>
    <atom:link href="https://w.atwiki.jp/chromeapps/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>chromeapps @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-04-29T18:18:14+09:00</dc:date>
    <utime>1335691094</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/43.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/41.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/35.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/chromeapps/pages/37.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/43.html">
    <title>タイマーアプリ ver1.2</title>
    <link>https://w.atwiki.jp/chromeapps/pages/43.html</link>
    <description>
          </description>
    <dc:date>2012-04-29T18:18:14+09:00</dc:date>
    <utime>1335691094</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/22.html">
    <title>作ったもののソース公開</title>
    <link>https://w.atwiki.jp/chromeapps/pages/22.html</link>
    <description>
          </description>
    <dc:date>2012-04-29T18:03:29+09:00</dc:date>
    <utime>1335690209</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/42.html">
    <title>jQuery mobile プラグインの紹介その2</title>
    <link>https://w.atwiki.jp/chromeapps/pages/42.html</link>
    <description>
          </description>
    <dc:date>2012-04-28T00:27:25+09:00</dc:date>
    <utime>1335540445</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/41.html">
    <title>How to be heard ver1.0</title>
    <link>https://w.atwiki.jp/chromeapps/pages/41.html</link>
    <description>
      スペースお借りいたします.
今回, 作ってみたのは英語の発音練習アプリです.
一応, Chrome Extension です.

ここの Wiki に掲載されている, Extension の作り方と, style については, 随分と参考にさせていただきました.

使い方
注意) マイクを接続しないとうまく動きません.
1) ユーザーは, 左上の入力フォームへ単語(文でも良い)を入力する.
2) speak ボタンをクリックし, 1) で入力した単語を話す.
3) 音声認識に成功すれば, speak ボタンの下に, 認識された音声がテキストで表示される.

発音が正しいかどうかの結果について

1) で入力した単語と, 2) でユーザーが話した単語との近さによって, 以下のようにアラームが表示されます.
ユーザーの話した単語とフォームへ入力した単語が, ほぼ同じだった場合, Great!
ユーザーの話した単語とフォームへ入力した単語が, 近いけど少し違う場合, Good!
そうでなければ, Bad!

使用している技術

chrome.experimental.* APIs の chrome.experimental.speechInput

【コメント】
Chrome Extension の音声認識モジュール（？）である, speechinput を利用しています.
しかしながら, 2012/4/26 現在, speechinput は, まだ試験的な Chrome API (experimental.* API と呼ばれるもの? )であるそうです.
なので, speechinput を利用するためには, manifest.json の記述と, Chrome の設定を少し変更する必要があるみたいです.
私の場合, 以下のように変更を加えたらうまくいきました.

1) manifest.json に, 次を加える.
&quot;permissions&quot; : &quot;experimental&quot;
2) Chrome のアドレスバーに, chrome://flags/ と入力し Enter を押す. すると, 試験運用機能の設定画面のようなものが表示される. 表示された項目のうち, &quot;試験運用版の拡張機能 API&quot; というものがあるので, これを有効にする.

詳細に関しては, chrome.experimental.* APIs のリファレンスの参照をお願いいたします.

多分ですが, Chrome のバージョンは最新のものにしたほうが良いです. 
Android で動くかどうかは未確認です.
あと, &quot;speechinput により音声認識がされる=正しい発音&quot;ではないだろう！というツッコミはなしでお願いします(笑

【バグ】
-英語以外の音声認識ができない. 日本語とかもサポートされているみたいですが, 上手く動きませんでした.

-icon_128.png
128x128 ピクセルの, &quot;icon_128.png&quot;という名前のファイルを, html, json ファイルがあるフォルダと同じフォルダへ配置してください.

-manifest.json
 {
   &quot;name&quot;: &quot;Speech Example&quot;,
   &quot;description&quot;: &quot;Testing&quot;,
   &quot;version&quot;: &quot;1.0&quot;,
   &quot;app&quot; : {
    &quot;launch&quot;: {
       &quot;local_path&quot;: &quot;speech.html&quot;
       }
   },
   &quot;icons&quot;: {
     &quot;128&quot;: &quot;icon_128.png&quot;
   },
   &quot;permissions&quot;: [
     &quot;notifications&quot;,
     &quot;experimental&quot;
   ]
 }
-speech.html
 &lt;!DOCTYPE html&gt;
 &lt;html lang = &quot;ja&quot; &gt;
   &lt;head&gt;
     &lt;meta charset = &quot;utf-8&quot; &gt;
     &lt;title&gt; How to be heard&lt;/title&gt;
     &lt;style&gt;
       #userText 
       {
         width : 500px
       }
       #userInputButton
       {
        width : 100px
       }
       #log
       {
         width : 500px
       }
     &lt;/style&gt;
     &lt;script&gt;
 function checkStart()
 {
   if( chrome.extension.lastError )
   { 
     alert( &quot;Could not start speech input: &quot; 
       + chrome.extension.lastError.message );
   }
   else
   {
     var log = document.getElementById( &quot;log&quot; );
     log.innerHTML = &quot;Hearing ...........&quot;;
   }
 }
 // ---------------
 // ---- Event ----
 // ---------------
 function failRecognition( _err )
 {
   alert( &quot;Speech input failed: &quot; + _err.code );
   if( _err.code == &quot;noSpeechHeard&quot; )
   { alert( &quot;noSpeechHeard&quot; ); }
   else if( _err.code == &quot;noResults&quot; )
   { alert( &quot;noResults&quot; ); }
   else if( _err.code == &quot;captureError&quot; )
   { alert( &quot;captureError&quot; ); }
   else if( _err.code == &quot;networkError&quot; )
   { alert( &quot;networkError&quot; ); }
   else
   { alert( &quot;??&quot; ); }
 }
 
 var resultString = &quot;&quot;;
 function succeedRecognition( _result )
 {
   resultString = &quot;&quot;;
   for( i = 0; i &lt; _result.hypotheses.length; i++ )
   {
     //resultString += _result.hypotheses[i].confidence;
     //resultString += &quot; : &quot;;
     resultString += _result.hypotheses[i].utterance;
     resultString += &quot;&lt;/br&gt;&quot;;
   }
 
   // display result
   var log = document.getElementById( &quot;log&quot; );
   log.innerHTML = resultString;
 
   // checking
   var userText = document.getElementById( &quot;userText&quot; );
   userInputString = userText.value;
   for( i = 0; i &lt; _result.hypotheses.length; i++ )
   {
     if( userInputString == _result.hypotheses[i].utterance )
     {
       switch( i )
       {
         case 0:
           alert( &quot;Great!&quot; );
           break;
         case 1:
           alert( &quot;Good!&quot; );
           break;
         default:
           alert( &quot;Bad!&quot; );
           break;
       }
     }
   }
 }
 function endSound()
 {
   var log = document.getElementById( &quot;log&quot; );
   log.innerHTML = &quot;You speak ...&quot;;
 } 
 
 chrome.experimental.speechInput.onError.addListener( failRecognition );
 chrome.experimental.speechInput.onResult.addListener( succeedRecognition );
 chrome.experimental.speechInput.onSoundEnd.addListener( endSound );
 
 function init()
 {
   chrome.experimental.speechInput.start( {&quot;language&quot; : &quot;en&quot; }, checkStart );
 }
     &lt;/script&gt;
   &lt;/head&gt;
   &lt;body&gt;
     &lt;/br&gt;
   &lt;form&gt;
     &lt;input type = &quot;text&quot; id = &quot;userText&quot; placeholder = &quot;Please input a word&quot; &gt;
   &lt;/form&gt;
   &lt;form&gt;
     &lt;input type = &quot;checkbox&quot; value = &quot;English&quot; &gt;English&lt;/input&gt;&lt;/br&gt;
     &lt;input type = &quot;checkbox&quot; value = &quot;Japanese&quot; &gt;Japanese&lt;/input&gt;&lt;/br&gt;
     &lt;input type = &quot;checkbox&quot; value = &quot;Chinese&quot; &gt;Chinese&lt;/input&gt;&lt;/br&gt;
   &lt;/form&gt;
   &lt;button type = button id = &quot;userInputButton&quot; onclick = init() &gt;speak&lt;/button&gt;
   &lt;div&gt;Your words is heard as follows...&lt;/div&gt;
   &lt;div id = &quot;log&quot; &gt;...&lt;/div&gt;
   &lt;/body&gt;
 &lt;/html&gt;

#comment()    </description>
    <dc:date>2012-04-27T00:09:05+09:00</dc:date>
    <utime>1335452945</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/35.html">
    <title>ボールを転がすアプリ</title>
    <link>https://w.atwiki.jp/chromeapps/pages/35.html</link>
    <description>
      HTML5 の canvas を練習するために作りました。
マウスでキャンバス上のボールを転がすアプリです。

使い方

キャンバス上を適当にクリックすると、赤いボールがクリックされた方向へ転がります。
ボールは徐々に減速し、最後には止まります。

使用している技術

html5 の canvas
javascript

【バグ】
-たまに、ボールが壁をすり抜けてしまう。

以下、ソースを掲載します。
-bound.html

 &lt;!DOCTYPE html&gt;
 &lt;html lang = &quot;ja&quot; &gt;
   &lt;head&gt;
     &lt;meta charset = &quot;UTF-8&quot;&gt;
     &lt;title&gt; アニメーションサンプル &lt;/title&gt;
     &lt;style type = &quot;text/css&quot;&gt;
       &lt;!-- キャンバスの定義 --&gt;
       #id_canvas
       {
         position :  absolute;
         top      :     0px;
         left     :     0px;
         z-index  :         1;
       }
     &lt;/style&gt;
     &lt;script src = &quot;./utility.js&quot; &gt;&lt;/script&gt;
     &lt;script type = &quot;text/javascript&quot; &gt;
 // --------------------------
 // ---- コールバック関数 ----
 // --------------------------
 // マウスクリック時に呼ばれる関数
 mouseClkEv = function mouseClickEvent( e_ )
 {
   var rect = e_.target.getBoundingClientRect();
   var mouseClickX = e_.clientX - rect.left;
   var mouseClickY = e_.clientY - rect.top;
   ball.dirTo( mouseClickX, mouseClickY );
   ball.addVelocity( 10 );
 }
 // マウスが動いた時に呼ばれる関数
 mouseMoveEv = function mouseMoveEvent( e_ )
 {
   canvas = document.getElementById(&quot;id_canvas&quot;);
   context = canvas.getContext(&quot;2d&quot;);
 
   var rect = e_.target.getBoundingClientRect();
   var mouseMoveX = e_.clientX - rect.left ;
   var mouseMoveY = e_.clientY - rect.top ;
 
   textArea = document.getElementById(&quot;coodination&quot;);
   textArea.innerHTML = &quot;(&quot;
     + mouseMoveX
     + &quot;, &quot;
     + mouseMoveY
     + &quot;)&quot;;
 }
 // キャンバスを再描画する関数
 function redrawAll( _obstacles, _ball )
 {
   canvas = document.getElementById(&quot;id_canvas&quot;);
   context = canvas.getContext(&quot;2d&quot;);
 
   context.clearRect( 0, 0, width + 10, height + 10 );
   drawAll( _obstacles, _ball );
 }
 function drawAll( _obstacles, _ball )
 {
   drawObstacles( _obstacles );
   drawBall( _ball );
 }
 function drawWalls( _walls )
 {
   canvas = document.getElementById(&quot;id_canvas&quot;);
   context = canvas.getContext(&quot;2d&quot;);
 
   context.beginPath();
   context.strokeStyle = &quot;rgba(0, 0, 0, 0.5)&quot;;
   for( i = 0; i &lt; _walls.length; i++ )
   {
     context.moveTo(
       _walls[i].tailX_, _walls[i].tailY_
       );
     context.lineTo(
       _walls[i].headX_, _walls[i].headY_
       );
   }
   context.stroke();
 }
 function drawObstacles( _obstacles )
 {
   for( j = 0; j &lt; _obstacles.length; j++ )
   { drawWalls( _obstacles[j] ); }
 }
 function drawBall( ball_ )
 {
   canvas = document.getElementById(&quot;id_canvas&quot;);
   context = canvas.getContext(&quot;2d&quot;);
 
   context.beginPath();
   context.strokeStyle = &quot;rgba(255, 0, 0, 0.5)&quot;;
   context.arc(
       ball_.curX_,
       ball_.curY_,
       5,
       0,
       360
       );
   context.stroke();
 }
 // ----------------------------
 // ---- アニメーション関連 ----
 // ----------------------------
 // 0.1 秒毎に呼び出される関数
 // 0.1 秒毎に ball 動かし, 衝突判定と再描画をします.
 // ball は 0.1 秒毎に少しずつ減速します.
 var delta = 0.1;
 function action()
 {
   ball.gensoku( delta ); // 減速
   ball.moveTo( delta ); // 動かす
   collision( obstacles, ball, delta ); // 衝突判定
   redrawAll( obstacles, ball ); // 再描画
 }
 
 onload = function init() 
 {
   drawAll( obstacles, ball );
   // キャンバスへのマウスイベントの登録
   canvas = document.getElementById(&quot;id_canvas&quot;);
   context = canvas.getContext();
   canvas.addEventListener( &quot;click&quot;, mouseClkEv, false );
   canvas.addEventListener( &quot;mousemove&quot;, mouseMoveEv, false );
   // 100 ミリ秒毎に, action() 関数が呼ばれるに, 関数を登録.
   setInterval( &quot;action()&quot;, 1000 * delta );
 }
 
 // インスタンスの定義
 // 障害物の生成
 var obstacles = new Array(0);
 // 外壁の生成
 var width = 500;
 var height = 500;
 var field = new Array(4);
 field[0] = new Wall( 0, 0, 0, height );
 field[1] = new Wall( 0, height, width, height );
 field[2] = new Wall( width, height, width, 0 );
 field[3] = new Wall( width, 0, 0, 0 );
 obstacles.push( field );
 
 // ボールの生成
 // 初期位置は 250, 250
 var ball = new Ball( 250, 250 );
     &lt;/script&gt;
   &lt;/head&gt;
   &lt;body&gt;
     キャンバス↓
     &lt;div id = &quot;coodination&quot; &gt;&lt;/div&gt;
     &lt;canvas id = &quot;id_canvas&quot; width = 1200 height = 1200 &gt;&lt;/canvas&gt;
     &lt;menu type = &quot;toolbar&quot;&gt;
   &lt;/body&gt;
 &lt;/html&gt;

-utility.js
 // 壁にボールが当たって跳ね返る処理を記述したコードです。
 // HTML5 の機能とは関係ないのですが, 掲載いたします。
 // ----------------------
 // ---- 数学いろいろ ----
 // ----------------------
 function normalize( _x, _y )
 {
   d = Math.sqrt( innerProduct( _x, _y, _x, _y ) );
   var ret = new Array(2);
   ret[0] = _x / d;
   ret[1] = _y / d;
   return ret;
 }
 function computeNormalVector( _x, _y, _theta )
 {
   var ret = new Array(2);
   ret[0] =   Math.cos( _theta ) * _x + Math.sin( _theta ) * _y;
   ret[1] = - Math.sin( _theta ) * _x + Math.cos( _theta ) * _y;
   return normalize( ret[0], ret[1] );
 }
 function innerProduct( _ux, _uy, _vx, _vy )
 { return ( _ux * _vx ) + ( _uy * _vy ); }
 function computeRadian( _t ) { return _t * Math.PI / 180.0; }
 // ABC が左回りならば, 正となる符号付き面積.
 function signedArea(
   _ax, _ay,
   _bx, _by,
   _cx, _cy
   )
 {
   temp1 = ( _bx - _ax ) * ( _cy - _ay );
   temp2 = ( _cx - _ax ) * ( _by - _ay );
   return temp1 - temp2;
 }
 function isIntersected(
   _ax, _ay,
   _bx, _by,
   _cx, _cy,
   _dx, _dy
   )
 {
   abc = signedArea( _ax, _ay, _bx, _by, _cx, _cy );
   abd = signedArea( _ax, _ay, _bx, _by, _dx, _dy );
   cda = signedArea( _cx, _cy, _dx, _dy, _ax, _ay );
   cdb = signedArea( _cx, _cy, _dx, _dy, _bx, _by );
   temp1 = abc * abd;
   temp2 = cda * cdb;
   if( ( temp1 &lt; 0.0 ) &amp;&amp; ( temp2 &lt; 0.0 ) )
   { return true; }
   else
   { return false; }
 }
 function intersection(
   _ax, _ay,
   _bx, _by,
   _cx, _cy,
   _dx, _dy
   )
 {
   var n = new Array(2);
   var m = new Array(2);
   var a = new Array(2);
   var b = new Array(2);
 
   n = normalize( _ax - _bx, _ay - _by );
   a[0] = _ax; a[1] = _ay;
   m = normalize( _cx - _dx, _cy - _dy );
   b[0] = _cx; b[1] = _cy;
   beta = ( ( n[1] * ( a[0] - b[0] ) ) - ( n[0] * ( a[1] - b[1] ) ) )
     / ( ( n[1] * m[0] ) - ( n[0] * m[1] ) );
 
   var ret = new Array(2);
 
   ret[0] = ( m[0] * beta ) + b[0];
   ret[1] = ( m[1] * beta ) + b[1];
   
   return ret;
 }
 // ----------------
 // ---- ボール ----
 // ----------------
 function Ball( _startX, _startY )
 {
   this.curX_ = _startX; 
   this.curY_ = _startY; 
   this.preX_ = _startX;
   this.preY_ = _startY;
   this.dirX_ = 1;
   this.dirY_ = 0;
   this.velocity_ = 0.0;  // 速度( pix/sec )
   this.acceleration_ = -4;  // 加速度( pix/sec^2 )
   
   this.dirTo  = function( _x, _y )
   {
     var temp = new Array(2);
     temp = normalize( _x - this.curX_, _y - this.curY_ );
     this.dirX_ = temp[0];
     this.dirY_ = temp[1];
   }
   this.moveTo = function( sec_ )
   {
      this.preX_ = this.curX_;
      this.preY_ = this.curY_;
      this.curX_ += this.dirX_ * sec_ * this.velocity_;
      this.curY_ += this.dirY_ * sec_ * this.velocity_;
   }
   this.gensoku = function( sec_ )
   {
     if( this.velocity_ &gt; 0 )
     { this.velocity_ += sec_ * this.acceleration_; }
   }
   this.addVelocity = function( iV_ )
   {
     this.velocity_ += iV_;
   }
 }
 // ------------
 // ---- 壁 ----
 // ------------
 function Wall( _tailX, _tailY, _headX, _headY )
 {
    this.tailX_ = _tailX;
    this.tailY_ = _tailY;
    this.headX_ = _headX;
    this.headY_ = _headY;
 
    this.collision = function( _ball )
    {
       var normalVector = new computeNormalVector( 
             this.headX_ - this.tailX_,
             this.headY_ - this.tailY_,
             computeRadian( 90.0 ) );
       var tempVector = new Array(2);
       tempVector[0] = -_ball.dirX_;
       tempVector[1] = -_ball.dirY_;
       var a = innerProduct(
             normalVector[0],
             normalVector[1],
             tempVector[0],
             tempVector[1] );
       _ball.dirX_ = ( 2.0 * a * normalVector[0] ) - tempVector[0];
       _ball.dirY_ = ( 2.0 * a * normalVector[1] ) - tempVector[1];
   }
 }
 function collision( _obstacles, _ball, _sec )
 {
   for( j = 0; j &lt; _obstacles.length; j++ )
   {
     for( i = 0; i &lt; _obstacles[j].length; i++ )
     {
       temp = isIntersected(
           _ball.preX_, _ball.preY_,
           _ball.curX_, _ball.curY_,
           _obstacles[j][i].tailX_, _obstacles[j][i].tailY_,
           _obstacles[j][i].headX_, _obstacles[j][i].headY_
           );
       if( temp == true )
       {
         _obstacles[j][i].collision( _ball );
 
         var intCoord = new Array(2);
         intCoord = intersection(
             _ball.preX_,_ball.preY_,
             _ball.curX_,_ball.curY_,
             _obstacles[j][i].tailX_, _obstacles[j][i].tailY_,
             _obstacles[j][i].headX_, _obstacles[j][i].headY_
             );
         _ball.curX_ = intCoord[0];
         _ball.curY_ = intCoord[1];
         _ball.preX_ = intCoord[0];
         _ball.preY_ = intCoord[1];
       }
     }
   }
 }
- jsでオブジェクトとか初めて見たから新鮮… オブジェクト内のメソッドってこんな風に書くのか！  -- たかぎ  (2012-04-23 22:55:50)
- ありがとうございます！実は、僕も初めてオブジェクト使って書いてみました^^  -- 鈴木泰斗  (2012-04-26 22:41:04)
#comment    </description>
    <dc:date>2012-04-26T22:41:04+09:00</dc:date>
    <utime>1335447664</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/40.html">
    <title>jQuery mobile プラグインの紹介その１</title>
    <link>https://w.atwiki.jp/chromeapps/pages/40.html</link>
    <description>
      jQuery mobileのプラグインを紹介します。

機能

タッチパネルで操作する場合、スワイプしてページを移ることができます。
普通のＰＣで開くと左と右に矢印が出るのでそれをクリックすることでページを移ることができます。

導入方法
以下のＵＲＬからjsとcssファイルをダウンロードして使ってください。
https://github.com/filamentgroup/jqm-pagination

#comment()

jQuery mobile1.html

 &lt;!DOCTYPE html&gt;
 &lt;html lang=&quot;ja&quot;&gt;
 &lt;head&gt;
   &lt;meta charset=&quot;utf-8&quot;&gt;
   &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;
   &lt;title&gt;sample1&lt;/title&gt;
   &lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css&quot; /&gt;
 &lt;!-- jquerymobileのcssの後に追記 --&gt;
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;./jquery.mobile.pagination.css&quot; /&gt;
   &lt;script src=&quot;http://code.jquery.com/jquery-1.6.4.min.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js&quot;&gt;&lt;/script&gt;
 &lt;!-- jquerymobileのjsの後に記述 --&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;./jquery.mobile.pagination.js&quot;&gt;&lt;/script&gt;
 
 &lt;/head&gt;
 
 &lt;body&gt;
 &lt;section data-role=&quot;page&quot; id=&quot;page01&quot;&gt;
 &lt;header data-role=&quot;header&quot;&gt;
   &lt;h1&gt; header1 &lt;/h1&gt;
 &lt;/header&gt;&lt;!-- /header --&gt;
 &lt;ul data-role=&quot;pagination&quot;&gt;
   &lt;li class=&quot;ui-pagination-prev&quot;&gt;&lt;a href=&quot;#page02&quot;&gt;1&lt;/a&gt;&lt;/li&gt;
   &lt;li class=&quot;ui-pagination-next&quot;&gt;&lt;a href=&quot;#page03&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/section&gt;
 
 &lt;section data-role=&quot;page&quot; id=&quot;page02&quot;&gt;
 &lt;header data-role=&quot;header&quot; data-theme=&quot;b&quot;&gt;
   &lt;h1&gt; header2 &lt;/h1&gt;
 &lt;/header&gt;&lt;!-- /header --&gt;
 &lt;ul data-role=&quot;pagination&quot;&gt;
   &lt;li class=&quot;ui-pagination-prev&quot;&gt;&lt;a href=&quot;#page03&quot;&gt;1&lt;/a&gt;&lt;/li&gt;
   &lt;li class=&quot;ui-pagination-next&quot;&gt;&lt;a href=&quot;#page01&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/section&gt;
 
 &lt;section data-role=&quot;page&quot; id=&quot;page03&quot;&gt;
 &lt;header data-role=&quot;header&quot; data-theme=&quot;c&quot; data-position=&quot;fixed&quot;&gt;
   &lt;h1&gt; header3 &lt;/h1&gt;
 &lt;/header&gt;&lt;!-- /header --&gt;
 
 &lt;ul data-role=&quot;pagination&quot;&gt;
   &lt;li class=&quot;ui-pagination-prev&quot;&gt;&lt;a href=&quot;#page01&quot;&gt;1&lt;/a&gt;&lt;/li&gt;
   &lt;li class=&quot;ui-pagination-next&quot;&gt;&lt;a href=&quot;#page02&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 
 &lt;/body&gt;
 &lt;/html&gt;    </description>
    <dc:date>2012-04-26T21:41:49+09:00</dc:date>
    <utime>1335444109</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/17.html">
    <title>参考サイト</title>
    <link>https://w.atwiki.jp/chromeapps/pages/17.html</link>
    <description>
          </description>
    <dc:date>2012-04-24T22:59:59+09:00</dc:date>
    <utime>1335275999</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/39.html">
    <title>でんた君</title>
    <link>https://w.atwiki.jp/chromeapps/pages/39.html</link>
    <description>
      [[電卓アプリ]]のＵＩを少しまともにして、機能不足を少し解消しました。

変更点
小数点の計算も可能になりました。
jQueryでUIをまともにしました。

-cal.html
 &lt;html&gt;
 &lt;head&gt;
   &lt;meta charset=&quot;utf-8&quot;&gt;
   &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;
   &lt;title&gt;でんた君&lt;/title&gt;
   &lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css&quot; /&gt;
   &lt;script src=&quot;http://code.jquery.com/jquery-1.6.4.min.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js&quot;&gt;&lt;/script&gt;
 
 &lt;script language=&quot;JavaScript&quot;&gt;&lt;!--
 total = 0;
 input = &quot;&quot;;
 cal = 0;
 work= new Array(&quot;&quot;,&quot;+&quot;,&quot;-&quot;,&quot;*&quot;,&quot;/&quot;)
 f = 1;
 
 function Value(Data){
  f=0;
  input += Data;
  document.myForm.myLine.value = input;
 }
 function C(){
  input=&quot;&quot;;
  total=0;
  document.myForm.myLine.value = input;
 }
 
 function Calc(Data){
  if(f == 0){
   f = 1;
   total = total + work[cal] + input;
   total = eval(total);
   input = &quot;&quot;;
   document.myForm.myLine.value = total;
  }
  if(Data == 5){
   total=0;
   cal = 0;
  }else{
   cal = Data; 
  }
 }
 
 //--&gt;
 &lt;/script&gt;
 
 &lt;/head&gt;
 &lt;body&gt;
 
 &lt;section data-role=&quot;page&quot; id=&quot;page01&quot;&gt;
 &lt;header data-role=&quot;header&quot; data-position=&quot;fixed&quot; data-theme=&quot;b&quot;&gt;
   &lt;h1&gt; でんた君 &lt;/h1&gt;
 &lt;/header&gt;&lt;!-- /header --&gt;
 
 &lt;div data-role=&quot;content&quot;&gt;
 &lt;form name=&quot;myForm&quot;&gt;
  &lt;table&gt;
       &lt;tr&gt;
         &lt;th&gt;&lt;input type=&quot;text&quot; data-inline=&quot;true&quot; name=&quot;myLine&quot; value=&quot;計算結果&quot;&gt;&lt;/th&gt;
         &lt;td&gt;&lt;input type=&quot;button&quot; value=&quot;C&quot; data-inline=&quot;true&quot; onclick=&quot;C()&quot;&gt;&lt;/td&gt;
         &lt;td&gt;&lt;/td&gt;
       &lt;/tr&gt;
 &lt;/table&gt;
 
 &lt;input type=&quot;button&quot; value=&quot;1&quot; data-inline=&quot;true&quot; onclick=&quot;Value(1)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;2&quot; data-inline=&quot;true&quot; onclick=&quot;Value(2)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;3&quot; data-inline=&quot;true&quot; onclick=&quot;Value(3)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;/&quot; data-inline=&quot;true&quot; onclick=&quot;Calc(4)&quot;&gt;
 &lt;br/&gt;
 &lt;input type=&quot;button&quot; value=&quot;4&quot; data-inline=&quot;true&quot; onclick=&quot;Value(4)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;5&quot; data-inline=&quot;true&quot; onclick=&quot;Value(5)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;6&quot; data-inline=&quot;true&quot; onclick=&quot;Value(6)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;*&quot; data-inline=&quot;true&quot; onclick=&quot;Calc(3)&quot;&gt;
 &lt;br/&gt;
 &lt;input type=&quot;button&quot; value=&quot;7&quot; data-inline=&quot;true&quot; onclick=&quot;Value(7)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;8&quot; data-inline=&quot;true&quot; onclick=&quot;Value(8)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;9&quot; data-inline=&quot;true&quot; onclick=&quot;Value(9)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;-&quot; data-inline=&quot;true&quot; onclick=&quot;Calc(2)&quot;&gt;
 &lt;br/&gt;
 &lt;input type=&quot;button&quot; value=&quot;0&quot; data-inline=&quot;true&quot; onclick=&quot;Value(0)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;.&quot; data-inline=&quot;true&quot; onclick=&quot;Value(&#039;.&#039;)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;=&quot; data-inline=&quot;true&quot; onclick=&quot;Calc(5)&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;+&quot; data-inline=&quot;true&quot; onclick=&quot;Calc(1)&quot;&gt;
 &lt;/form&gt;
 &lt;/div&gt;
 &lt;/section&gt;
 
 &lt;/body&gt;
 
 &lt;/html&gt;    </description>
    <dc:date>2012-04-24T20:18:20+09:00</dc:date>
    <utime>1335266300</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/38.html">
    <title>割り勘君（仮）</title>
    <link>https://w.atwiki.jp/chromeapps/pages/38.html</link>
    <description>
          </description>
    <dc:date>2012-04-23T23:06:04+09:00</dc:date>
    <utime>1335189964</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/chromeapps/pages/37.html">
    <title>タイマーアプリ ver1.1</title>
    <link>https://w.atwiki.jp/chromeapps/pages/37.html</link>
    <description>
          </description>
    <dc:date>2012-04-22T23:30:16+09:00</dc:date>
    <utime>1335105016</utime>
  </item>
  </rdf:RDF>
