<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tender Surrender &#187; Mac</title>
	<atom:link href="http://devlog.agektmr.com/ja/archives/category/mac/feed" rel="self" type="application/rss+xml" />
	<link>http://devlog.agektmr.com</link>
	<description>未来のソーシャルウェブを夢見るブログ</description>
	<lastBuildDate>Mon, 05 Jul 2010 05:13:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>JA</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Snow LeopardにMySQLをインストールする</title>
		<link>http://devlog.agektmr.com/ja/archives/673</link>
		<comments>http://devlog.agektmr.com/ja/archives/673#comments</comments>
		<pubDate>Thu, 10 Sep 2009 17:25:23 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Partuza!]]></category>
		<category><![CDATA[Shindig]]></category>
		<category><![CDATA[Snow Leopard]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=673</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F673", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F673%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Snow%20Leopard%E3%81%ABMySQL%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F673", "style": "big", "title": "Snow LeopardにMySQLをインストールする" });</script></div>
<p>Mac OS XをSnow LeopardにしたらPHPが5.3になってて、PartuzaやShindigを使うのにentropyを入れなくても済んで、とても素敵です。</p>
<p>しかし同環境でMySQLを使うのに、ちょっとごにょごにょしなければならなかったのでメモを残しておきます。(2009年9月現在の情報です)</p>
<h2>MySQLをダウンロード</h2>
<p>MySQLのバイナリを<a href="http://dev.mysql.com/downloads/" target="_blank">こちら</a>からダウンロードします。このページの下の方にあるMac OS X(package format)の中から、(Snow Leopardは10.6ですが)Mac OS 10.5(x86_64)を選びます。</p>
<h2>MySQLをインストール</h2>
<p>インストールはGUIでできます。環境設定項目とスタートアップアイテムもインストールしちゃいます。パスも切っておきましょう。</p>
<p>~/.bash_profileを作るか、既にあれば下記を追記します。</p>
<pre>PATH=$PATH:/usr/local/mysql/bin
export PATH</pre>
<p>さらに</p>
<pre>&gt; source ~/.bash_profile</pre>
<p>とかやれば、即時反映できます。</p>
<h2>ごにょごにょする</h2>
<p>ここからがポイント。</p>
<pre>&gt;  cd /usr/local/mysql
&gt;  sudo ./script/mysql_install_db</pre>
<p>そんで</p>
<pre>&gt;  sudo cp /etc/php.ini.default /etc/php/ini
&gt;  sudo vim /etc/php.ini</pre>
<p>とかやって、</p>
<pre>mysqli.default_socket = /var/mysql/mysql.sock</pre>
<p>の部分を</p>
<pre>mysqli.default_socket = /tmp/mysql.sock</pre>
<p>に書き換えます。</p>
<p>これで、MySQLを立ち上げ直せば、オッケー。環境設定からMySQLをスタートすれば、PHPでMySQLが使えるようになったはず。</p>
<h3>追記</h3>
<p>ちなみにこの設定はPartuzaの動作を確認したのみですので、他のことをやる場合はもう少しいじる必要があると思います。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/673/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FriendConnect向けあしあとガジェット公開とコード解説</title>
		<link>http://devlog.agektmr.com/ja/archives/325</link>
		<comments>http://devlog.agektmr.com/ja/archives/325#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:07:32 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[FriendConnect]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[SocialWeb]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=325</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F325", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F325%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22FriendConnect%E5%90%91%E3%81%91%E3%81%82%E3%81%97%E3%81%82%E3%81%A8%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E5%85%AC%E9%96%8B%E3%81%A8%E3%82%B3%E3%83%BC%E3%83%89%E8%A7%A3%E8%AA%AC%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F325", "style": "big", "title": "FriendConnect向けあしあとガジェット公開とコード解説" });</script></div>
