2015年5月22日金曜日

(jQueryの学習)エフェクト:アニメーション(第三回)
「アニメーション」の3回目です。

今回もanimateメソッドのサンプルの紹介ですが、
前回よりももう少し難易度を上げたいと思います。

●animateメソッドのサンプル(応用)


7.複数のエフェクトを直列に動かす

直列に動かすためには、
最初のエフェクトが『終わったら』次を実行するようにします。
今回は「complete」の引数を利用して実現しています。
  $("#animate7-Target1").animate(
    {marginLeft: "+=100"},
    1000,
    "swing",
    function() {
      $("#animate7-Target2").animate(
        {marginLeft: "+=100"},
        1000,
        "linear"
      );
    }
  );
swing
linear

8.複数のエフェクトを並列に動かす

並列に動かすためには、動かしたいエフェクトを続けて書くだけです。
  $("#animate8-Target1").animate({marginLeft: "+=100"}, 1000, "swing");
  $("#animate8-Target2").animate({marginLeft: "+=100"}, 1000, "linear");
swing
linear

9.エフェクトをループさせる

ループさせるためには、
jQueryではなくJavaScriptの「setTimeout(mozillaのAPIリファレンスはこちら)」を使います。
今回の例では『3秒間に左から右に丸いオブジェクトを延々と移動』させてます。
$(function() {
  // (1)実行ボタン押下で「setTimeout」を起動(JavaScriptの関数を実行)
  $("#animate9-Trigger input[type=button]").click(function(){
    setTimeout("loopAnimate()");
  });
});
function loopAnimate() {
  // (2)animateでオブジェクトを移動(左⇒右・・・移動が完了したら左へ戻す)
  $("#animate9-Target").animate({marginLeft: "350px"}, 3000)
                        .animate({marginLeft: "-100px"}, 0)
  // (3)もう一度「setTimeout」を起動(後は(2)~(3)の繰り返し)
  setTimeout("loopAnimate()", 3000);
}
loop

いかがでしたか?

調べてみると、
もっと複雑なアニメーションもできるようです。
近いうちに挑戦したいですね。

それでは、また。

2015年5月20日水曜日

(jQueryの学習)エフェクト:アニメーション(第二回)
「アニメーション」の2回目です。

1回目はアニメーションの説明から、animateメソッドの解説まででした。

今回はanimateメソッドのサンプルを紹介したいと思います。
まずは基本的なものから・・・。

●animateメソッドのサンプル(基本)


1.大小を変える


duration: 500ms 1000ms 1500ms
easing: swing linear
ここでは文字の大小を変化させているの「font-size」のプロパティを指定しました。
単純に変化させるのであればパーセントで指定する方が簡単です。
細かく指定する場合は「px」や「em」で指定します。
また、図やオブジェクトを変化させる場合は「height」や「width」で調整できます。
  $("#animate1-Target").animate({fontSize: "150%"});
あいうえお

2.左右に動かす


duration: 500ms 1000ms 1500ms
easing: swing linear
div属性で定義したオブジェクトを動かすには「margin-left」のプロパティを使います。
右へ動かすには「+」、左へ動かすには「-」で指定します。
なお、上下に動かすには「margin-top」を使用します。
  $("#animate1-Target").animate({marginLeft: "+=75px"});
かきくけこ

3.濃淡を変える


duration: 500ms 1000ms 1500ms
easing: swing linear
「opacity」によって濃淡を変えます。
opacityは「0.0(淡)~1.0(濃)」の範囲で指定可能です。
通常で見える状態は「1.0」。対して、一番淡い(何も見えない)状態は「0.0」です。
また、opacityに「"toggle"」と指定することで、下から徐々に消えるようになります。
  $("#animate1-Target").animate({opacity: "0.5"});
さしすせそ

4.エフェクトが完了する時間を変える

完了時間を操作するには「duration」の引数を使います。
描画効果は他の描画サンプルにて確認できますので、
durationのラジオボタンを変えながら変化を感じてください。
  $("#animate4-Target").animate({fontSize: "150%"},1500);

