ドットインストールでJavaScriptのレッスンを写経しているだけでは勿体無いので、最近はサイボウズ株式会社さんのkinotoneモクモク会に参加して、kintone JavaScriptについて学習をしています。kinotoneユーザーの方からアプリのカスタマイズやプラグインの作成を頼まれたら、オーダーメイドができるようになることが目標です。
JavaScriptの無名関数とjQueryオブジェクトの引数
昨日のモクモク会でチュートリアルとして写経をしようと思ったのが、勤怠管理アプリのカスタマイズスクリプトです。203行で記述がされていますが、まず注目すべきところは、最初の宣言文と即時関数です。これらはお約束ごとの書き方らしいですが、気になるので色々調べてみました。
[php]
jQuery.noConflict();
(function($) {
}(jQuery)
[/php]
jQuery.noConflict()について
この関数を実行すると、$関数の動作が先に定義されている動作に戻ります。複数のjQueryが定義されている場合、「このjQueryを使いますよ」という宣言をしているとのことです。
即時関数 function($) の引数
$はjQueryの意味です。聞くところによると$という文字は任意の文字列で、$でなくてもeとかiなんでも良いらしいです。今度、モクモク会に参加したときに試してみます。
即時関数の引数(jQuery)の意味
即時関数の引数として使われているjQueryとは、jQueryオブジェクトのことだそうです。JavaScriptの専門用語で言うところの「プリミティブではない型」のことを指します。この引数をとることで、カスタマイズした勤怠管理アプリのJavaScriptが実行されます。
1行目でnoConflictを使っているので、jQueryオブジェクトの呼び出しには明確にjQueryと書く必要があります。
JavaScriptなのになんでjQueryなの?
kinotoneはJavaScriptがベースになっているので、いきなり”jQuery”の文字列が出てきた時は、非常に面食らいました。ですがスクリプトの中でjQueryが使われているのは、サイボウズ専用のjQueryライブラリを使う必要があるからだと思います(「思います」と書いたのは自分の推測。今度「なかの人」に会ったときに本当かどうか質問しておきます)。
と言うわけで、9月もkinotoneモクモク会に参加する予定です。kintoneだけでなく、プログラミング言語の学習の一環としてJavaScriptにご興味のある方の参加もお待ちしています。
【参考サイト】
- jQuery.noConflict() – jQuery 日本語リファレンス
- (function($) {})(jQuery);って何?って思ったからいろいろ試してみた記録 – お勉強orz日和
- jQueryオブジェクトとは? – to-R
- kintone JavaScript コーディングガイドライン cybozu developer network