<p><a href="http://devlog.agektmr.com/archives/310">FriendIntroducer</a>はFriendConnectを試すことに主眼を置いて作ったガジェットだったため、それほど実用的なものではありませんでした。そこで、本格的に使えるガジェットとして、MyBlogLogやgooあしあと、Yahooログール的ガジェットとしてFootprintsを作りました。</p>
<h2>Footprintsとは？</h2>
<p>Footprintsは、サイトメンバーの訪問を記録するガジェットです。百聞は一見にしかず、このブログの左ペイン一番下にあるガジェットをご覧ください。もしこのサイトのFriendConnectに登録していなければ、Joinしてみてください。ログインしていない場合はしてください。  <img width="223" height="211" class="alignnone size-full wp-image-326" title="Footprints1" src="http://devlog.agektmr.com/wp-content/uploads/2009/01/e38394e382afe38381e383a3-5.png" alt="Footprints1" />  ご想像通り、ログインした状態でブログを訪問すると、あしあととして訪問記録が残ります。ほかの人が見ると、どのくらい前に訪問したかが分かります。また、最近流行の(?)あしあとを消す機能も実装済みです。  ガジェットXMLは<a href="http://devlab.agektmr.com/OpenSocial/FriendConnect/Footprints.xml" target="_blank">http://devlab.agektmr.com/OpenSocial/FriendConnect/Footprints.xml</a>になりますので、欲しい方はご自由にお持ちください。貼り方は<a href="http://devlog.agektmr.com/archives/310">こちら</a>を参考にしてください。</p>
<h2>コードと動作の解説</h2>
<p>FriendConnectとはいえ、中身はただのOpenSocialガジェットです。<a href="http://www.amazon.co.jp/dp/4774137480/" target="_blank">OpenSocial本</a>も発売間近、<a href="http://developer.mixi.co.jp/appli/example" target="_blank">mixi</a>、<a href="http://home.goo.ne.jp/" target="_blank">gooホーム</a>のOpenSocial対応も近いということで、今回はサンプルコード付きでガジェットの内容を解説してみたいと思います。</p>
<h3>基本的な動作</h3>
<p>まず、あしあとの記録方式ですが、FriendConnectは残念ながら<strong>makeRequest未対応</strong>のため、外部サーバーのDBに保存、なんてことはできません。AppData(Persistent API)を使って保存しています。AppDataはガジェット+ユーザーの組み合わせごとに存在するのですが、残念ながらOWNERであるブログ自体のAppDataには保存できないことが判明しました。この辺りはPermissionが絡んでくるのですが、一般的なOpenSocialとは事情が異なるため、特殊な権限の割り振りになっていると思われます。  この問題を解決するために考えたのが、VIEWERごとに自分のAppData領域にデータを保存する、という技。OWNERの友達のAppDataをまとめて取得すれば、似たような状況が作れるはずです。今回はこの方式でうまく実現することができました。  つまり、1つのデータ領域に配列であしあとを記録して行くのではなく、メンバーごとに最終アクセス日時をあしあととして記録し、Persistent APIのnewFetchPeopleAppDataでメンバー全員分をまとめて取得しています。</p>
<h4>コード解説</h4>
<pre>
<pre class="brush: jscript;">
        init:function() {
          // データリクエストオブジェクトを生成
          var req = opensocial.newDataRequest();
          // 閲覧者(viewer)の情報を取得
         &nbsp;var params = {};
          params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [opensocial.Person.Field.PROFILE_URL];
          req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER, params), 'viewer');
          // メンバー(OWNERの友達)のAppDataをまとめて取得
          var idspec = opensocial.newIdSpec({'userId':opensocial.IdSpec.PersonId.OWNER,
                                             'groupId':opensocial.IdSpec.GroupId.FRIENDS});
          req.add(req.newFetchPersonAppDataRequest(idspec, 'footprint'), 'footprint');

          // 上記2つの取得リクエストをまとめて投げ、callback関数で受け取ります
          req.send(function(response) {
            if (!response.get('viewer').hadError()) {
              fp.viewer = response.get('viewer').getData();
            }
            if (response.get('footprint').hadError()) {
              fp.footprints = [];
            } else {
              var footprints = response.get('footprint').getData();
              var exist = false;
              // AppDataはユーザーごとに返ってきますので、ループで回します
              $.each(footprints, function(footprint) {
                // AppDataは文字列しか受け付けませんので、取得時にJSONオブジェクトに戻してやります
                var json = gadgets.util.unescapeString(this.footprint);
                var foot = gadgets.json.parse(json);
                if (fp.viewer !== null) {
                  // 閲覧者と一致した場合は上書き
                  if (foot.id == fp.viewer.getId()) {
                    exist = true;
                    foot.id = fp.viewer.getId();
                    foot.name = fp.viewer.getDisplayName(),
                    foot.thumbnail = fp.viewer.getField(opensocial.Person.Field.THUMBNAIL_URL),
                    foot.profile = fp.viewer.getField(opensocial.Person.Field.PROFILE_URL),
                    foot.timestamp = (new Date()).getTime();
                    // 新しいあしあとをAppDataに記録
                    fp.setFootprint(foot);
                  }
                }
                fp.footprints.unshift(foot);
              });
              if (!exist &amp;&amp; fp.viewer !== null) {
                // 今まで一度もあしあとを記録したことがない人の場合、追加します
                var foot = {'id':         fp.viewer.getId(),
                            'name':       fp.viewer.getDisplayName(),
                            'thumbnail':  fp.viewer.getField(opensocial.Person.Field.THUMBNAIL_URL),
                            'profile':    fp.viewer.getField(opensocial.Person.Field.PROFILE_URL),
                            'timestamp':  (new Date()).getTime()};
                fp.footprints.unshift(foot);
                fp.setFootprint(foot);
              }
              // 時系列でソート
              fp.footprints.sort(function(a, b) {
                return b.timestamp - a.timestamp;
              });
              // レンダリングします
              fp.showFootprints();
            }
          });
        },
