12/29/2012

CSS3 によるローディングアニメーションを生成する jQuery プラグイン jquery.cssloading.js をリリースしました

CSS3 によるローディングアニメーションを生成する jQuery プラグインを作ってみました。iOS や Android といった、スマートフォン用のプラグインという位置づけです。cssloading() でアニメーション開始、stopcssloading() でアニメーション停止を行います。アニメーションの形やスピードなどは、プロパティを与えて設定します。
GitHub: jquery.cssloading.js

☆確認環境
iOS/Android

☆プロパティ一覧
  • type:アニメーションの形(dot/line/square/block/eddy)
  • width:表示されるアニメーションのサイズ(数値)
  • color:色(CSSで定義できる値)
  • size:表示されるひとつひとつのサイズ(数値)
  • items:表示されるアイテムの数(数値、「type」が「dot」の場合は円を構成する数、それ以外は1行の数)
  • speed:アニメーションのスピード(ミリ秒)
  • clockwise:右回りか左回りか(「true」が右回り、「false」が左回り)
  • direction:アニメーションを行う起点の方向(「left」「right」「top」「bottom」)
  • shape:表示されるひとつひとつの形(「circle」「square」)

☆使用できるプロパティの種類
  • dot:direction/shape以外
  • line:width/clockwise以外、「direction」は「left」または「right」
  • square:width/direction以外
  • block:width/clockwise以外
  • eddy:width/direction以外

☆ファイルの読み込み
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.js'></script>
<script type='text/javascript' src='jquery.cssloading.min.js'></script>


☆html
<button>Play/Stop</button>
<div id='loading'></div>


☆JavaScript(dot)
// 開始
var option = {
  type: 'dot',
  width: 100,
  color: 'rgba(0, 102, 255, .9)',
  size: 3,
  items: 30,
  speed: 1000,
  clockwise: false
};
$('#loading').cssloading(option);

// 終了
$('#loading').stopcssloading();


☆結果
flugel.bizでご確認ください。


☆JavaScript(line)
// 開始
var option = {
  type: 'line',
  color: 'rgba(255, 255, 255, .9)',
  size: 5,
  items: 10,
  speed: 1000,
  direction: 'left',
  shape: 'square'
};
$('#loading').cssloading(option);

// 終了
$('#loading').stopcssloading();


☆結果
flugel.bizでご確認ください。

その他のサンプルは jquery.cssloading.js | Archives | Flügel にて公開しています。

12/13/2012

徴兵制うんたらについて

Facebook で流れてきた徴兵制に関する世界地図を見ました。
ぼくとしては、徴兵制自体に賛成ではありません。

【ここから個人的見解】
しかし、その地図を最初に投稿した人の wall をざっと読みましたが、その人は所謂「反戦・反原発」という、「玄関に強盗お断りと貼っておけば強盗は来ないんだよ」っていうお花畑思想と理解できました。
その地図へコメントしている人々やシェアしている人々には「子どもや自分が徴兵されたくない」というあまりにも感情的な文言が並んでいました。
確かに徴兵されるということは、戦地に赴くことにつながるでしょう。しかしここで皆が反対を唱えていると、侵略された際に、我々は座して滅びることを待つしかありません。戦地へ赴いても日本を守ることができないかもしれません。しかし、守ることもできるかもしれません。その可能性を自ら壊すように拒絶反応をしていいのでしょうか。なお、徴兵制の復活を公言する人たちのように書かれていますが、彼らのうち一人でも、「戦争したい」と言っているでしょうか。「徴兵する=戦争をしかける」と曲解するのは勝手ですが、それは彼らの真意ではないと思います。

かつて、菅原道真は「China Free!」と声高に叫び、遣唐使を廃止させました。その結果、国風文化が生まれ、それまで漢文体だった文字から日本独自のひらがなやカタカナなどの文化が生まれ育ちました。執権北条時宗は、日本を守るために、断固とした外交を行いました。
現在、日本は侵食されています。今こそ、外交と自衛をしっかりと考え、実行しないといけないと思っています。アメリカさんに守ってもらう?そう思うのもいいでしょう。しかし果たして、アメリカは有事の際に「本当に」日本の代わりに闘ってくれるのでしょうか。それは疑いないものなんでしょうか。「日本を守るために俺たちはいるんだ!」というぐらいに、日本という国に愛着があるでしょうか。我々日本人は彼らよりその意識が少ないのでしょうか。ぼくは違うと思います。日本という国を愛し、守れるのは、最後はぼくら日本人だと思います。

