2018年以降の記事はGitHub Pagesに移行しました

BPStudy#41に参加しました

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

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

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

JavaScript @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処理も分ける
  • 本体の再利用性も高いし、挿し込むパーツも機能が明確なので再利用性が高くなる

マスタリング非同期読み込み @os0xさん

最近非同期読み込みが流行っているらしい…
  • Node.jsなどが有名
  • JavaScriptは他のリソースの読み込みをブロックするので非同期で行いたい
  • 新UIになったTwitterでも使われている
    • けど、あまりはやくなってない?
    • 本文が最後に表示されるから(先に読み込もうとしているけど表示に時間がかかっている)
ライブラリ
  • LAB.js
    • ロード処理をjsで実装。Twitterでも使われている
  • ControlJS
    • scriptタグのtypeをtext/javascript→text/cjsにしてあとでcjsとして評価する
  • RequireJS
    • document.createElement('script')してinsertで使える
    • が、依存がネストすると非同期にならない→先に読み込んでおく

gitの歴史改変について @sinsoku_listyさん

分散SCMの利点について
今回のGitコマンド
  • git add -p
    • 部分変更を記録するコミット
  • git rebase -i
    • 歴史を書き換えるコマンド
      • コミットの変更、コミットメッセージの変更などができる
デモ
  • pep8規約違反を起こしたコードを改変する
    • bisect(テストの失敗したコミットを二分探索でさがす)で探して改変
    • rebaseでコミットの修正
まとめ
  • 詳しくは「入門Git」で!
  • 他人が作ったコミット、他人に渡したコミットは改変してはいけない
  • …が、実際はプロジェクトの方針によってまちまち

発表後

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

最後に

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

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