ホーム > タグ > iPhone

iPhone

2008 年の iPhone アプリベスト 5

今日で 2008 年も終わり。
今年はなんと言っても「iPhone の年」でしょう。
というわけで、自分がインストールしたアプリ 197 個(!)の中から 2008 年の iPhone アプリベスト 5 をご紹介。
個人的にお世話になっているアプリたちです。

1. NatsuLion for iPhone
Twitter クライアント。
おそらく iPhone 用 Twitter クライアントの中でも、1・2を争う使いやすさのアプリ。
ベータテストから参加させていただいて、思い入れが深いアプリ。もう手放せません。

2. Remember The Milk
オンラインタスク管理サービスの Remember The Milk の iPhone 版。
素晴らしい完成度で、本家 Web よりも使いやすいと言っても過言ではない。
このアプリが出たのをきっかけに Pro 版へアップグレードしました。

3. NetNewsWire
RSS リーダ。
当初は Livedoor Reader を使っていたのですが、iPhone で快適に見れるものを求めて Google Reader、そして NewNewsWire に乗り換えました。
フィードを管理する NewsGator、Mac 版の NetNewsWire と同期されるので、iPhone で RSS を消化していき気になった記事をクリップ→Mac 版 NetNewsWire でクリップした記事をまとめ読み、という運用をしています。

4. Rolando
iPhone / iPod touch 専用に開発されたゲーム。
iPhone を傾けたりタッチしながらローランドーというキャラクタをゴールの扉まで運ぶというゲームです。
最近買ったばかりなのですが、時間が空くとすぐにプレイしてしまい、クリアしました。
クリアした後でもやり込める要素があるので何度でも遊べます。
iPhone / iPod touch のゲームの中でベストアプリと言えるほどの楽しさです。
iPhone / iPod touch ユーザは全員買うべし。そのぐらいオススメです。

5. Big Canvas PhotoShare
写真共有 SNS。
インタフェースが考えられており、iPhone のカメラで撮った写真を簡単にアップロードして、家族や友達と共有できます。
他の人が投稿した写真を見たり、コメントを書き込んだりといったことが楽しい。
「写真を共有する」ということの楽しさを教えてくれたアプリです。

というわけで、今年は iPhone と AppStore から次々出てくるアプリのおかげで、生活が変わりました。
来年も素敵なアプリがたくさん登場することを楽しみにしてます。

WordPress 2.6.2 にバージョンアップ

最近ずっと放置していた、WordPress のバージョンアップをして、2.6.2 にしました。

以前のバージョンから結構バージョンが空いているので、すんなり終わるか心配でしたが、取り越し苦労で済みました。
アップグレードの手順としては、ほぼ下記の記事の通りでした。
sukechan.net - WordPress 2.2.3 ME から 2.3.3 日本語版に移行

それと、WordPress を iPhone/iPod touch に最適化するプラグイン「WPtouch」を入れてみました。こんな感じになりました。

参考リンク

iPhone 向けのタスク管理アプリを作ってみる

iPhone を買って約 1 ヶ月が立ちました。
AppStore には毎日のように新しいアプリが登場していて、うずうずしてきたのでアプリを作り始めました。
とはいってもネイティブアプリではなく、Safari 上で動く Web アプリです。
今回は iPhone 用の Safari にも組み込まれている SQLite を JavaScript から利用できる SQL API を使って、タスク管理(ToDo 管理とも呼びますね)アプリを作ってみようと思います。

せっかく iPhone 向けのアプリなので、インタフェースはやっぱりこだわりたいところ。
その iPhone 向けインタフェースのテンプレートが提供されているので、今回はそれを使いました。

iphone-universal - Google Code

まだ作成途中ですが、下記のリンクから試すことができます。Safari でアクセスしてください。

>>作成したアプリ

注:データベースを削除したい時は、
・通常の Safari の場合:「環境設定」→「セキュリティ」→「データベースを表示」→データベースを選択して「取り除く」
・iPhone 版 Safari の場合:「設定」→「Safari」→「Databases」→編集ボタン→削除
でできます。

