Home > IT Archive

IT Archive

Google Chromeのアプリケーションショートカットが便利かも

Google Chrome - ブラウザをダウンロード

GoogleのWebブラウザ「Google Chrome」が公開されたので、早速インストールしてみました。
Firefoxから設定をインポートしたんですが、ブックマークはもちろん、パスワードも引き継がれたようで、いきなりいつもの環境と遜色ないレベルで使い始めることが出来ました。

Flashも使えるようで、ニコニコ動画も見られました。

ところで、このブラウザの機能として、「アプリケーションショートカット」というものがあります。
Webサイトをあたかもアプリケーションのように使える、という機能で、GoogleCalendar&Gmail使いとしては結構便利な気がしています。

公式の動画にもありますが、イマイチ分かりづらいのでスクリーンショットで簡単に説明します。

Google ChromeでGoogle Calendaerにアクセスすると、こんな感じで表示されます。

ショートカットを作りたいサイトを開いてから、アドレスバーの右の設定メニューを開きます。

ショートカットはデスクトップ以外にも作れます。

これでOKをクリックすると、ショートカットが作成されます。

アイコンの画像はFaviconから引っ張ってきているようです。

ここまでならただのWebサイトへのショートカットを作っただけで別に珍しくもありません。
しかし、このショートカットを起動すると、こんな感じになります。


上部のメニューバー等が無くなり、単体のアプリケーションのように表示されます。
これなら、普段はFirefoxを使いつつ、WebアプリケーションはChromeなんてのもアリかもしれません。

通常のアプリケーションとWebアプリケーションの境界をなくそうとするこの試みは、実にGoogleらしいなぁと思いました。
 
 
 
追記:ショートカットを作るときのダイアログが「Google Gears」となっているので、これはもしや?と思ったのですが、やはりオフラインではGoogle Calendarの操作は出来ませんでした。
Gears対応サイトなら本当にローカルアプリケーションのように使えるんでしょうね、きっと。
これを機にカレンダー対応してくれないかなぁ‥‥

