bower に table のカラムの表示/非表示を自由に選べるライブラリを追加してみた
皆さん。こんにちは。MUGENUP のosada
です。
電車を降りようとしたら、スマホを線路に落としました!
駅員さんにお願いして取っていただいたところ、
なんと画面が割れることもなく無事でした!ラッキー!
そんな運が良い osada がお送りする今回は、bower
のお話です。
js のパッケージ管理ツール Bower。
皆さん使っていらっしゃいますか?
弊社では、bower
パッケージを自動でgem
にしてくれるRailsAssets
というサービスを使って、
Rails
上でbower
を使っています。
今回はそんなbower
のパッケージを作ってたみたので、レポートします。
要点
- js ライブラリのデモページは、
github pages
が良かった github
のソースを、<script>
として読み込むrawgit
- RailsAssets に bower を直ちに反映させたければ、
Add Componet
表示するカラムを自分で決められるTable 用 jQuery プラグイン
弊社はクリエイティブの幅広い部分をカバーする会社ですので、
多くの案件と複数の職種が入り乱れて、ゴールを目指します。
すると、同じ案件の情報でも、見たいものが異なるのは自然なことです。
さらにいうと、同じ職種の人でも、見たいものが異なる
ということも、
よくあります。
そこで作ったのが、table_as_u_like
です。
- Table as u like
- 機能
- テーブルの
th
を読み込みトグルボタンにする - トグルによって、カラムの表示/非表示が切り替えられる
- session によって、個人ごとに状態を維持する
- テーブルの
coffeescript
で 45行の簡単なプラグインですが、便利に使っています。
今回はこれをbower
に登録しました。
bower に登録する前に
Rails用に開発したので、ライブラリとして公開するのに必要なものが2つありました。
Rails
の代わりにcoffeescript
をコンパイルする環境- デモ用のページ です。
gulp で coffee を コンパイル
coffeescript のコンパイルだと、 Gruntが思いつきますが、 今回は gulp.js を使ってみました。
設定ファイルが書きやすい、速い、など、Grunt
を改良したツールということでしたが、
1つの coffee
をコンパイルする程度だと、あまり違いが感じられませんでした。
今度は大規模なものに使ってみたいところです。
- インストール
npm install -g bower npm install -g gulp npm install --save-dev coffee-script npm install --save-dev gulp-coffee
- 設定ファイル
gulp.task 'coffee', () -> gulp.src files.coffee .pipe coffee() .pipe gulp.dest('lib')
設定ファイル、というより、シェルスクリプト、といった感じでした。
勿論watch
もあるので、安心です。
github pages でデモ用のページを作る
動的な要素が不要な場合、github pages
はとても便利です。
github
の settings
から
github-pages
を有効にすると、
gh-pages
というブランチが作られます。
以降はそのブランチへpush
することで、反映されるという簡単構造です。
(多少遅延があります)
jekyll
が使えるということでしたので、
大きなページを作る場合は、そちらの方が良いですね。
今回は1ページだったので、
ローカルでサーバを起動して、
開発して、push
という手順でした。
こんなときはpython
が大活躍。
python -m http.server
小さなものなら、これで十分ですよね。
github に置いたまま <script>
で読み込む rawgit
さて、そんな便利なgithub-pages
ですが、唯一困ったのか、
ライブラリの読み込みです。
jquery は cdn を使って読み込めます。
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
ですが、github
においてあるファイルは、そのままでは読み込めません。
例えば、こう書くと
<script src="https://raw.githubusercontent.com/osdakira/table_as_u_like/master/lib/jquery.table_as_u_like.js"></script>"
こう怒られます。
Refused to execute script from 'https://raw.githubusercontent.com/osdakira/table_as_u_like/master/lib/jquery.table_as_u_like.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.
github がこれを禁止していて、理由は、遅いから、 *1 ということのようです。
この制限を迂回するサービスがrawgit.com
です。
ヘッダを付与することで、github
へのダイレクトなアクセスを行い、
かつ、キャッシュすることでスピードを上げているようです。
デモの用途であれば*2、使用できるようです。
そうしてできたデモが Table as u like です。 index.html一枚で、js, css は全て外部から読み込んでいます。
bower に登録する
bower の登録については、既に多くの記事があるので(皆さん、ありがとう!)、概要のみ記載します。
bower
をインストールbower init
で対話形式でbower.json
を作成bower register
で登録
npm install -g bower bower init bower register table_as_u_like git@github.com:osdakira/table_as_u_like.git`
とても簡単でした。
RailsAssets に Add Componet する
ところが、bower
には登録されていても、RailsAssets
には出てきませんでした。
RailsAssets
への登録は非同期で行われているようで、遅延があるようです。
この場合、AddComponetを使うことで、
直ちに反映させることができました。
bower
が自動的にgem
になる。なんて便利なんでしょう!
まとめ
以上がjsライブラリ
をbower
に登録してみたレポートです。
- js ライブラリのデモページは、
github pages
が良かった github
に置いたまま、<script>
として読み込むrawgit
- RailsAssets に bower を直ちに反映させたければ、
Add Componet
そうそう、最後にもう一つ。 線路にものを落とした時は、 何番線の何号車の位置に落としたかを伝えましょう。 びっくりしますし、焦ってしまいますが、 それを伝えることができたら、話はスムーズです。 (私は上りと下りを間違えて、ウロウロしてしまいました)
では、良い geek ライフを!
参考
- Bowerまとめ(概要・導入・コマンド一覧) - Qiita
- bowerにパッケージを登録する - Qiita
- Link and execute external JavaScript file hosted on GitHub - Stack Overflow
*1:Heads up: nosniff header support coming to Chrome and Firefox
*2:アクセスが少なく、負荷をかけないもの