徴兵制に賛成ではないぼくが思うのは、防衛費の増額と防衛省が自衛官に興味を持ってもらうようもっと努力することが先だということです(マスコミ含む)。自衛隊へ入隊している人々は、国を守るという意識が少なくとも我々よりも強いと思うのです。その自衛官への予算を増やすことは、国防にとってプラスになると考えています。

ぼくが言いたいのは、徴兵制ヒャッハ-ということではありません。重複になりますが、ぼくは、徴兵制自体に賛成ではありません。しかし、徴兵制という言葉だけが踊り、その言葉への拒絶反応を示すことはどうなんだろうと思っています。

12/07/2012

jquery.twitter.widget.js をリリースしました

Twitter のウィジェットを仕事で使うことになったんですが、Twitter API が 1.1 になったので、既存のウィジェットを使うと 来年 3 月 5 日以降サポートがされなくなる らしいのです。そこで、本家のウィジェット も新しくできたらしいので見てみたら、カスタマイズしづらいって思ったので、その案件専用のウィジェットを作りました。でもこれを汎用的にしておくと、他の案件でも使えるかもしれないし、これを使って幸せになる人もいるかもしれないので、jQuery プラグインとして作りました。

wings1685/jquery.twitter.widget.js


【使い方】
ダウンロード後(必要であれば解凍後)に生成された「jquery.twitter.widget.min.js」をhtmlに指定します。
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.js'></script>
<script type='text/javascript' src='jquery.twitter.widget.min.js'></script>
また、生成された「twitter.php」をどこかのディレクトリにアップロードします。ここではサンプルとして、「/api/」にアップします。


【機能詳細】
「$(selector).twitterWidget()」でターゲットとするTwitterユーザのツイートを取得し、表示します。表示する内容やツイートを表示する速さなどはプロパティを設定することで変えられます。

プロパティ一覧
  • screen_name:対象とするTwitterアカウント名
  • count:最大表示件数(最大200件)
  • speed:ツイートを表示していくスピード(秒)
  • exclude_replies:リプライのツイートを表示するかどうか(「true」で排除、「false」で表示)
  • include_rts:リツイートを表示するかどうか(trueで表示、falseで排除)
  • dateformat:日付のフォーマット(「Y年M月D日 h時m分s秒」など)
  • path:「twitter.php」までのパス(「./api/」など)
  • src:表示する部分のソース
  • src.header:ヘッダ部分
  • src.body:本体部分
  • src.footer:フッタ部分
  • src.reply:リプライ部分
  • src.retweet:リツイート部分
  • src.favorite:お気に入り部分

src内で指定できる予約文字列
  • $icon$:アイコン(a要素で囲まれたimg要素として書き出します)
  • $screen_name$:アカウント名(a要素で囲まれて書き出します)
  • $name$:表示名(a要素で囲まれて書き出します)
  • $description$:プロファイル文章(Twitterの設定で「URL」を指定している場合はこれも書き出します)
  • $text$:ツイート文章
  • $created_at$:日付(a要素で囲まれて書き出します)
  • $logo$:ロゴ(ツイッターロゴをa要素で囲まれたimg要素として書き出します)
  • $reply$:リプライアクション(「src.reply」で指定していればこの内容で書き出します)
  • $retweet$:リツイートアクション(「src.retweet」で指定していればこの内容で書き出します)
  • $favorite$:お気に入りアクション(「src.favorite」で指定していればこの内容で書き出します)
  • $action$:上記の「$reply$」「$retweet$」「$favorite$」をまとめて書き出します
※「src.header」「src.body」「src.footer」で指定できる予約文字列です。
必ず「$」で囲んでください。



【使用例】
ヘッダは「tw_header」、本体は「tw_body」、フッタは「tw_footer」というクラスを持ったdiv要素の中に書き出されます。
任意で指定したソースで書き出されるので、CSSでお好みのスタイルを付けてください。

html:
<div id='twitter'></div>

JavaScript:
サンプル1
ヘッダとフッタなし、リプライ等のアクションはテキスト表記、スピードが5秒ごとのサンプルです。
var option = {
  screen_name: 'wings1685',
  speed: 5,
  dateformat: 'Y/M/D h:m:s',
  path: './api/',
  src: {
    body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$reply$$retweet$$favorite$</div></div>",
    reply: 'Re:',
    retweet: 'RT',
    favorite: '★'
  }
};
$('#twitter').twitterWidget(option);


