ちょっと無駄話。

WordPress 3.3.1 がでてましたな。何やらJQueryの最新バージョンに対応したようです。で、なにそれ?っていう人は、ふーんと思ってもらってて良いものです。すごいことができますが、すごい事をするには技術とアイデアが必要です。それらがない場合はコピペで済むものですから気にしなくて良いのです。
ここらに出てくる言葉がわからない方は、それらしき段落を読み飛ばしちゃってください。気になる人はGoogle先生に尋ねるのが良かろうと思います。

で、JQueryと言うと、JQueryだけでなくPrototypeも他の諸々もダウンロードせずにGoogleライブラリあたりからリンクして使ったりすることもありますよね。

JavaScript
1
<script type="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">

こういうやつ。ヘッダの中に入れていちいちファイル自体をダウンロードしなくてもリンクするだけで使用できると言う便利なものなんですが、これいつからだったのか忘れたんですけれども、前はリンクするだけで使えていたように思うのですが、今は、API Keyとおまじないがいるようです。

JavaScript
1
</script><script type="text/javascript" src="https://www.google.com/jsapi?key=INSERT-YOUR-KEY">

うまく表示されないので一部日本語にしてます。

このINSERT-YOUR-KEYの部分に自分のキーを入れる必要があるのと、

JavaScript
1
2
3
4
5
6
7
8
9
10
google.load("chrome-frame", "1.0.2");
google.load("dojo", "1.6.1");
google.load("ext-core", "3.1.0");
google.load("jquery", "1.7.1");
google.load("jqueryui", "1.8.16");
google.load("mootools", "1.4.1");
google.load("prototype", "1.7.0.0");
google.load("scriptaculous", "1.9.0");
google.load("swfobject", "2.2");
google.load("webfont", "1.0.23");

こういったおまじないがいるのです。使うライブラリだけでいいんですけれども。これは、第一引数にライブラリの名前、第二引数にバージョンと言う書き方になっているので修正は楽ですよね。ちなみに引数(ひきすう)、「いんすう」ではないのです。間違ってはないのですが、一般的には「ひきすう」と言います。 面倒な場合はパラメーターで良いんではないでしょうか?詳しくは知りませんが。 ちなみに、Wikipediaには、

引数(ひきすう、いんすう[1][2])とは、プログラミング言語においてサブルーチンを呼び出すときに、そのサブルーチンを実行するために渡す値と、その渡された値に名前を付け、サブルーチン内で変数として扱えるようにしたもののことで、仮引数と実引数の総称である。なお、誤解を避けるため「ひきすう」と読むのが一般的で、「いんすう」は間違いであるとされることも多い。

はい、めんどくさい。「値(あたい)」でいいんです、こんなものは。

で、話は戻り、API Keyとおまじないのことをすっかり忘れてて、ライブラリのリンクだけを貼って、いざJQueryのプログラムをいじっていくわけです。たぶん4時間ぐらいなにがいけないんだ?と悩みまくりました。で、おまじないやらを入れたら元のままで動くわけです。人生ってそんなもんですよね。

ちょっと色々と試してみたくなって最近プログラムをよく書いています。書くといっても大したことはできないのですが、やはりアルゴリズムって大切だなと思ったわけなんです。 だいたい僕の場合、行き当たりばったりで書き始めてちょっとやっては修正してというのを繰り返してしまうわけですが、上手なプログラムを書く人は基本通りフローチャートまでとは行かないまでも必要な定数であったり、条件判断の仕方であったりを前もって考えてから書いていくそうです。

実際にカレンダーを作ろうとします。手で定規と鉛筆で書き始めたらそんなたいして難しいものではありません。しかし、それをいざプログラムで書こうとすると案外難しいのです。 そもそもどうやってその月の日数を求めるんだ?ニシムクサムライなんてのもありましたが、6月って30日だっけ?31日だっけ?となると「うぉぉぉぉ」と叫びそうになります。 開発環境が乏しいのでもっぱらタダでできるPHPなんかをいじっているわけですが、PHPの場合は便利な関数があります。

cal_days_in_monthってのがそれなんですが、

PHP
1
cal_days_in_month(calendar, month, year);

で、その月が何日あるか調べられる寸法です。これを踏まえて僕が考えたのが、現在の日付をそれぞれ変数に入れていきます。

PHP
1
2
3
4
5
6
7
8
9
$year = date('Y');
$month = date('n');
$day = date('j');
//で、後はmktimeとかを使ってその月の1日は何曜日であるかを調べます。
$weekday = array(0 =&gt; , 1 =&gt; 月・・・);
$w = date("w", mktime(0, 0, 0, $month, $day, $year));
$week = weekday['$w'];

とかこんな感じ。

その月の1日が何曜日かわかれば、そこから始めたらひとまず数字は埋まっていくはず。ただ、何日あるかが問題だと考えたわけです。何日あるかがわかればその分繰り返し処理をすれば良いじゃんと…。しかしここで「あ、これではダメだ」と思ったわけです。 よくあるカレンダーはその月だけのカレンダーですが、たまに、1日の前に前月の末日とその月の末日以降に次月のが入っているカレンダーってあるかと思います。つまり、7×6段の42日分のカレンダーですね。色々とすれば埋めることはできるのですが、案外考え方が大変です。

で、人が書いたプログラムを見るわけです。すると、checkdateなんて関数を使ってるわけですよ。なるほどと思いました。これなら、42回分ループさせる間にその月の妥当性が判断でき、まだ余っていたら次の月の最初…なんて処理ができるわけです。感心するばかりですね。 しかも簡潔に書けたりもします。

他にも感心することは多々あるわけですが、僕が昔色々と本なりを読んでみて感心したのは、エクセルなら一発でできるソート(並べ替え)の処理です。有名な奴ならバブルソートとかクイックソートとかありますが、プログラム初心者の人は是非これらの解説を読んでみて、プログラムの奥深さに触れると良いと思います。

コムソートは、いまだによく分からないんですが、なんでこれでソートになるんだろうと思ったり。

人気の記事:


関連する記事:

  1. コメントはまだありません。

  1. トラックバックはまだありません。

 
Performance Optimization WordPress Plugins by W3 EDGE