</pre>
</pre>
<p>ユーザーごとにAppDataを保存する部分は下記のコードです。</p>
<pre>
<pre class="brush: jscript;">
        setFootprint:function(foot) {
          // あしあとのデータオブジェクトを文字列に変換
          var str = gadgets.json.stringify(foot);
          var req = opensocial.newDataRequest();
          // 閲覧者のAppDataに記録
          req.add(req.newUpdatePersonAppDataRequest(opensocial.IdSpec.PersonId.VIEWER, 'footprint', str));
          req.send();
        },
</pre>
</pre>
<p>OpenSocial的に役立ちそうな部分のみ抜粋していますが、上記コードで基本的な動作を行っています。ソースコード全体を読みたい方は<a href="http://devlab.agektmr.com/OpenSocial/FriendConnect/Footprints.xml" target="_blank">こちら</a>から。</p>
<h2>まとめ</h2>
<p>FrienConnectの特殊な環境としては、前述のPermission問題。それからmakeRequestの問題が分かってきました。いずれもプライバシーの重要性に配慮した結果と思われます。  Permissionについては、一般的なSNS上のOpenSocialでは、VIEWER自身がガジェットをインストールしているかどうかで挙動が変わりますが、FriendConnectではOWNERが常に仮想人格であることから、そもそもその前提がなりたたないため、特殊な動きをしているようです。  makeRequestについては、技術的な問題は既に解決済みのはずですので、特殊なPermission下で取得されたプライバシーに関わるデータを外部サーバーに安易に保存されることを避ける狙いがあるのではないでしょうか？  何はともあれ、このガジェットを使うと、「ああ、ブログをコミュニティに変えるってこういうことなのか」と、(少しだけ)感じることができます。ぜひお試しください。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/325/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mac OS XのちょっとマニアックなTips</title>
		<link>http://devlog.agektmr.com/ja/archives/32</link>
		<comments>http://devlog.agektmr.com/ja/archives/32#comments</comments>
		<pubDate>Mon, 02 Jun 2008 17:24:26 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=32</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F32", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F32%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mac%20OS%20X%E3%81%AE%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%83%9E%E3%83%8B%E3%82%A2%E3%83%83%E3%82%AF%E3%81%AATips%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F32", "style": "big", "title": "Mac OS XのちょっとマニアックなTips" });</script></div>