今までできたところまで、ホーム画面はこんな感じです。

iphone_tasks_sample.png

テンプレートのおかげで、あまり工数をかけずに iPhone 向けインタフェースができました。

そして SQLite を操作する JavaScript ソースが以下。
こちらのサイトを参考にしました。

// DB オブジェクト
var db;

// DB 初期化(テーブルが無ければ作成する)
function init() {
  if(window.openDatabase) {
    db = openDatabase('test_db', '1.0', 'Tasks');
    db.transaction(
      function(tx) {
        tx.executeSql('SELECT COUNT(*) FROM tasks', [],
          function(tx, rs) {},
          function(tx, error) {
            tx.executeSql('CREATE TABLE tasks (id INTEGER PRIMARY KEY, body TEXT, cmp_f BOOLEAN, priority INTEGER)', [],
              function() {},
              function(error) {
                alert('Database does not created. : ' + error.message);
              }
            );
          }
        );
      }
    );
  } else {
    alert('Sorry, this browser does not supported.');
  }
}

// タスク一覧を表示する
function show() {
  var incmp = document.getElementById('incomplete_list');
  var cmp = document.getElementById('completed_list');
  if(!(incmp && cmp)) return;

  // 現在表示しているタスクをクリアする
  while(incmp.hasChildNodes()) {
    incmp.removeChild(incmp.firstChild);
  }
  while(cmp.hasChildNodes()) {
    cmp.removeChild(cmp.firstChild);
  }
  var ul = document.createElement('ul');
  incmp.appendChild(ul);
  var ul = document.createElement('ul');
  cmp.appendChild(ul);

  // タスク一覧を取得して表示する
  db.transaction(
    function(tx) {
      tx.executeSql('SELECT * FROM tasks ORDER BY priority', [], function(tx, rs) {
        for(var i = 0; i < rs.rows.length; i++) {
          var row = rs.rows.item(i);
          var list = (row.cmp_f == 't') ? cmp : incmp;
          appendItem(list.firstChild, 'edit.html?id=' + row.id, 'arrow', row.body, row.priority);
        }

        // タスク件数が 0 件の場合
        if(incmp.firstChild.childNodes.length == 0) {
          appendItem(uncmp.firstChild, '#', null, '(No Item)', null);
        }
        if(cmp.firstChild.childNodes.length == 0) {
          appendItem(cmp.firstChild, '#', null, '(No Item)', null);
        }
      });
    },
    function(error) {
      alert('Task data does not get. : ' + error.message);
    },
    function() {}
  );
}

// リストを追加する
function appendItem(prt, hrf, cl, val, pri) {
  if(!prt) return;
  var li = document.createElement('li');
  li.className = 'pri' + pri;
  prt.appendChild(li);
  var a = document.createElement('a');
  a.href = hrf;
  if(cl) a.className = cl;
  li.appendChild(a);
  var t = document.createTextNode(val);
  a.appendChild(t);
}

// タスクを新規作成する
function add() {
  var b = document.getElementById('body');
  if(!b) return;
  var body = b.value;
  var p = document.getElementById('priority');
  if(!p) return;
  var idx = p.selectedIndex;
  var priority = p.options[idx].value;
  db.transaction(
    function(tx) {
      tx.executeSql('INSERT INTO tasks VALUES(NULL, ?, ?, ?)', [body, 'f', priority]);
    },
    function(error) {
      alert('Task does not create. : ' + error.message);
    },
    function() {
      location.href = 'index.html';
    }
  );
}

// タスクを削除する
function del() {
  var id = getIdValue();
  if(!id) return;
  if(window.confirm('Delete this task ?')) {
    db.transaction(
      function(tx) {
        tx.executeSql('DELETE FROM tasks WHERE id = ?', [id]);
      },
      function(error) {
        alert(error.message);
      },
      function() {
        location.href = 'index.html';
      }
    );
  }
}