サンプル2
ヘッダとフッタあり、リプライ等のアクションは画像指定、スピードが10秒ごと、リプライのツイートなし、リツイートなしのサンプルです。
var option = {
  screen_name: 'wings1685',
  speed: 10,
  exclude_replies: true,
  include_rts: false,
  dateformat: 'Y年M月D日 h時m分s秒',
  path: './api/',
  src: {
    header: "<div class='clearfix'><strong>$icon$</strong><span>$screen_name$</span><span>($name$)</span></div><p>$description$</p>",
    body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$action$</div></div>",
    footer: "<div class='tw'>$logo$<span>Twitter</span></div>",
    reply: "<img src='./reply.png' alt='' title='' />",
    retweet: "<img src='./retweet.png' alt='' title='' />",
    favorite: "<img src='./favorite.png' alt='' title='' />"
  }
};
$('#twitter').twitterWidget(option);


【サンプルソース】
ひとつのhtmlにまとめた例をサンプルソースをとして以下に挙げます。
<!DOCTYPE HTML>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>jquery.twitter.widget.js</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script src="./js/jquery.twitter.widget.min.js"></script>
  <script>
    $(function() {
      var option = {
        screen_name: 'wings1685',
        speed: 10,
        exclude_replies: true,
        include_rts: false,
        dateformat: 'Y年M月D日 h時m分s秒',
        path: './api/',
        src: {
          header: "<div class='clearfix'><strong>$icon$</strong><span>$screen_name$</span><span>($name$)</span></div><p>$description$</p>",
          body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$action$</div></div>",
          footer: "<div class='clearfix'>$logo$<span>Twitter</span></div>",
          reply: "<img src='./reply.png' alt='' title='' />",
          retweet: "<img src='./retweet.png' alt='' title='' />",
          favorite: "<img src='./favorite.png' alt='' title='' />"
        }
      };
      $('#twitter').twitterWidget(option);
    });
  </script>
</head>
<body">
  <div id="twitter"></div>
</body>
</html>


【確認環境】
jquery.twitter.widget.js は下記のブラウザでお使いいただけます。
  • Chrome
  • Safari
  • Firefox
  • Opera
  • Internet Explorer 7 以降

【実行結果】
flugel.biz でご確認ください。

12/03/2012

FaceTime で自分側の映像を隠す方法

みなさん FaceTime は使ってますか!?ぼくは使ってませんでした。

でも最近、普段は Skype で連絡を取ってた人と「どうせだから FaceTime でやろうぜ」って話になり、実際やってみてるんですが、別に顔見て話すわけじゃないし、お互い「恥ずかしいぜ///」って言ってたので、もしかしたら同じように思ってる人もいるんじゃないかって思ってエントリーを書きます。

偶然見つけた、っていうか「あれ?映像消えてますよ?」って言われて初めて消せることに気づきました。相手にも同じことやってもらったら、確かに映像は配信されないことを確認しました。

【FaceTime で自分側の映像を消す方法】
FaceTime のアプリを Dock にしまう

たったこれだけです。

10/30/2012

localStorage へのデータ保存・読み込みに json を使う

localStorage を使う場面が増えてきたように思うけど、localStorage には Object をそのまま保存できないので、色々なキーで保存・読み込みをしないといけなくなり、相当めんどくさいです。間違えやすくもなりますしね。でも、json 形式で保存すると、そのままの形式で保存できるし、間違いもグッと減るし、なにより楽でいいですね。

【保存する場合】
var opt = {
  browser: 'Chrome',
  OS: 'Mac OS 10.8.2'
};
localStorage.setItem('data', JSON.stringify(opt));

【読み込む場合】
var data = JSON.parse(localStorage.getItem('data'));
console.log(data);

【結果】

Search Capsule をリリースしました。

Google 検索や iTunes 検索をはじめとする様々なウェブサービスの検索結果ページへ、この「SearchCapsule」1つでジャンプできる Chrome の機能拡張をリリースしました。既存の60種に加え、簡単な操作でウェブサービスの追加もできます。
※以前「goSearchForYou」としてリリースしていた拡張のリニューアルです。

Chrome ウェブストア - SearchCapsule

インストール後、F12 もしくは Alt キーと一緒にクリックすると、検索ボックスが表示されます。


このウェブサービスを選ぶセレクトボックスは、ただサービスを表示するだけではありません。例えば、SearchCapsuleで「YouTube 動画検索」を行ったとします。すると、その直後からは「YouTube 動画検索」が一番上に表示されます。