<h2>ことえり変換</h2>
<p>変換中に</p>
<ul>
<li><strong>Ctrl + j</strong> : ひらがなに変換</li>
<li><strong>Ctrl + k</strong> : カタカナに変換</li>
<li><strong>Ctrl + l</strong> : 全角英数に変換</li>
<li><strong>Ctrl + ;</strong> : 半角英数に変換</li>
</ul>
<h2>カーソル移動等</h2>
<p>Vimと違うので使いやすくはないけど・・・</p>
<ul>
<li><strong>Ctrl + p</strong> : 上</li>
<li><strong>Ctrl + n</strong> : 下</li>
<li><strong>Ctrl + b</strong> : 左</li>
<li><strong>Ctrl + f</strong> : 右</li>
<li><strong>Ctrl + k</strong> : 行削除</li>
<li><strong>Ctrl + y</strong> : ペースト</li>
<li><strong>Ctrl + a</strong> : 行先頭に移動</li>
<li><strong>Ctrl + e</strong> : 行末に移動</li>
</ul>
<h2>キャプチャ</h2>
<p><strong>Command + Shift + 3</strong>で全画面キャプチャは言うまでもないけど、</p>
<p><strong>Command + Shift + 4</strong>で範囲指定キャプチャ。キャプチャしたい範囲をドラッグしながら</p>
<ul>
<li><strong>Space</strong> : キャプチャ範囲をそのまま移動</li>
<li><strong>Shift</strong> : カーソルを動かした方向以外を固定して領域を変形させる</li>
<li><strong>Option</strong> : 領域の中心を基点に形を変形させる</li>
<li><strong>Ctrl</strong> : キャプチャ範囲をクリップボードにコピー</li>
<li><strong>Esc</strong> : キャプチャをキャンセル</li>
</ul>
<h2>QuickLook</h2>
<p>画像QuickLookで</p>
<ul>
<li><strong>Option + クリック</strong> : 拡大</li>
<li><strong>Option + Shift + クリック</strong> : 縮小</li>
<li><strong>Option + ホイール</strong> : 拡大/縮小</li>
</ul>
<p>PDFQuickLookで</p>
<ul>
<li><strong>Command + プラスキー(Command + Shift + ;)</strong> : 拡大</li>
<li><strong>Command + マイナスキー</strong> : 縮小</li>
</ul>
<h2>Dashboard</h2>
<p><strong>Option</strong>を押しながらマウスオーバーでウィジェット削除の×印が出る(いちいち画面左下の+をクリックしなくてよい)</p>
<h2>その他</h2>
<ul>
<li><strong>Ctrl + Shift + Eject</strong> : ディスプレイを切る</li>
<li><strong>Command + Option + Esc</strong> : 強制終了</li>
<li><strong>Command + Option + Ctrl + Eject</strong> : OSシャットダウン<strong></strong></li>
<li><strong>Ctrlを押しながらマウスホイールをグリグリ</strong> : 画面の拡大/縮小(結構感動的)<strong></strong></li>
<li><strong>SafariのタイトルバーをCommand + クリック</strong> : 同じサイトのURLを上位階層に移動</li>
<li>(たぶん全てのアプリで)<strong>Command + F1</strong> : 同じアプリのウィンドウを順番に行き来</li>
</ul>
<p>その他、集めたTipsの参考サイトは<a href="http://bookmark.goo.ne.jp/user/agektmr/search/?k=mac%20os%20x%2BTips" target="_blank">こちらに色々あります</a></p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS Xアプリを管理する強力コンボ AppFresh / iusethis.com</title>
		<link>http://devlog.agektmr.com/ja/archives/67</link>
		<comments>http://devlog.agektmr.com/ja/archives/67#comments</comments>
		<pubDate>Wed, 21 May 2008 17:39:44 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[AppCast]]></category>
		<category><![CDATA[AppFresh]]></category>
		<category><![CDATA[iusethis.com]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=67</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F67", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F67%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mac%20OS%20X%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E5%BC%B7%E5%8A%9B%E3%82%B3%E3%83%B3%E3%83%9C%20AppFresh%20%2F%20iusethis.com%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F67", "style": "big", "title": "Mac OS Xアプリを管理する強力コンボ AppFresh / iusethis.com" });</script></div>
