BPStudy#41に参加しました

[JavaScript][Git][イベント]BPStudy#41に参加しました

ATNDなどでBPStudyの存在は知っていたのですが、今回初参加。

分散SCMを勉強しようと思って最近Gitを使いはじめたのですが、リアル周りに使っている人がいないので知識共有ができず……。他の人はどうやって使っているのかなーと思っているところに神速さんがGitの発表をすると聞いたので、自重せずに参加しました。

以下メモ。前半戦のjsも、聞けばわかるかなーとか思っていたら甘かった……jsは勉強不足でした。もう少し使えないと話にもついていけない……。

JavaScript @[http://twitter.com/monjudoh:title=monjudoh]さん

RequireJS実践編

  • RequireJSって何?
    • jsの依存性解決をしてくれるライブラリ
    • モジュール内で他のモジュールを再帰的に読み込みを行いたい場合…define関数を使用して読み込んでいく
    • require関数を使うと逆に読み込んでいく
  • RequireJS読み込みの前にrequireなんたらという名前が付いているグローバル変数がある場合、設定ファイルとして使ってくれる
  • モジュールjsのあるディレクトリが深い場合呼び出しがめんどい
    • baseUrlを指定してjsがあるパスを基底のパスにすると楽になる
  • パスの上書きもできる
    • スタブモジュールと置き換える事もできる
  • キャッシュされた古いJavaScriptを読みこまないようにもできる
    • クエリパラメータにデプロイ日時を入れる

jQuery custom event 応用編

  • custom eventって何?
    • ブラウザがサポートしてないイベント[1]を定義する独自のイベント
  • 普通のプログラムのような事もcustom eventでできる
    • 関数呼び出し
    • 引数付き呼び出し
    • インスタンス変数へのアクセス
    • クラス作成のような事
    • mixin
    • callback
    • mixout
    • 同名のn(≧0)個の関数呼び出し

疎結合なUIコンポーネントの作成について

  • 複数画面で使えるAjaxformダイアログのコンポーネントを作りたい
    • 例えば、Googleカレンダーのように日付セルをクリックしたらスケジュール登録ダイアログが出るように
  • 仕様変更
    • セルをクリックしたらアクティブ、アクティブをクリックしたらスケジュール登録ダイアログが出るように
    • ダイアログを開く→custom eventにして「開く」と「ユーザアクションの検知」を別に
  • 仕様変更
    • スケジュール一覧画面を作る、画面に新規追加ボタンもあり、カレンダーのセルをクリックしたときと同じダイアログをだす
    • ユーザアクション検知のモジュールをカレンダー画面とスケジュール表示画面に分ける
    • callback処理も分ける
  • 本体の再利用性も高いし、挿し込むパーツも機能が明確なので再利用性が高くなる

マスタリング非同期読み込み @[http://twitter.com/os0x:title=os0x]さん

最近非同期読み込みが流行っているらしい…

  • Node.jsなどが有名
  • JavaScriptは他のリソースの読み込みをブロックするので非同期で行いたい
  • 新UIになったTwitterでも使われている
    • けど、あまりはやくなってない?
    • 本文が最後に表示されるから(先に読み込もうとしているけど表示に時間がかかっている)

ライブラリ

  • LAB.js
    • ロード処理をjsで実装。Twitterでも使われている
  • ControlJS
    • scriptタグのtypeをtext/javascript→text/cjsにしてあとでcjsとして評価する
  • RequireJS
    • document.createElement(‘script’)してinsertで使える
    • が、依存がネストすると非同期にならない→先に読み込んでおく

gitの歴史改変について @[http://twitter.com/sinsoku_listy:title=sinsoku_listy]さん

分散SCMの利点について

  • 各操作が早い
  • 他リポジトリに影響を与えない

今回のGitコマンド

  • git add -p
    • 部分変更を記録するコミット
  • git rebase -i
    • 歴史を書き換えるコマンド
      • コミットの変更、コミットメッセージの変更などができる

デモ

  • pep8規約違反を起こしたコードを改変する
    • bisect(テストの失敗したコミットを二分探索でさがす)で探して改変
    • rebaseでコミットの修正

まとめ

  • 詳しくは「入門Git」で!
  • 他人が作ったコミット、他人に渡したコミットは改変してはいけない
  • …が、実際はプロジェクトの方針によってまちまち

発表後

ATNDに登録していなかったのですが、無理を言って懇親会に参加させていただきました。懇親会の場で話題にあがった、先のない技術の維持をダラダラ続けているのは守りの姿勢、それならニートでいる方がよっぽど攻めている。自分が本当に突き詰めたいものをもって外に攻め出たほうがいい。という言葉がちょっと考えさせられました。本当にこのままでいいのだろうかという……。とりあえず少しずつ。Gitを使いこなす所から始めよう。

最後に

主催者の@haru860さん、発表者の@monjudohさん、@os0xさん、@sinsoku_listyさん、受付をしてくださった皆さん今回はありがとうございました!

[1] 普通はユーザがクリックするとか、ページが読み込み終わるとイベントが始まるけど、jQueryはtriggerHandlerメソッドで(ユーザに関係なく)始まる

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2012/04/22 [Git] [イベント] Git道場#1に参加しました と、pullとpull --rebase備忘録 #gitdojo
  2. 2011/12/11 [イベント] [java-ja] java-ja忘年会に参加しました2011
  3. 2011/08/01 [Agile] [イベント] BPStudy#47に参加しました
  4. 2011/01/23 [イベント] MacBook Air 11インチ欲しい!
  5. 2011/01/12 [Java] [Wicket] [イベント] Wicket勉強会に参加しました
  6. 2016/11/30 [Sphinx] [Python] [イベント] PyConJP 2016 in TokyoでSphinxハンズオンのTAをしてきた #pyconjp
  7. 2016/01/19 [Sphinx] [イベント] PyLadiesTokyo #8でSphinxハンズオンのTAをしてきた #sphinxjp
  8. 2015/12/01 [Sphinx] [イベント] SphinxCon JP 2015 で雑用してきた #sphinxjp
  9. 2015/11/01 [Sphinx] [イベント] Sphinxワークショップ@関西で事例紹介とハンズオンTAをしてきた #sphinxjp
  10. 2015/10/13 [Sphinx] [Python] [イベント] PyConJP 2015 in TokyoでSphinxハンズオンのTAをしてきた #pyconjp
  11. 2015/09/24 [Ansible] [イベント] Ansible Meetup in Tokyo 2015.09でLTしてきました #ansiblejp
  12. 2014/10/27 [イベント] [Sphinx] SphinxCon JP 2014 で発表してきました #sphinxjp
  13. 2014/08/28 [Sphinx] [Ruby] [イベント] kawasaki.rb #015 でSphinx導入事例の発表をしてきました #kwskrb #sphinxjp
  14. 2014/07/13 [Sphinx] [Ruby] [イベント] kawasaki.rb #013 でSphinx導入事例の発表をしてきました と #011 #012 参加記録 #kwskrb #sphinxjp
  15. 2014/04/01 [Ruby] [Jekyll] [イベント] kawasaki.rb #010 で発表してきました #kwskrb