これは検索を行う度、独自にポイントを計算しているので、よく使うサービスほど上位に表示されるようになります。この自動並び替えを使いたくない場合は、オプション画面の「使用頻度による自動並び替えを有効にする」のチェックを外します。外している間も計算自体は継続して行いますので、再びチェックしたときには、過去のポイントが全て反映されます。



SearchCapsuleを呼び出したり引っ込めたりするには、ショートカットキー(以下の通り)を使います。
-開く時(どちらもオプション画面で変更可)
--F1~F12 キー
--Shift / Alt / Command(Mac) / Ctrl(Win) キーを押しながらクリック
-閉じる時
--検索ボックスから離れたところをクリック(オプション画面で設定可)
--開く時のショートカットキー(オプション画面で設定可)

ショートカットキーを変更したい場合は、オプション画面で変更できます。



なお、テキストボックスに文字が入っている場合、セレクトボックスの項目を変更することで、検索を開始します。この自動発動をやめたい場合は、オプション画面の「ウェブサービスの切り替えでの自動検索を有効にする」のチェックを外します。


方向キーの「↑」と「Return キー」もしくは「Enter キー」を一緒に押して検索すると、新規タブで開きます。



各ウェブサービスの編集モードも備えています。「項目の非表示」「項目の並び替え」「名前の編集」「項目の削除」の操作をすることができます。


チェックを外すと、セレクトボックス内に表示されなくなります。もちろん、チェックを再び入れると、表示されるようになります。



項目名をドラッグ&ドロップすることにより、並び替えることができます。



鉛筆ボタンを押すことで、名前の変更ができます。



ゴミ箱ボタンを押すことで、項目を削除できます。削除した項目の復帰はできません。



オプション画面で「表示時にショートカットキーを押すことで非表示にする」のチェックを外している場合、開く時のキー(初期値は F12)を文字が選択された状態で押すと、入力ボックスに選択した文字が挿入されます。



初期値として定義されているウェブサービスは以下の通りです。
Google/Google[画像]/Google[地図]/YouTubeGoogle[ニュース]/Google[ブログ]/Google[書籍]/Google[ショッピング]/iTunesストア/Wikipedia/amazon/駅探乗り換え/えきから時刻表/Chromeウェブストア/livedoor[天気]/Yahoo![ニュース]/Yahoo![ショッピング]/Yahoo![オークション]/Yahoo![ファイナンス]/Yahoo![知恵袋]/OKWave/Goo[郵便番号]/Goo[国語辞書]/Goo[英和辞書]/Goo[和英辞書]/Goo[車]/Goo[バイク]/食べログ/ぐるなび/Twitter/Facebook/tumblr./flickr/Pinterest/github/ニコニコ動画/Ustream/価格.com/ヨドバシカメラ/ビックカメラ/ベルメゾン/ニッセン/セシール/楽天[市場]/楽天[オークション]/楽天[トラベル]/じゃらん/JTB/はてな[ブックマーク]/はてな[ダイアリー]/HOMES/チケットぴあ/映画.com/QLife/クックパッド/素材辞典/Cosmeet/リクナビNEXT/リクルート進学ネット/マイナビバイト

ウェブサービスを追加する方法はとても簡単です。
追加したいウェブサービスのウェブページを開き、対象とするテキストボックスでクリックした上で、F9 キー(オプション画面で変更可)を押します。すると、追加画面が表示されるので、項目名を入力し、「追加」ボタンを押します。追加できるウェブサービスは、<form>要素内にテキストボックスを持ち、実行先がJavaScriptでなく、文字コードがUTF-8・Shift_JIS・EUC-JPのどれかの場合です。


追加したウェブサービスは、一番下に追加されます。


追加済みのウェブサービスの場合は、項目名を変更することができます。


また、他のChromeと設定情報を共有したい場合は、共有元のChromeでオプション画面を開き、「エクスポート」を押してファイルを保存します。次に、共有先のChromeでオプション画面を開き、ファイルを選択して「インポート」を押すと、共有元の情報に上書きされます。Chrome間での同期はできません。


Chrome ウェブストア - SearchCapsule

10/18/2012

myFacebookStyle に「一番上に戻る」ボタンを追加しました

Facebook って、スクロールしていって過去の post を見ていると、一番上に戻るのにめんどくさい場合があるので、myFacebookStyle(Chrome/Safari 拡張)に「一番上に戻る」ボタンを追加しました。

ふと思ってサクっと実装したので、もしかしたら変な挙動をするかもしれませんが、ちょっとめんどくさいのから解放されます。



myFacebookStyle(Chrome 拡張)
myFacebookStyle(Safari 拡張)