<p>最近のMac OS X用アプリには、自動的に更新をチェックしてアップデートしてくれるものも少なくありませんが、常に最新版を使いたい人にとって、そうでないアプリを管理するのは面倒なもの。チェック方法として<a href="http://www.versiontracker.com/" target="_blank">VersionTracker</a>や、デスクトップアプリケーションの<a href="http://www.logicielmac.com/" target="_blank">LogicielMac Update</a>といった選択肢がありますが、いずれも今日紹介するコンボと比較すれば、つまらないものに思えてきます。</p>
<h2>iusethis.com</h2>
<p>iuserthis.comは使っているMac OS X用アプリを登録して共有するSNSです。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/05/iusethis_top.jpg"><img class="alignnone size-medium wp-image-69" title="iusethis_top" src="http://devlog.agektmr.com/wp-content/uploads/2008/05/iusethis_top-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>サイトにサインアップしてから<a href="http://osx.iusethis.com/app/imakeprofile" target="_blank">imakeprofileというアプリ</a>を使うと、Macにインストールしてあるアプリを自動的にスキャンして、自分が主に使用しているアプリをiusethis.comに登録することができます。使用しているアプリが未登録の場合は、自分で追加することも可能。</p>
<p>登録したアプリは、サービスが最新版の情報を取得するので、更新が可能かどうかを調べることができます。もちろんレビューや、誰がそのアプリを使用しているのかを確認することもできます。さらには簡易的なSNS機能として、TwitterのようなFollow機能があるので、他の人のアプリ使用状況を追跡することもできます。</p>
<p>ちなみに<a href="http://osx.iusethis.com/iconbonanza/agektmr" target="_blank">僕が使用しているアプリ</a>はこんな感じ。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/05/iusethis_icon.jpg"><img class="alignnone size-medium wp-image-70" title="iusethis_icon" src="http://devlog.agektmr.com/wp-content/uploads/2008/05/iusethis_icon-300x191.jpg" alt="" width="300" height="191" /></a></p>
<p><a href="http://apps.facebook.com/iusethis/" target="_blank">Facebookアプリ</a>も提供されているので、「俺こんなアプリ使ってんだぜ！」と叫びたいニーズも満たしてくれます。そのうちきっとOpenSocialにも対応してくれるでしょう。</p>
<h2>AppFresh</h2>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/05/appfresh.jpg"><img class="alignnone size-medium wp-image-68" title="appfresh" src="http://devlog.agektmr.com/wp-content/uploads/2008/05/appfresh-300x238.jpg" alt="" width="300" height="238" /></a></p>
<p><a href="http://metaquark.de/appfresh/" target="_blank">AppFresh</a>は<a href="http://osx.iusethis.com/" target="_blank">iusethis.com</a>と連携して使えるソフトウェア更新ツールです。iusethis.comのデータベースから自動的に最新版を確認して、どれが更新できるかを知らせてくれます。その場でダウンロードからインストールまでまとめて行うこともできますし、ダウンロードのみ行うこともできます。<a href="http://growl.info/" target="_blank">Growl</a>に対応しているので、ダウンロードやインストールが完了すると通知もしてくれます。</p>
<h2>まとめ</h2>
<p>AppFresh / iusethis.comは、SNSの楽しさで集めたユーザーに、アプリ開発者やサイト管理者の煩雑な作業を集合知として解決してもらうことで、くまなく幅広いアプリケーションの更新情報を提供可能とした最強のコンボと言えるのではないでしょうか。</p>
<p>※ちなみに、アプリの自動更新チェックには、RSS2.0のenclosureにアプリのリソースURLを入れる<a href="http://connectedflow.com/appcasting/" target="_blank">AppCast</a>なるプロトコルが使われるケースが多いようです。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/67/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari3.1のオフライン機能</title>
		<link>http://devlog.agektmr.com/ja/archives/21</link>
		<comments>http://devlog.agektmr.com/ja/archives/21#comments</comments>
		<pubDate>Thu, 27 Mar 2008 10:03:51 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/archives/21</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F21", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F21%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Safari3.1%E3%81%AE%E3%82%AA%E3%83%95%E3%83%A9%E3%82%A4%E3%83%B3%E6%A9%9F%E8%83%BD%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F21", "style": "big", "title": "Safari3.1のオフライン機能" });</script></div>