5.エフェクトの動きを変える

エフェクトの動きを操作するには「easing」の引数を使います。
標準では「swing」と「linear」が用意されています。
描画効果は他の描画サンプルにて確認できますので、
easingのラジオボタンを変えながら変化を感じてください。
  $("#animate5-Target").animate({fontSize: "150%"},1500,"swing");

6.エフェクト完了後にアラートを出す


duration: 500ms 1000ms 1500ms
easing: swing linear
エフェクト完了時にアラートを出すには、「complete」の引数を使います。
この引数には完了時に動かしたい任意の関数(function() { })が指定できます。
今回のサンプルでは、
 ・アラートを出すための「alert関数」の実行
 ・アラート確認後、移動したオブジェクトを元に戻す処理
を行っています。
  $("#animate6-Target").animate(
    // properties
    {marginLeft: "+=100px", marginTop: "+=100px"},
    // duration
    1000,
    // easing
    "swing",
    // complete
    function() {
      alert("Complete!!");
      $("#animate6-Target").animate({marginLeft: "-=100px", marginTop: "-=100px"},0);
    }
  );

いかがでしたか?

次回は応用として、
もう少しだけ難しいアニメーションに挑戦したいと思います。

それでは、また。

2015年5月18日月曜日

(jQueryの学習)エフェクト:アニメーション(第一回)
今回は「アニメーション」を学びます。

アニメーションとはどんなものか?

例えば、文字を・・・
・大きくしたり、小さくしたり
・右に動かしたり、左に動かしたり
・薄くしたり、濃くしたり
・・・のようなことを、
Webページ上に独自の描画効果を表示することです。

Windows98が全盛だったときに、
JavaScriptで同じようなコードを書いたことがありますが、
ものすごいコード量だった記憶があります。

これをjQueryを使うことで、
どの程度シンプルにできるのか?(期待を込めて)も学んでみたいと思います。

◆主な用途

こんなときやこんなものに使えます。

●利用したいシーン
1.Webサイト(特にリッチサイト)を着飾りたいとき
2.Webサイトにトリックを埋め込みたいとき

●利用したいコンテンツ
1.入力(入力後、次のアンケート項目をストレス無く表示させる)
2.背景(雪を降らせるなど)

上記に限らず、使い手次第で様々な用途に使えます。


◆主な方法

●アニメーションの方法
アニメーションの方法はいくつかあるようです。
1.animateメソッド
2.toggle系メソッドを駆使する
3.CSS3を使う

3.のCSS3は、まだどんなものかわかっていないので、今後の課題とします。
頑張れば2.の「toggle系メソッド」でも実現できると思いますが、
今の段階ではあまりにも難題のため、今回は「animateメソッド」に特化して学びたいと思います。


●animateメソッドの引数
引数を見ることで、animateメソッドにどんな用途があるのかが見えてきます。

引数には
1.properties
2.[任意]duration
3.[任意]easing
4.[任意]complete
があります。

1.properties
アニメーションによって、どのようなデザインに変化させたいのか?を指定します。
具体的には、width、opacity、borderLeftWidth、fontSizeのようなstyle属性を変化させる情報を指定します。
※注意事項として、各項目IDはキャメルケースで表記する必要があります。
 (例:border-left-width ⇒ borderLeftWidth)

2.[任意]duration
アニメーションの動作期間を指定します。

『"slow"、"normal"、"fast"のいずれかの文字列』、または、『ミリ秒単位の数値』を指定します。

"slow"などの文字列を指定した時の秒数は以下の通りです。
文字列ミリ秒
slow600
normal400
fast200

durationに「2000」を指定すると、2秒間かけてアニメーションを完了させます。

なお、未指定時のデフォルト値は「400」です。

3.[任意]easing
値の変化量を調節するときに指定します。
アニメーションの変化に抑揚をつけたいときに指定すると説明すればわかりやすいでしょうか。