// タスクを完了/未完了にする
function cmp(f) {
  var id = getIdValue();
  if(!id) return;
  db.transaction(
    function(tx) {
      tx.executeSql('UPDATE tasks SET cmp_f = ? where id = ?', [(f) ? 't' : 'f', id]);
    },
    function(error) {
      alert(error.message);
    },
    function() {
      location.href = 'index.html';
    }
  );
}

// 1 つのタスクを表示する
function showOne() {
  var id = getIdValue();
  if(!id) return;
  db.transaction(
    function(tx) {
      tx.executeSql('SELECT * FROM tasks WHERE id = ?', [id], function(tx, rs) {
        if(rs.rows.length > 0) {
          var row = rs.rows.item(0);
          var body = document.getElementById('body');
          if(!body) return;
          body.value = row.body;
          var p = document.getElementById('priority');
          if(!p) return;
          p.value = row.priority;
          if(row.cmp_f == 't') {
            var elm = document.getElementById('cmp');
          } else {
            var elm = document.getElementById('uncmp');
          }
          elm.style.display = 'none';
        } else {
          alert('Task does not exist.');
        }
      });
    },
    function(error) {
      alert(error.message);
    },
    function() {}
  );
}

// タスクを更新する
function update() {
  var b = document.getElementById('body');
  if(!b) return;
  var body = b.value;
  if(body.length > 0) {
    var id = getIdValue();
    if(!id) return;
    var p = document.getElementById('priority');
    if(!p) return;
    var priority = p.value;
    db.transaction(
      function(tx) {
        tx.executeSql('UPDATE tasks SET body = ?, priority = ? WHERE id = ?', [body, priority, id]);
      },
      function(error) {
        alert('Task update failed. : ' + error.message);
      },
      function() {
        location.href = 'index.html';
      }
    );
  } else {
    alert('Please input body.');
  }
}

// QueryString から ID 値を取得する
function getIdValue() {
  if(location.search.length > 0) {
    var arr = location.search.substr(1).split('&');
    for(idx in arr) {
      var k = arr[idx].split('=');
      if(k[0] == 'id') return k[1];
    }
  } else {
    return null;
  }
}

iPhone のホーム画面を晒してみる

iPhone 発売から早 1 ヶ月。

若旦那の独り言 Ver.X さんのところでやっていた、あなたのiPhone、見せてください!に便乗して、自分の iPhone のホーム画面を晒してみます。

1 ページ目

iphone_home_page1.png

ここには純正アプリとよく使うアプリを置いています。
一番下(ドックっていうのかな?)には新着があった時にどの画面を開いていても分かるように電話、SMS、メールを配置。

2 ページ目

iphone_home_page2.png

ここは全てゲームですね。暇つぶしにサクッとできるゲームがいろいろ。
全部無料のアプリですが、今は Super Monkey Ball とボンバーマンが気になってます。

3 ページ目

iphone_home_page3.png

ここは結構適当にほうりこんであるアプリたち。

4 ページ目

iphone_home_page4.png

ここも適当にほうりこんであります。PhoneSaber は人にみせびらかす時には最適ですw

iPhone 3G!

iPhone 3G

噂通り、WWDC 2008 で iPhone 3G が発表されました。

日本での発売日が 7 月 11 日ということで、こんなに早いとは思いませんでした。

詳しくはアップル - iPhone を。

価格は、

  • 8GB $199(Black)
  • 16GB $299(Black, White)

とかなり安いですね。日本ではどれぐらいの値段になるのか気になります。

それと、データ通信の料金プランがどうなるかが気になってます。
6,000 円〜7,000 円の使い放題プランが出れば、今の携帯 + iPhone でもいいかなぁと思ってます。

既に一部のソフトバンクショップでは予約を受け付けているところもあるとか。
ということで、7 月 11 日が待ち遠しい限りですね。

 Page 2 of 2 « 1  2 

Home > Tags > iPhone

Search
Feeds
Meta
あわせて読みたい
あわせて読みたいブログパーツ
Others...
フィードメーター - sukechan.net
track feed

Return to page top