IE8のそれさ、Firefox3でも出来るよ!(たぶん

窓の杜 - 【NEWS】マイクロソフト、「Internet Explorer 8」ベータ2の日本語版を公開

「IE8 ベータ2」配布開始! というわけで早速使ってみた : ライフハッカー[日本版]

IE8のβ2日本語版が公開され、新機能がなんだか騒がれているようですが、

それFirefoxでもできるよ!!(たぶん

と言うことで、IE8β2はまだインストールしてないけどメモ的にFirefoxで対応するであろう機能拡張などをメモっておきます。

InPrivate機能

Webの履歴などを残さないようにする機能です。
PCを共有している環境などで、検索履歴とかがバレずに済みます。
Firefoxではずいぶん前からこの機能拡張ありましたね。

Firefoxをステルス化する拡張「Stealther」 - GIGAZINE

タブのグループ化

グループまとめて閉じたり出来るようです。
IE8の方の挙動は分かりませんが、おおよそ以下の機能拡張でも要件は満たせるんじゃないかと思います。
ちなみに私はツリー型タブ使ってます。「ツリー以下を閉じる」みたいな事が出来るんで、フラットなグループ管理より便利。

ツリー型タブ (Tree Style Tab) :: Firefox Add-ons

窓の杜 - 【NEWS】「Firefox」のタブをまとめてグループとして管理できる拡張機能「Tab Groups」

WebSlice

WebSlice自体よく知らない機能だったんですが、窓の杜にそんまんまな記事があるのでそちらを参照。
窓の杜 - 【REVIEW】IE8の新機能“WebSlice”を「Firefox」でも利用可能にする「WebChunks」

アクセラレータ

ページの一部を選択すると、そいつを小窓で翻訳したり地図を開いたりできるようです。
なんだか書いていてよく分からない感じになってしまいましたが、Firefoxだとつい最近発表されてたUbiquityが近い感じでしょうか。 
拡張性はこちらの方がありそうな雰囲気ですね。

Mozilla Labs » Blog Archive » Introducing Ubiquity

Mozilla、マッシュアップツール「Ubiquity」の試作版公開 - ITmedia News

というわけで、ぼちぼちUbiquityを試してみますかねー(IE8入れないんかい!

Google AdSense for FeedsのせいでRSSリーダーのいくつかの機能がお亡くなりに

Inside Adsense - 日本語: フィード向け AdSense が利用可能になりました

ようやくGoogle AdSenseをフィードに表示できるようになりました。
どんな感じなのかと早速試してみました。

自分のサイトのフィードをFeedBurner経由で表示させる際に広告を挟み込むという仕組みのようです。
というか、FeedBurnerってGoogleに買収されていたんですね。

買収前のFeedBurnerアカウントと、現行のGoogleアカウントとがまだ統合されていないようで、結局新規でFeedBurnerの登録をするハメになりましたが、新規登録後はあっさり広告が表示されました。

しかし、使ってみると一つやっかいなことに気づきました。
元記事のURLが「feedproxy.google.com」経由になっているんです。

どういう事かというと、たとえば私が昨日投稿した記事のURLだと元々は

http://fifnel.com/2008/08/20/1468/

なのに、AdSenseを表示したフィードだと

http://feedproxy.google.com/~r/fifnel/feed/~3/2XeRmxvHURk/

というURLになります。

結局後者のURLでもリダイレクトされて表示されるサイトは同じなので、閲覧だけなら全く問題ありません。

問題なのは、URLをホゲホゲするような場面。たとえばLivedoor Readerで記事をクリップしたりする場合ですね。

私は被はてブ数が表示されるようなGreasemonkeyを入れているので、普通のサイトは以下のような表示になります。

しかしfeedproxy.google.com経由のURLだと当然ながらこれは表示されません。
もちろん経由URLがはてブされれば表示されるはずですが、そうなると同じ記事に対するブクマが分散するという別の問題に発展するわけです。

おそらく買収前のFeedBurnerを使っても同じ事だったと思いますが、今まで全然気づきませんでした。

今回気づいたのは、はてなブックマークのホットエントリのフィードがAdSenseに対応したからです。
ちゃんとブクマするなら、フィード全文配信してようが、そのサイトを開いてから処理する必要があるわけですね。

あー、めんどくせぇ‥‥もうちょっと調べて解決方法探してみます。

「汎用的」を逃げに使うな

「ここは汎用的に作ってください」

よく仕事でプランナーから言われる台詞です。
時々プログラマーからも言われたり、自分で言っていることもあります。

この「汎用的」という言葉ですが、良く言えば「どんな状況にも柔軟に対応出来る」という事です。

しかし、悪く言えば「具体的なことは現時点で決まっていない」という事でもあります。

「汎用的」というのは究極的には直接プログラミング言語を書くのが一番汎用的なのですが、おそらくそんなことは誰も求めていなくて、もっと限定された機能を手軽に利用したい、というのがニーズでしょう。

となるとプログラマーの作業はプログラミング言語から手軽に利用する手段へと各機能をコンバートするという事になります。

ここで具体的なことが決まっていない場合、どの機能をコンバートすればいいのかが曖昧になってきます。
後々使ってみると、アレが足りない、コレはこうじゃなかった、なんて事もあります。
結局プログラマーがわざわざ機能をコンバートするよりは、最初からプログラミング言語でベタで作った方が早くて楽だった、って事もあります。

要するに何が言いたいかというと、具体的なことが決まっていない段階で「汎用的」を持ち出すのは問題先延ばしの逃げでしかなく、しかも無駄な作業が増える可能性も孕んでいるのでやめましょうってことです。

「汎用的」のコストはベタで作るよりも多くかかります。
確かに汎用的にした方がメリットが出てくる損益分岐点のようなものは存在しますが、そこを精査するためには「では汎用的にしたシステムで具体的に何を作るのか」をハッキリさせないといけません。

私の経験則から言えば、何か汎用的なものを作る場合は、具体的なものを作った上で、少しずつ汎用的にするのがうまく行く方法だと思っています。

最初から汎用的に設計したものほど、実際に使ってみると抽象的すぎて役に立たない、ということは多いものです。

夏目漱石のおかげでケータイ小説への認識が改まった

ケータイ(au W61S)を弄くってたら、データフォルダに「ブックフォルダ」というのがあって、「無料名作こころ」と「無料名作桃太郎」というデータがプリインストールされていました。

それぞれ、夏目漱石の「こころ」と、芥川龍之介の「桃太郎」ですね。
これらは著作権の期間が切れた作品であり、青空文庫として他にも名作が無料で多数読めます。

ケータイのブラウザではおそらくそのまま表示できないと思いますが、ありがたいことに電子書店パピレスによってケータイで読める形で配布されています。

これまでケータイにプリインストールされているデータなんか無視しまくっていましたが、先日何となく夏目漱石の「こころ」を読み始めてみたところ、意外にもこのビューアが読みやすいことに感激
ここ2日ほど、通勤電車の中で読みふけっています。


デフォルトの状態だと横書きで風情がありませんが、これを縦書きにし、文字、行間を最小、ルビあり、全画面表示にすると、とても読みやすくなりました。

夏目漱石 こころ
恥ずかしながら「こころ」って初めて読んだんですが、活字アレルギー気味な私でも読みやすく、すでに43%も読み進めてしまいました。(私にとっては”も”なんですよ!)


そうそう、パーセンテージが表示されるのも、このビューアの良いところですね。
今のペースだといつ頃読み終わるのか、大まかに判断しやすいです。

私の通勤時間だと1日20%程度なので、1週間で読み終わる計算ですね。

これ読み終わったら、次は樋口一葉でも読んでみようかと思ってます。
作家別作品リスト:樋口 一葉

今までは「所詮ケータイ小説」なんて正直見下していたところもありましたが、「こころ」のおかげでケータイで小説を読むという行為自体はとても良いものだと認識を改める良いきっかけになりました。
しかも、こんな名作がタダで読めるんですから、最高ですね。

夏目漱石さん、ありがとう!

WordPress2.6にアップグレードしてみたのでファーストインプレッション

WordPress | 日本語.

昨日WordPress2.6が本家で発表されたと思ったら、今日になって日本語版が早速出ていました。仕事が早い!

というわけで、早速インストールしてみました。

今回の目玉は個人的に3つ。

  • 投稿内容の世代管理
  • 投稿用ブックマークレットの復活
  • Gears対応


まず世代管理ですが、diff機能もあるので結構便利な気がします。
ただ、不要になったリビジョンを削除する方法が分かりませんでした。
恥ずかしくて記事の一部を書き換えた場合にはちょっと困るかもしれませんね。


投稿用ブックマークレットは何故か2.5で削除されてしまったのですが、今回復活することとなりました。
しかし、デフォルトのままだとテキストエリアがあまりに小さすぎます。(@Firefox3)
そのうち適当にソースに手を加えて対応したいと思います。


Gears対応は、正直効果があるのかさっぱり分かりません。
技術的には目玉だとは思いますが、実用的にはイマイチかもしれません。

あと一つハマった点をメモ。

設定-その他の設定-アップロード

ここのアップロード先のディレクトリがデフォルトじゃない場合、その下のフルURLパスを書かないと、そちらも自動的にwp-content/uploadsになります。
アップロード先ディレクトリ名に自動で合わせてくれるわけではないようなので、注意。

そのほかは今のところプラグイン類も問題ないです。

iPhoneネイティブアプリ開発は、ゲーム開発に通ずるものがある、かも

遅ればせながら、iPhone SDKを弄くってみました。

AppleのNDAだかなんだかで具体的なことは書いちゃダメっぽいですが、まぁ具体的なことを書けるほど理解も出来ていないのでたぶん大丈夫(殴

小一時間程度遊んでみましたが、iPhoneの開発環境がゲーム開発環境に非常に似ていることに気づきました。

気づいた共通点は以下の通り。

  • ターゲットマシンに関する具体的な内容はクローズドにしなければいけない
  • けれどアプリケーション的にはハードウェアへのアクセスは基本的にオープン
  • 全世界で同じスペックのハードウェアを使っている
  • プログラミング環境があまり一般的ではない

さらに、あの大きな画面と言い、タッチパネル+加速センサーと言い、私からするとホントにゲーム機のような感覚です。

そんなわけでこのiPhoneのネイティブアプリ開発は、自分で言うのもなんですが、ゲームプログラマーにアドバンテージがあるような気がしています。

なので、全国のゲーム業界の人たちがiPhoneで面白い新作を作ったり、あんなゲームやこんなゲームをiPhone移植してくれたら、私のiPhone購入意欲がさらに高まって良い感じになるので、是非頑張ってください!!!(他力本願

Vimperatorの設定が良い感じになってきたので晒してみる

数日前からVimperatorを弄くってます。

ようやく形になってきたので、vimperatorrcなどを公開しますね。

まず最初に、入れるべきアドオンから。

まぁこの二つは無いと始まらないので説明は省きますが、stableである1.1よりは1.2preの方がどうやら良さげです。

Bookmarks UI ConsolidatorはブックマークツールバーにAlt+Bでアクセスできるブックマークメニューを追加する拡張です。
どうもブックマークへのアクセスがVimperatorだと苦手だと感じたので、入れてみました。

よく使うサイトなら、:t ldrとか入力してからtab押して開いてますけどね。

あと、ツリー型タブは超おすすめ。画面が広く使え、しかもタブも大量に開いても状況を把握しやすいです。

次に、Vimperatorプラグイン。

最初はldrize_cooperation.jsとかautoIgnoreKey.jsも入れてたんですが、サイトを開いたときの初期状態はlivedoor readerとGmailを除きVimperatorに準拠しよう、というポリシーを決め、それらプラグインは外しました。

その他、設定上の注意点など。

  • All-in-One Sidebarはブックマークサイドバーがキーボードで使いづらいのでアンインストールした
  • FireGesturesの「ロッカージェスチャー」はクイックリンクが効かなくなるので、その機能だけ切ること(アンインストールはしなくてもOK)
  • vimperatorrcでset showtabline=0を設定すると、ツリー型タブが表示されなくなるので注意
  • デフォルトの状態だとステータスバーが黒で、乗っかってるアドオンのアイコンなどが見づらいので、userChrome.cssも変更すること

以上の設定により、こんな感じになりました。超スッキリ!

あと最後に一点お詫びです。

下記設定ファイルを作成するにあたり多くのサイトを参考にさせていただきました。
しかし、あちこちコピペしているうちにコピペ元が分からなくなってしまいました。
ゴメンナサイ!


設定をちょこっと弄くりました。
コメントで教えて貰った設定の追加と、direct_hb.jsプラグインの追加、あとlivedoor readerでgとoのキーがスルーされるようにしました。
(gは本文取得のためのLDR Full FeedってGreasemonkeyスクリプトで使ってます)

以下コピペすると意図しない文字に置き換わったりするので、オリジナルのファイルも置いておきます。
_vimperatorrc

_vimperatorrc

" 1.2pre (created: 2008/07/04 07:30:07)
" by fifnel

"------------------------------------------------------------------------------
" 必要なFirefoxアドオン
"  Vimperator 1.2pre
"  Vimperator日本語ヘルプ1.0
"  Bookmarks UI Consolidator
"  ツリー型タブ

"------------------------------------------------------------------------------
" 必要なVimperatorプラグイン
"  copy.js
"  feedSomeKeys.js
"  hatenabookmark_show.js
"  ime_controller.js
"  migemo_hint.js
"  googlesuggest.js
"  direct_hb.js

"------------------------------------------------------------------------------
" その他注意点
" ・All-in-One Sidebarはブックマークサイドバーがキーボードで使いづらいので入れない
" ・FireGesturesの「ロッカージェスチャー」はクイックリンクが効かなくなるので、その機能だけ切ること
" ・set showtabline=0を設定すると、ツリー型タブが表示されなくなるので注意

"------------------------------------------------------------------------------
" Mappings

" j/kの移動量を6倍に
map j 6<C-e>
map k 6<C-y>

" Sleipnir風タブ移動
map <F3> gt
map <F2> gT

" キースルーをちょっとでも楽に
map q <C-q>

" Firefoxオリジナルのキーバインド
map <C-w> d
map <BS> H
noremap <C-b> :normal! C-b<CR>

" Alt+↑/↓でメニューの表示/非表示
map <A-Down> :set guioptions+=mT<CR>
map <A-Up> :set guioptions-=mT<CR>

" . でタブリストを表示/非表示
map . :ls!<CR>

" はてぶコメント表示(hatenabookmark_show.js)
map b :hbinfo<CR>

" <S-b>ではてブ(direct_hb.js)
noremap B :hb<space>

" googleサジェスト検索(googlesuggest.js)
map s :google<Space>

" <C-S-c>でタイトルとURLをコピー(copy.js)
map <C-C> :copy titleAndURL<CR>

" cでURLだけをコピー(copy.js)
map c :copy URL<CR>

"------------------------------------------------------------------------------
" Options

" ツールバーとかの表示関係
set guioptions+=b

" クイックリンクのフォントサイズ
set hintstyle += font-size:16px;

" ビープもベルもウザいので消す
set visualbell
set visualbellstyle=display:none;

" INSERTモードとTEXTEREAモードで<C-i> を押した時のエディタ
"set editor=C:\Tools\Vim\vim71\gvim.exe -f
set editor=C:\Tools\xyzzy\xyzzy.exe
" set editor=C:\Program Files\sakura\sakura.exe

" ブラウザタイトルの変更
set titlestring=Firefox

" migemo_hint.js
set hintmatching=custom

" その他
set history=1000
set verbose=9
set wildoptions=auto
set complete=l

"------------------------------------------------------------------------------
" Abbreviations

" ime_controller.js
let g:ex_ime_mode = "inactive"
let g:textarea_ime_mode = "inactive" 

" copy.js
javascript <<EOM
liberator.globalVariables.copy_templates = [
   { label: 'titleAndURL',    value: '%TITLE% %URL%' },
   { label: 'URL',            value: '%URL%' },
   { label: 'title',          value: '%TITLE%' },
   { label: 'hatena',         value: '[%URL%:title=%TITLE%]' },
   { label: 'hatenacite',     value: '>%URL%:title=%TITLE%>\n%SEL%\n<<' },
   { label: 'markdown',       value: '[%SEL%](%URL% "%TITLE%")' },
   { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }
];
EOM

" feedSomeKeys.js(Gmail)
autocmd LocationChange .* :fmapc
js <<EOF
autocommands.add('LocationChange',/mail\.google\.com\/(mail|a)\//,[
  'js plugins.feedKey.setup(',
  '"c / y j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc".split(/ +/).map(function(i) [i, "4" + i])',
  ');'
].join(''));
EOF

" feedSomeKeys.js(livedoor reader)
js <<EOF
autocommands.add('LocationChange',/reader\.livedoor\.com\/reader\//,
  'js plugins.feedKey.setup("j k s ? r a p v c <Space> <S-Space> z Z < > q w b i o g".split(/ +/));');
EOF
autocmd LocationChange http://reader\.livedoor\.com/reader/ :fmap J <Space>
autocmd LocationChange http://reader\.livedoor\.com/reader/ :fmap K <S-Space>

" Add Mapping `C-c' copy or stop loading
javascript <<EOM
liberator.mappings.addUserMap([liberator.modes.NORMAL], ['<C-c>'],
    'Copy selected text or ',
        function () {
                var sel = liberator.buffer.getCurrentWord();
                if (sel) {
                        liberator.copyToClipboard(sel, true);
                        echo('Yanked: ' + liberator.util.escapeHTML(sel) );
                } else {
                        BrowserStop();
                        liberator.echo('Stopped loading !');
                }
        } , {}
);
EOM

" ステータスバーにfeedボタンを表示
" http://d.hatena.ne.jp/teramako/20071205/p1
js <<EOM
(function(){
 var feedPanel = document.createElement('statusbarpanel');
 var feedButton = document.getElementById('feed-button');
 feedPanel.setAttribute('id','feed-panel-clone');
 feedPanel.appendChild(feedButton.cloneNode(true));
 feedButton.parentNode.removeChild(feedButton);
 document.getElementById('status-bar').insertBefore(feedPanel,document.getElementById('security-button'));
})();
EOM

source! ~/_vimperatorrc.local

" vim: set ft=vimperator:

userChrome.css

/* bufferwindow style */
#liberator-container{
    color: blue !important; /* 指定しないとbufferwindowでcolorが利かない */
}
#liberator-bufferwindow, #liberator-completion, #liberator-previewwindow {
    color: blue !important;
    background-color: #eee !important;
}

/* commandline style */
#liberator-commandline{
    /*font-family:"Luxi Mono", monospace !important; // <-- フォントを指定するなら  */
    background-color: #222 !important;
    color: #fff !important;
    font-weight: normal !important;
    font-size: 10pt !important;
}

/* statusline style */
#liberator-statusline {
    /*font-family:"Luxi Mono", monospace !important; // <-- フォントを指定するなら  */
    font-weight: normal !important;
    font-size: 10pt !important;
    padding:3px 0 !important;
}

/* normal page statusline */
.hl-StatusLine {
     background-color: #ddd !important;
     color: #222 !important;
}

/* secure(ssl) page statusline */
.hl-StatusLineSecure {
     background-color: #B0FF00 !important; /* light green */
     color: black !important;
}

/* for ls command */
#liberator-multiline-output {
    overflow: hidden;
    background-color: #eee;
    color: #151;
}

Home > IT Archive

その他諸々

あわせて読みたい

  • 個人的リンク集
  • mixi
  • twitter
  • track feed
  • ページランク

Return to page top