標準では"swing"と"linear"が用意されており、
2つの違いを以下に記します。
指定値変化量
例:10秒で0⇒10cmになる場合
linear単調な変化
例:毎秒1㎝ずつ大きくなる
swing緩急のある変化
例:最初と最後の2秒は1㎝しか変わらないが、途中の6秒間の変化が大きい

</table>

上のように書きましたが、
実際に動かしてみると、
左から右に一直線上に動くような変化で比較しないと、
どちらも似たようなものに思えます。
(私がこのようなアニメーションの分野に疎いということもあるのかも知れませんが)

ただし、独自関数を指定することで、
「最初だけ早く」したり、「最後だけ早く」したり、
「起伏のある変化をする」など、独自の描画効果を得ることもできるようになっています。

なお、未指定時のデフォルト値は「"swing"」です。

4.[任意]complete
最後の引数は、アニメーション終了時に実行する関数を指定できます。
例えば・・・アラート出力、CSS制御(フォントを変えるなど)、HTML制御(文言出力など)ができます。


次回、animateメソッドのサンプルを紹介したいと思います。
それでは、また。

2015年5月14日木曜日

(jQueryの学習)エフェクト:特定エリアの開閉(toggle系以外のメソッド)
今回も「特定エリアの開閉」を学びます。

前回学んだ方法は
 1.toggleメソッド
 2.slideToggleメソッド
 3.fadeToggleメソッド
です。

これに対して、
今回は
 4.showメソッド と hideメソッド の組合せ
 5.slideDownメソッド と slideUpメソッド の組合せ
 6.fadeInメソッド と fadeOutメソッド の組合せ
について学びます。

◆開閉方法の違い

4.show-hideメソッドのサンプル