<p>先日<a href="http://devlog.agektmr.com/archives/16">Safari3.1から搭載されたオフライン機能</a>について書きましたが、amachangさんが使い方を詳しく解説されています。</p>
<p><a href="http://d.hatena.ne.jp/amachang/20080327/1206607704" target="_blank">Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か？ &#8211; IT戦記</a></p>
<p>詳しく読んでませんが、HTML5からの仕様らしく、既にFirefox3のβ版にも搭載されているとか。</p>
<p>これで、あんなことやこんなことができそうですね・・・</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/21/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari3.1登場</title>
		<link>http://devlog.agektmr.com/ja/archives/16</link>
		<comments>http://devlog.agektmr.com/ja/archives/16#comments</comments>
		<pubDate>Tue, 18 Mar 2008 17:23:11 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Google Gears]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Prism]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/archives/16</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F16", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F16%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Safari3.1%E7%99%BB%E5%A0%B4%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F16", "style": "big", "title": "Safari3.1登場" });</script></div>
<p>かねてから超高速！と話題だったWebKitの最新版から生まれた<a href="http://www.apple.com/jp/safari/" target="_blank">Safari3.1</a>が、<a href="http://www.apple.com/jp/news/2008/mar/18safari.html" target="_blank">ついに登場</a>しました。Windows版も同時リリースのようです。こちらは、ようやく正式版かな？</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/safari31.jpg" title="Safari3.1 About"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/safari31.jpg" alt="Safari3.1 About" /></a></p>
<p>スピードは言わずもがなですが、目玉は他にもあります。</p>
<ul>
<li>HTML5に対応</li>
<li>CSSアニメーションに対応</li>
<li>CSS Web Fontに対応</li>
</ul>
<p>アップルのリリースには掲載されていませんでしたが、実は個人的にものすごく注目していたのが<strong>オフライン機能</strong>。ウェブサイトがローカルにデータベース(おそらくsqlite)を構築できるというものです。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/safari31_db.jpg" title="Safari3.1 DB"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/safari31_db.jpg" alt="Safari3.1 DB" /></a></p>
<p>オフライン機能といえば、最近ではGoogleの<a href="http://gears.google.com/" target="_blank">Google Gears</a>、 Mozillaの<a href="http://labs.mozilla.com/2007/10/prism/" target="_blank">Prism</a>、Adobeの<a href="http://www.adobe.com/products/air/" target="_blank">AIR</a>と盛り上がってきている分野でした。これからのウェブブラウザは標準でオフライン機能と同期機能をサポートすることで、ネットに繋がっていることを意識させない利便性を持っていくでしょう。例えばGoogle Docsのように元々デスクトップで使われていたアプリのウェブ版 のサービスはその恩恵を大きく受けることになります。ユーザーはネットに繋がっていようといまいと、気にせず文書の編集に集中することが出来る訳です。</p>
<p>まだSafariでどのようにこのオフライン機能(データベース)が利用できるのかは調べていませんが、ぜひ試してみたいところ。APIが他と共通ならいいのになあとは思いつつも、おそらくそんな訳はなく。シェアという面ではAdobe AIRが勝算が高いと個人的には踏んでいますがね。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/16/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