slow normal fast
描画効果:「対角線方向(閉:右下から左上 開:左上から右下)」で表示・非表示を制御する

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#showHide-Target");
    if (x.is(":hidden")) {
      x.show("slow");
    } else {
      x.hide("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>


5.slideUp-slideDownメソッドのサンプル

slow normal fast
描画効果:「垂直方向(閉:下から上 開:上から下)」で表示・非表示を制御する

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#slideUpDown-Target");
    if (x.is(":hidden")) {
      x.slideDown("slow");
    } else {
      x.slideUp("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>


6.fadeIn-fadeOutメソッドのサンプル

slow normal fast
描画効果:「指定エリア全面」で表示・非表示を制御する(徐々に消えたり、出たりする)

<<<開いたり、閉じたりする領域(開始)>>>

    x = $("#fadeInOut-Target");
    if (x.is(":hidden")) {
      x.fadeIn("slow");
    } else {
      x.fadeOut("slow");
    }
  

<<<開いたり、閉じたりする領域(終了)>>>



●ここまでで気づいたこと・・・

・前回のtoggle系メソッドと描画効果を類似している
・toggle系メソッドの方がコード量が少ない

描画効果の違いについて、
わかりやすくするため、似ているもの同士を左右に並べてみました。

◆開閉方法ごとの比較

大きく3つの描画効果に分けてみました。
効果toggle系toggle系以外
show/hide

1.toggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

4.show-hideメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

slide

2.slideToggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

5.slideUp-slideDownメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

fade

3.fadeToggleメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>

6.fadeIn-fadeOutメソッド

<<<開閉エリア(開始)>>>

・・・・・・・・・・・・・・・

<<<開閉エリア(終了)>>>



このようにして比較してみると、違いは無いように見えます。

実はちょっと違うのかな?とあれこれいじってみましたが、大差無し。


・・・なんてことはない・・・。

jQueryの本家サイト(http://api.jquery.com/)で調べてみたところ、
toggle系のメソッドは、
2本のメソッド(例:toggle VS show⇔hide)を対に呼び出すことと同等と書いてありました。
http://api.jquery.com/toggle/ ("Examples:"の手前辺り)

だったら、コード量の少ない「toggle系メソッド」しか使わなくて良いかも知れませんね。

違いとしては、
使用するjQueryのバージョンによっては使えないところ(↓)なので、
ver1.4以降なら「toggle系メソッド」一択で良さそうです。

●バージョンによる違い

・toggle系以外のメソッド:ver1.0~
・toggle系メソッド   :ver1.4~


jQueryのバージョンの違いで大きく出るのは「1.x系」か「2.x系」か?を選択するときで、
しかも、「1.x系」は2015年5月現在で「ver1.11」まで上がっているので、
よほどのこと(バージョンアップにより廃止された機能が必要など)が無い限りは
「toggle系メソッド」を選択して問題ありませんね。

それでは、また。

2015年5月13日水曜日

(jQueryの学習)エフェクト:特定エリアの開閉(toggle系メソッド)
今回は「特定エリアの開閉」を学びます。

「特定エリアの開閉」とはどういうことかというと、
読んで字の如く、『ある領域を開いたり、閉じたりすること』です。

Microsoft Excelのような表計算ソフトの「グループ化」を連想すれば、大体イメージ通りかと思います。
ただ、表計算ソフトの「グループ化」は、
『行全体』だったり、『列全体』だったりするので、厳密に見ると全く違うものだけど。。。

◆主な用途

こんなときやこんなものに使えます。

●利用したいシーン
 1.普段は隠しておいて、必要なときだけ表示したいシーン
 2.逆に不要なときに、閉じて非表示にしたいシーン

●利用したいコンテンツ
 1.メニューやリスト
 2.長文の説明書き

上記に限らず、使い手次第で様々な用途に使えます。

◆主な方法

開閉する方法はいくつか存在するので、わかる範囲で列挙します。

●開閉方法の種類
 1.toggleメソッド
 2.slideToggleメソッド
 3.fadeToggleメソッド
 4.showメソッド と hideメソッド の組合せ
 5.slideDownメソッド と slideUpメソッド の組合せ
 6.fadeInメソッド と fadeOutメソッド の組合せ

ざっと上げると、この6つのいずれかの方法で実現できる。

◆開閉方法の違い

それぞれ描画効果が異なります。
また、各メソッドに渡す引数を切り替えることで、
描画スピードもコントロールすることができます。
※今回は「"slow" or "normal" or "fast"」の文字列を渡していますが、
 ミリ秒単位で指定することも可能です。(例:1500・・・1.5秒)

言葉だけではイメージし辛いと思うのでサンプルを・・・

1.toggleメソッドのサンプル

slow normal fast
描画効果:「対角線方向(閉:右下から左上 開:左上から右下)」で表示・非表示を制御する
<<<開いたり、閉じたりする領域(開始)>>>
    $("#toggle-Target").toggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>

2.slideToggleメソッドのサンプル

slow normal fast
描画効果:「垂直方向(閉:下から上 開:上から下)」で表示・非表示を制御する
<<<開いたり、閉じたりする領域(開始)>>>
    $("#slideToggle-Target").slideToggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>

3.fadeToggleメソッドのサンプル

slow normal fast
描画効果:「指定エリア全面」で表示・非表示を制御する(徐々に消えたり、出たりする)
<<<開いたり、閉じたりする領域(開始)>>>
    $("#fadeToggle-Target").fadeToggle("slow");
  
<<<開いたり、閉じたりする領域(終了)>>>



こんなところですね。
次回は「4.showメソッド と hideメソッド の組合せ」から。

それでは、この辺で。

2015年5月9日土曜日

jQueryを基本から学ぶ

◆jQueryの基本的な形

jQueryの基本的な形は
$("セレクタ").メソッド(引数);
で表せる。
なお、$()だけでもオブジェクトは取得できる。

◆セレクタとは

セレクタとはHTMLタグ(H3やPなど)や、そのタグに付与されたIDを指す。
もっと言えば、HTMLソース上の要素を特定するために指定する。

◆メソッド(またはプロパティ)とは

次にメソッドとは、どんな処理をするか?を表す。
「マウスオーバーしたとき(hover)」や「クリックしたとき(click)」などのイベントを指定したり、
「要素を付与する(add)」や「CSSを設定する(css)」などの変更内容を指定したりする。

全般的にメソッドと書くとやや語弊がある。
情報を取得する(要素数を取得するlengthなど)ものは「プロパティ」と呼ぶ。

◆引数とは

最後の引数は、引数を必要とするメソッドの場合に指定する。
CSSの要素を指定する場合や、toggleメソッドの描画速度などを指定する。

◆セレクタの種類

サンプルコードセレクタの種類説明
$("p")要素セレクタHTMLタグの要素を選択
$("#top-table")IDセレクタID属性が指定した値と一致する要素を選択
$(".class1")クラスセレクタCLASS名(例:class1)の要素を選択
$("li a")子孫セレクタ先祖要素(例:li)を持つ、子孫要素(例:a)を選択
$("#top-table, #buttom-table")グループセレクタ指定したセレクタにマッチする要素をまとめて選択
$("h2 + h3")隣接セレクタ前後関係になっている後方(例:h3)の要素を選択
$("li > ul")子セレクタ親要素(例:li)を持つ子要素(例:ul)を選択
$("p").siblings()兄弟セレクタ指定した要素の兄弟で、それに続く要素を選択

などがある。

その他にもいろいろなセレクタがあるので、
詳細は本家のリファレンス(http://api.jquery.com/category/selectors/)を参照した方が良い。
日本語訳されたサイトもあるが、各人が開発中のバージョンと異なる場合もあるので閲覧するときは注意が必要。

◆メソッドの種類

「CSSを操作するメソッド」、
「HTMLの属性を操作するメソッド」、
「描画(エフェクト)に関するメソッド」などがある。
上にも書いたが、
オブジェクトの属性情報を取得するものは「プロパティ」と呼ぶ。


・CSSを操作するメソッド・・・例:css()メソッド


上のセレクタの説明の背景色を奇数行のみ変更します。
$("table#stripe-table tr:odd").css("background", "#FF2222");



・HTMLの属性を操作するメソッド・・・例:text()メソッド


ここに書いてある文字を変更します。
$("#text_chg").text("文字は書き換わりましたか??");



・描画(エフェクト)に関するメソッド・・・例:toggle()メソッド


ここのエリアを閉じます。
ちなみに、toggle()内の"slow"が引数に当たる。
$("#toggle_chg").toggle("slow");


その他にも多くのメソッドが存在します。
今後学んでいく課程で少しずつまとめていきたいと思います。

2015年5月8日金曜日

【廃止】GoogleドライブをWebサーバとして使う

-2016年8月でGoogleドライブのWebホスティング機能は廃止-


今日は「Webホスティング機能」を使って、
GoogleドライブをWebサーバ化したいと思います。

【手順】
  1. 公開するフォルダを作成する
  2. 作成したフォルダを共有する
  3. Webホスティング用URLを取得する
  4. 実際にブラウザで閲覧してみる

◆公開するフォルダを作成する


①ドライブのメニューから「新規」を選択
②「フォルダ」を選択

③フォルダ名を入力して「作成」

フォルダ名はどんな名前でも良いと思います。
今回は「www」にしてみました。


◆作成したフォルダを共有する


④作成したフォルダを選択して、右クリック
⑤コンテキストメニューから「共有...」を選択

⑥ここで「詳細設定」を選択

⑦「共有設定」のメニューで、中段右側の「変更...」を選択

⑧「リンクの共有」のメニューで、「オン - ウェブ上で一般公開」を選択
⑨「保存」を選択

⑩「共有設定」のメニューに戻ってきたら、『共有するリンク』をコピーしておく
⑪「完了」を選択


これで共有設定は完了です。


◆Webホスティング用URLを取得する


シンタックスハイライトを導入したときと同じく、Webホスティング用のURLを作成します。

上の⑩でコピーした公開URLから、
「id=xxxxxxxxxxxxxx("&"の前まで)」をコピーします。
⇒コピーした値:『0B9bOjcqr46nrfjFIWU8tcFFHTmFUUGpBWGZ4WGNzSlVhZlNIUy1ZSHdOMnlvcjRQNjlVSFk』

これを『https://www.googledrive.com/host/』と連結します。

こんな感じ・・・

Webホスティング用URL
https://www.googledrive.com/host/0B9bOjcqr46nrfjFIWU8tcFFHTmFUUGpBWGZ4WGNzSlVhZlNIUy1ZSHdOMnlvcjRQNjlVSFk


◆実際にブラウザで閲覧してみる


先ほどのWebホスティング用URLをブラウザのアドレスバーに入力(コピペ)します。

Enterキーを押してみると・・・。

こんな感じでフォルダ内のファイルが全て見える状態になっていますし、
サブフォルダ(画像中の「pic」フォルダ)の中身も参照できる状態になっています。

これを回避するために、共有フォルダの直下に「index.html(または、index.htm)」を配置します。

先ほどのURLをリロードしてみましょう。

配置した「index.html」の内容が表示されました。


この仕組みを利用すれば、
サンプルページの公開や「jQuery」以外のJavaScriptライブラリの実験ができそうですね!

2015年5月7日木曜日

Blogger上で「jQuery」を動かす
今回はBlogger上で「jQuery」を動かしてみたいと思います。

「jQuery」を動かして何をするのか?は置いておいて、
まずは「jQuery」を学ぶことから始めます。


【手順】

  1. jQueryとは?
  2. jQueryのライブラリを入手する
  3. Bloggerのテンプレートに埋め込む
  4. 実際に試してみる


・・・こんな感じでしょうか。

では、始めます。


◆jQueryとは?

jQueryとはウィキペディアによると
ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリ
とのことです。
jQueryには「jQuery本体(jQuery Core)」と「jQuery公式プラグインのjQuery UI」が存在し、
また、スマートフォン用の「jQuery Mobile」も存在するようです。
つまり、スマホアプリの開発も「jQuery」でできるという素晴らしいツールです。

スマホアプリの開発については、追々学んでいきたいと思いますので、
今回は「jQuery本体」にターゲットを絞ります。

※プラグインは非公式のものも公開されているようで、こちらも追々と・・・。


◆「jQuery」のライブラリを入手する

jQueryの本家サイト(http://jquery.com/)に行けば入手できます。
適宜ダウンロードして、先日の「シンタックスハイライト」の件と同じように
Googleドライブにアップロードして使うこともできますが、
今回は『CDN(Contents Delivery Network)』という仕組みを利用します。

CDNとは「Webコンテンツを配信するために最適化されたネットワーク」のことです。
細かいところはわかりませんが、
今回の場合で言うと、
「jQueryのライブラリを、多くの人々が遅延無く利用できるようにするためのネットワーク」と表現できますね。

それと「遅延無く」という部分が肝で、
キャッシュが使われたり、
実際には複数のサーバが存在して、1つのサーバにアクセスが集中しないような仕組みになっています。
ロードバランサみたいなものかな?と思ったのですが、ちょっと調べてみると技術的には別物みたいです。

ちょっと脱線してしまいましたが・・・

・・・で、jQueryのライブラリをCDNにて利用するわけですが、
ここでは(も)Googleが提供しているサービスを利用したいと思います。
(他にも本家jQueryやMicrosoftにも存在します)

Google Developersのリファレンス(https://developers.google.com/speed/libraries/)を見ると、
jQuery、jQuery Mobile、jQuery UI・・・と一通りのライブラリが使えるみたいです。


ここでバージョンが複数あることに気付く・・・。

さてはて・・・ど・ち・ら・に・し・よ・う・か・な・・・ではなく・・・
大まかに説明すると、
・1.x系:IE8以前をサポートするレガシーブラウザ向けのバージョン
・2.x系:IE8以前を切り捨てた最新ブラウザ向けのバージョン(高速・安定を目指したバージョン)
となります。

どんなブラウザでも動くように、今回は「1.x系」を選択しました。


◆Bloggerのテンプレートに埋め込む

「シンタックスハイライト」の件と同じく、
Bloggerのテンプレートのheadタグ内に
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'/>
を埋め込みます。
Google Developersのリファレンスでは、
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
となっているので、これでも問題ないと思いますが、
scriptタグのtype属性を省略するのが嫌だったので修正してます。

【作業手順】
 「テンプレート」⇒「HTMLの編集」⇒・・・埋め込み・・・⇒「テンプレートを保存」

埋め込む位置は↓を参照



◆実際に試してみる

ここまででお膳立ては完了しました。

では、実際に試してみましょう。

うーむ・・・何をしようか考えてなかった。。。





ボタンを押したときに、文字の色を変えてみようと思います。
(今のスキルではこの程度しかわからなかったので・・・)


この文字の色を変えます



以下、サンプルソースです。
これを本文中に埋め込んでます。
<script>
<!--
$(function(){
  $("#ac_test_button").click(function() {
    if($("#ac_test").css("color") == "rgb(255, 0, 0)"){
      $("#ac_test").css("color","blue");
    } else {
      $("#ac_test").css("color","red");
    }
  });
});
//-->
</script>

<div id="ac_test" style="color: #ff0000;">
<h3>
この文字の色を変えます</h3>
</div>
<br />
<div id="ac_test_button">
<input type="button" value="クリックすると?" />
</div>

それでは、また。

2015年5月6日水曜日

google-code-prettifyをカスタマイズ
「google-code-prettify」でシンタックスハイライトできたのは良いけど、
「prettyprint linenumsクラス」の挙動がなんか変・・・。

こんな感じ・・・


5行ごとにしか行番号が表示されない・・・。

コードを解析してみると、「google-code-prettify」の仕様みたいですね。

毎行表示できた方が読みやすいので、
ちょっとカスタマイズしてみたいと思います。

表示をカスタマイズするには、一緒にアップロードした「prettify.css」を修正します。

これも難読化されているので探し難いですが、
560列目くらい(注:2013/3/4版)からの
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}
をコメントアウト(/*...*/)します。
こんな感じ・・・
/*li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}*/

※Googleドライブ上のファイルを
 「修正⇒アップロード」するときはデスクトップアプリが便利です。
 ローカルで保存したファイルが自動的にアップロードされるので、
 アップロードの手間が省けます。
 ただし、間違えると表示が破綻するので慎重に。。。

では、見てみましょう。
こんな感じ・・・


できました!

-- 追記 --
前回のエントリーの「prettify.js」の件もですが、
難読化されているのは「google-code-prettify」のsmall版を使っているからです。
コードサイズがだいぶ違うので、読み込み量を考慮して、
私はsmall版を選択しましたが、中身はsmall版でも無記名版(small無し)でもどちらも一緒です。

2015年5月5日火曜日

JavaScriptライブラリを学ぶ
今回のお題は「JavaScriptライブラリ」です。

そもそも「JavaScript」自体の理解が怪しい自分で、
そこまで飛んでしまっていいものか疑問だけど、とにかく「JavaScriptライブラリ」です。


◆JavaScriptライブラリとは・・・

ライブラリという言葉から連想できるように、
JavaScriptの「集合体」とでも言えば良いでしょうか?

あ、JavaScriptのコードで書かれた
「いろいろな部品を詰め込んだ便利なツール」
と表現した方がわかりやすいですね。


◆JavaScriptライブラリの種類・・・

「Node.js」や「jQuery」というものは聞いたことがある。。。

自分好みのライブラリを作ることもできるけど、
上記のような一般公開されているライブラリを使うこともできる。

一般公開されているようなライブラリは、
1本で何でもできるわけではなく、
それぞれの特色があって、各人の用途に応じて利用できるようになっています。


◆JavaScriptライブラリで何ができるのか?

例えば・・・
・Node.js(http://nodejs.jp/
 ⇒非同期通信に特化したライブラリ。
  例えば、SNSの更新情報を「更新ボタン」を押さずにリアルタイムに表示してくれたりできる。

・jQuery(https://jquery.com/
 ⇒Webサイトの表示に特化したライブラリ。
  Webブラウザごとの「方言」を統合したり、
  HTMLよりもコード量を少なくしたり、
  デザイナーやデベロッパーの作業負荷を減らした画期的なツール。(・・・だと思ってる)

その他、昨日のエントリー(Blogger上で「シンタックスハイライト」を導入)で書いた、
シンタックスハイライトもJavaScriptライブラリの恩恵を受けている。


◆JavaScriptライブラリの中身

シンタックスハイライトで使った「google-code-prettify」を例に・・・

「prettify.js」をテキストエディタで開くと↓のようなものが書かれている。。。
※長いので9割方省略してます
!function(){var q=null;"--中略--"(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return "--中略--"}"--中略--"}})();}()


・・・一見して、何が書かれているのかわからない・・・。(いわゆる「難読化」されてます)

これを整形してみると・・・(「Online JavaScript beautifier」(http://jsbeautifier.org/)を利用)
! function() {
    var q = null;
    "--中略--"
    (function() {
        function S(a) {
            function d(e) {
                var b = e.charCodeAt(0);
                if (b !== 92) return b;
                var a = e.charAt(1);
                return "--中略--"
            }
            "--中略--"
        }
    })();
}()

・・・こんな感じです。
変数(var)や関数(function)がたくさんあり、
これをWebページから呼び出して、利用する仕組みになっている。
⇒「prettify.js」のコードをざっと読むと、
 正規表現などを駆使して、フォント調整を行っているようです。


以上、ご理解いただけましたでしょうか?

今後、様々なライブラリを利用してみたいと思います。

2015年5月4日月曜日

Blogger上で「シンタックスハイライト」を導入
まずは、Blogger上で「シンタックスハイライト」を導入してみます。

シンタックスハイライトとは、
プログラムのコードを装飾して、読みやすくすることです。
テキストエディタのハイライト機能と同じようなものですね。

Googleにて「google-code-prettify」というツールが提供されているので、
これで実現してみようと思います。

【手順】

  1. 「google-code-prettify」からプログラム本体をダウンロード
  2. ダウンロードしたプログラムから「prettify.js」と「prettify.css」を取り出す
  3. 任意のサーバにアップロードする
  4. Bloggerのテンプレートに埋め込む
  5. 実際に試してみる

・・・では、やってみます。

1.まず、「google-code-prettify」からプログラム本体をダウンロードします。
    ⇒ページ内の「Download」からダウンロードページに移動
        「prettify-small-*****.tar.bz2」、または、「prettify-*****.tar.bz2」をダウンロードします。
        ⇒今回は「small」を使います。

2.ダウンロードしたファイルを解凍ツールを使って解凍して、「prettify.js」と「prettify.css」を取り出します。

3.取り出した「prettify.js」と「prettify.css」を任意のサーバにアップロードします。
    ⇒今回は同じGoogleサービスの「ドライブ」にアップしてみました。
        アップロードしたファイルを「ウェブ上で一般公開」にして公開URLを取得しておきます。

    ここでひと手間加えます。
    取得した公開URLの「https://drive.google.com/file/d/******/」の「******」をコピーし、
    「https://www.googledrive.com/host/」と連結します。
    ⇒こんな感じ・・・『https://www.googledrive.com/host/******』
     ※GoogleドライブのWEBホスティング機能により、
       アップロードしたファイルが外部参照されるようになります。

    ⇒Googleドライブの公式ヘルプ

4.Bloggerのテンプレートのheadタグに埋め込みます。
<link href='prettify.cssファイルのURL' rel='stylesheet' type='text/css'/>
<script src='prettify.jsファイルのURL' type='text/javascript'/>

    続いて、bodyタグに実行文を追加します。
onload='prettyPrint()'


    ・・・こんな感じ・・・
   

5.シンタックスハイライトを掛けたいコードを「<pre class='prettyprint'></pre>」や「<pre class='prettyprint linenums'></pre>」で括ります。
    注意点として・・・
        タグで使用する"<"や">"の記号は
        文字参照(&lt;と&gt;)に置き換える必要があります。
  上記タグで括った結果は「4.」の項を参照。