Archive for the ‘イベント’ Category

Mozilla Vision 2012 Conference Day アウトラインメモ

Mozilla Vision 2012 – Conference Day

Mozilla Vision 2012 Conference Dayに参加してきたので、その時のメモです。(いつも通り正確性は保証されません)

NewImage

Read the rest of this entry »

今まで書いたJavaScript情報の読み方をまとめてみた

もう既に見た人もいるかもしれませんが、オフライン勉強会でJSer.info一周年について発表してきた | JSer.info
今まで書いてた記事のまとめ的な発表をしてきました。

世界のJavaScriptを読もう @ 2012を発表していた時、RSS購読フローの部分がなぜか受け良かったようなので、簡単な補足を書いておきます。

Social flow

自分はRSSリーダを多用しているので、何でもRSSにしてとりあえずRSSリーダーに流れてくるような状況を作っています。
Webサイトを見ていて、Read It Latorなどで後で読むことにしても結局読むのを忘れてしまうことがあるため、Read It Latorに登録したリストがRSSとしてRSSリーダーに流れてくるといった感じです。

Pinboardやはてなブックマークやソーシャルニュースサイト等もRSSで購読していると、同じ記事を扱ったものが何度もRSSに出てきます。
これは今からRSS購読すべきタグと検索結果でLDRの読み方にでも書いていましたが、SBMなどは量が多くなってしまうので、全て目を通そうとすると気疲れします。
そのため、SBMや検索結果等のRSSは高めのレートにして心理的に飛ばしやすい(LDRでいうSキーを押す)状態にしています。

なんで検索結果のRSSは★4にしてるかというと、検索結果RSSで出てくるサイトは★3のサイトと被ったりすることがあるので、
★4で飛ばしても★3で出てくるからまあいいっかと適当な感じで読める安心感が生まれます。

今からRSS購読すべきタグと検索結果 | Web scratch

ここから、発表してたときにウケてた部分ですが、RSSリーダで読んでいるときに少しでも気になった記事は
とりあえずTwitterへ投稿しています。(Post Now browsing to TwitterがLDRから直接投稿できるようにしているのもその辺の関係)
一応軽くは目を通してからTwitterへ投稿していますが、専門的な記事や英語の記事など一度みるだけじゃ理解が出来なかったり、判断が難しい記事も多いと思います。

そういう時にTwitterのフォロワーから反応があると理解しやすかったりします。
またFavやRTがあったものが流れてくるようにRSSを購読しておけば、重要な記事 (少なくてもフォロワーが興味を持った記事)が再度RSSとして流れてくるようになります。

こういう感じで、重要な記事は何度もRSSとして流れるようにして、読み忘れを減らしたり & 心理的に軽い気持ちでフィードを読み飛ばしても大丈夫なように意識しています。
他の人の力も借りて手を抜きつつ、人があまり見ないようなところもチェックするようにして、いろいろな情報を共有できればいいかなと思います。

どういう所などをみているかについてはオフライン勉強会でJSer.info一周年について発表してきた | JSer.infoのスライドの方にもまとめたのでそちらを見てください。

 

    shibuya_sp 勉強会 vol1 アウトラインメモ

    #shibuya_sp 勉強会 vol1 : ATNDに参加してきたので、その時のメモです。

    iOSアプリケーションのUnit Test – 岸川

    テストを習慣化するには

    なぜテストを書かないか

    • テストの効果がわかりにくい
    • iPhoneアプリのテストってどう書けばいいのかワカラナイ
    • デバイス固有のデータを利用していたりする

    ツール/フレームワークを使う

    • 繰り返し実行するのが簡単
    • 自動化できる
    • テスト結果が見えてくるようになる

    無理をしない

    • モデルのテストは書きやすい
    • 論理構造はそう簡単に変わらないはず
    • 繰り返し実行するメリットがあるので(正常系/例外/異常/境界値)をちゃんとテストする

    表示は論理構造が簡単にひっくり返る事があるので、テストを無理に書こうとしない

    テストしやすいコードを書く努力はする

    • テストしやすいコードは、使い易いコードなので良い設計にも繋がる
    • メソッドをきちんと分けてあげる

    単体テストをワークフローに取り入れる

    • OCUnit
    • GHUnit
    OCUnit
    • XCode標準
    • XCodeと統合されてるが、アサーションが貧弱
    • 非同期テストがサポートされてない

    GHUnit

    • XCode非標準
    • アサーションが豊富
    • まともなテストができる(teardown/setup)
    • 非同期テストのサポート(waitを使える)
    • OCUnitのテストケースも実行可能
    • viewのテスト機能が追加された

    Viewのテスト

    GHVerifyView あらかじめ取っておいた画面の画像と照らしあわせてテストしてくれる 画像での比較

    Flashからcocos2dに移植した話 – CAつりポンチーム

    • Flashとcocos2dに移植した

    • 1万7千件のレビュー

    • 平均4.5☆

    • Twitterによる拡散

    • 完全無料広告なし
    • アメーバピグ
    • ストレスフリー
    • App Storeのレビュー誘導

    オフライン対応

    非会員対応

    • ほぼすべての機能を非会員でも遊べる
    • 会員と非会員の差別化
    • タイトル画面の対応のみ
    • ポイントの管理をローカルにおいて、サーバ側からポイント管理を排除

    iPod Touchのユーザーが30% => オフライン対応の成果?

    cocos2dとFlash

    大量の画像を書きだす

    • 手動は日が暮れるので
    • アクションを作って、画像ファイル名=レイヤー名にしてバッチで生成

    texturepacker を知る

    • 一枚の画像に素材を貼り付けて、座標データからファイルを切り出して表示する
    • CSS スプライトみたいな

    AutoSD

    自動でRetinaと通常の解像度を作成できる

    Spriteはフォルダ管理

    Finder上でフォルダ構造そのままにSPriteを管理できて楽 texturepacker上に反映する

    見ていて飽きないガチャを作れという司令

    まずはFlashで動きを作る

    1. 色を選ぶ
    2. ガチャを出すアニメーション

    自作AIRツールで座標の抽出

    swfから座標の抽出をするソフトを作成した

    • 座標系の違いを補正する スクリーン座標 -> デカルト座標
    • Flash上のレイアウトがそのままcocos2dに移植

    cocos2dを利王した最適化と高速化

    • 描画処理の高速化
    • テクスチャロードの非同期化

    iPhoneのOpenGLの傾向と対策

    • OpenGLの描画を呼び出すほどオーバーヘッドが大きなリ重くなる傾向
    • なので、texturepackerを使ってテクスチャを一回でロードしたりして 呼び出し回数を減らした。

    テクスチャロードの非同期化

    • 非同期で先にテクスチャを読み込んで、読み込み待ちを減少させる
    • addImageAsyncを使って非同期ロード

    テクスチャフォーマットの調整

    • RGBA4444に統一してる(32bit -> 16bit)

    モーション制御の最適化

    CCPawnやCCSequenceを処理コストが多いでの、人体とかが苦手だった。 モーションデータを削減して、モーション制御をNEONで並列処理にして最適化

    コンフィグの微調整

    ccConfig.hでCCUSESVBOを無効にするだけで結構変わる

    Time Profiler

    順次上から見て最適化をしていく

    まとめ

    • テクスチャは一枚にまとめてCCSpriteBatchNodeで描画
    • NEONなどSIMDを使って最適化
    • ccConfig.hをみてチューニング

    OCTOBAから見た面白いAndroidアプリ – 丸岡

    Android Market

    アプリ削除率

    • 37%?

    OCTOBA

    • 男性が多い
    • 30-40代が多い

    パーミッションの問題

    Any.Do

    • 機密ログデータの読取
    • このパーミッションを要求するアプリはレビューしない

    いろいろなパーミッション

    • 機密ログデータの読取
    • 連絡先データの読取
    • SMSメッセージの送信
    • アカウントの認証情報を利用
    • 起動中のアプリケーション情報
    • 端末ステータスとIDの取得

    広告SDKでGPSデータを利用してターゲティングを使用したりするものもある。 組み込んだアプリでGPSを使ってなくても、パーミッションが求められる

    レビューの基準

    人気ジャンル

    セキュリティが5月(2011)あたりが入ってる

    • ツール・設定系
    • ゲームエンタメ系

    昔はツール系が多かったが、ゲームエンタメ系が増えてきている

    検索キーワード

    1. 電話帳
    2. 時計
    3. メール

    使ってもらえるアプリの考え方 – fladdict

    ATMアプリを考えてみる

    架空の事例で考える

    リサーチ

    • 既存のATMの機能?
    • 既存のATMの不便?
    • どういう時に使う
    既存のATMの機能
    • 残高確認
    • 入金、引き出し
    • 送金
    • 設定変更

    オンラインバンキングを含めるともっとたくさんあるので、 どの機能をアプリに含めるのかを考える -> 絞り込む、利用の想定

    シナリオ

    • 通販などの振込
    • 通常の送金
    • 支払い忘れへの緊急対応
    • 残高確認

    逆にスマートフォンで保険や税金管理などの操作はしないとのでいらないはず

    90%のユーザーが必要な機能を入れる

    • ヘルプなしでわかるアプリを作る
    • アプリを起動してからそのアプリのタスクを1-2駅程度の間に完了できるようにする

    必要な機能を絞り込んでから、コンセプトを立てる

    コンセプトの定義

    iPhoneアプリは大体4つの形がある

    • ユーティリティ型
    • ナビゲーション型(TableView)
    • タブ型
    • 没入型(全画面)

    それぞれのタイプをプロトタイピングして検証していく。

    ユーティリティ型

    • 最低限だけの機能
    • 残高の確認
    • 送金ができる

    ナビゲーション型

    ユーティリティより機能は増える

    • ニュース
    • 残高
    • 送金
    • 設定

    タブ型

    ナビゲーション型と似た機能を持つが、平行して機能を使える

    没入型

    iPhoneのUIに頼らないので時間がかかる

    • 実際の画面に似せるなど
    • ナビゲーションを出してみたり
    • 現実のメタファ

    今回はナビゲーション型かタブ型

    ナビゲーション型

    • 拡張しやすい
    • 単純

    タブ型

    • 拡張に限界がある
    • 平行して機能を利用できるのが利点

    ナビゲーション型は階層が深いと、作業を切り替えるにコストがかかるので、タブ型の方がやりやすい

    タブ型のメニュー

    よく使うものから左から右へ配置していく

    ニュースを残高確認後に見る人はあまりいない ニュースをATM側としては配信したいので、ニュースを左に持ってきて自動的に見せるようにした。

    設定画面

    • ピンコード
    • アカウント名
    • 銀行アカウントのパスコード

    入力UI

    • Pickerを使って桁ミスなくすなど
    • 送金時はボタンのミスタッチをなくす
    • スライドで送金処理を完了させる <= 難しいUIな気がする…
    • 最初にボタンを詰め込みすぎない

    Edit Qute for PC/Mac

    第七回ありえるえりあ勉強会 アウトラインメモ

    第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜に参加してきたので、その時のメモ。

    「JavaScriptで大規模ゲーム開発」渋川

    ソーシャルゲームの定義
    • ユーザー間で非同期のやり取りが発生する

    ngCore

    • マルチプラットフォーム
      • 同一ソースでAndroidとiOSに対応
      • テスト環境はFlashにも対応
    ゲームの構成
    • ngCore上にゲームロジック/JavaScript
    • サーバ/APach+FCGI上に認証とか結果の書き込みをMobageサーバに
    役割分担
    • ngCoreのクライアント
      • アクションシーン
      • サーバ側で作ったデータの再生
    • ゲームサーバ
      • パラメーター保持、変化
      • アイテム管理
      • ミッションのスロットの目の決定など
      • ずる防止をするためサーバ側でロジックがある
    ngCoreの開発サイクル
    • node.jsで書かれたビルドサーバでビルドを行う。
      • ファイルの結合とか
    コード
    • CJSライクなモジュール
    • クラスを作るsubclass関数
    • ゲームはmain関数から始まる
    • Core.UpdateEmitter でゲームループを回す
    ゲームの基本構成
    • シンプルなクラス群
      • Sceneクラスを継承してシームを作っていく
      • Sceneを遷移してゲームの遷移が行われる
    • サーバ側からjsonのジョブスタックを受け取る
      • ミッション結果なども配列で返ってくる
      • 知らないジョブが来たら無視が基本方針
      • クライアントは順番に再生していくだけ
      • 新しいミッションも簡単に追加できる
    • サーバエラーがおきたらホーム画面に強制的に戻る
    DnLig/ngGo
    • DnLib
      • ゲーム開発の共通ライブラリ
    • ngGo
    開発拠点
    • サンフランシスコ
    • 日本
    • パキスタン

    • SKypeチャットが主なインフラ

    • git
      • git flow
    • ドキュメントSphinx
    ngGo/ngBuilder
    • – データ駆動で行えるように
    • - パラメーターチューニングのしやすさ
    デバッグとテスト
    • デバッグメニュー
      • サーバにデバッグ用画面がある
    • Jasmineを使ってる
    今後のngCore
    • 3D対応、HTML5対応

    まとめ

    JavaScriptベースで

    オフラインWebアプリケーションの作り方 (白石)

    Google Gearsを使ってオフラインアプリケーションを作ったことがある。

    オフラインWebアプリケーション

    Google Gears
    • Google Gears終了 –> HTML5へ以降を推奨
      • HTML5を中心にするようになった

    オフラインでも読めるアプリの作り方

    • それほど実装は難しくない
    • アプリケーションキャッシュを利用すればいい
    アプリケーションキャッシュとは
    • 静的なリソースをキャッシュすることができる機能
    • ローカルキャッシュの利点
    • IE以外のブラウザでは実装されてる
    キャッシュマニフェスト
    • リソースのリストを作成する
    • Titanium Mobileのリファレンスはローカルキャッシュされてる
    アプリケーションキャッシュのJavaScript API
    • window.applicationCacheにJavaScriptから操作できるアプリケーションキャッシュAPIがある。
    アプリケーションキャッシュを利用する上での注意点
    • キャッシュマニフェストを更新しないとリロードで反映しない
    • キャッシュ容量が限られている
      • モバイルとかだと10MBぐらい

    オフラインでも書けるアプリの作り方

    • 割りと面倒なもの
    • デスクトップアプリとやりたい事はあんまり変わらない
    オフラインWebアプリを作るポイント
    • 基本はリッチクライアント+同期機能
    利用できるローカルストレージ
    • Web Storage
    • Web SQL Database
    • Indexed Database API
    • File API
      • ドメインごとに仮想的な空間
      • セキュリティ的なものがあるため
    双方向同期

    かなり難しく面倒くさい – フェールセーフ – 更新の衝突 – 同期のタイミング – ネットワーク状態、データの状態管理 – ローカルDBのスキーマ管理/サーバのスキーマと2つできてしまう – ローカルDBのクオータ(5MBぐらい)

    - 容量の限界がきたときにどうするか
    

    まとめ

    • オフラインアプリケーションといっても読む/書くの2つがある
    • 書く/同期的なアプリケーションはかなり面倒臭い
      • 割り切ったほうがいい

    スケールするUIについて – @monjudoh

    Objective-Cで非同期処理のチェーンライブラリとか

    要素数

    ループの中でbind/unbindしてたので大量に追加されたときに重たかったのでliveメソッドに変更 bindはここの要素に付けるから、要素が多いと死ぬ。delegateとかliveはその枠の方にイベント一個張るだけだから軽くてすむ。

    D&D
    • ユーザが触れる範囲だけにイベントを付ける
    • D&Dは複数のイベントから成り立つので複雑(down->move-up)
    要素の生成
    • UITableView
      • 表示範囲+ぐらいのみを描画してる
      • 再利用してる

    JavaScriptのテスト事情 – @os0x

    • JavaScriptのテスト
      • まだまだ未成熟
    • 二種類
      • JavaScriptのテスト
        • JavaScriptだけなので比較的わかりやすい
      • JavaScriptを含めたテスト
        • UIとかも含むインテグレーションテスト
    インテグレーションテスト
    • インテグレーションテストは書くのが大変
    • 動いてあることが保証できるので重要
      • 後から追加修正とかも
    インテグレーションテストの定番 – Selenium
    • インテグレーションテストは遅い
    テスト実行環境
    • カピバラさん + Webkit
    QUnit,Jasmine
    • Jasmineの方がアプリケーションテストは向いてる
    jasmine-headless-webkit
    • jasmine のspecをCUI環境で実行できる

    Titanium Mobile – Masui Yuichiro

    • ココログ
    • liblis
    • AKB
    • サイボウズLiveの
    • MobSnap

    Titanium Mobile

    • JavaScriptだけでアプリを作成できる
    • Titanium Mobile のモジュール売買できる
      • mobile market place

    モバイルのUX

    • それぞれのプラットフォームに合わせた形に変換する
    • それぞれに合わせたUIはUXに
    • タブバーの位置がAndroid/iPhoneで逆になったり

    飯食う

    • 追加モジュールとサポートのみが有料
    • 認定トレーニング

      感想

      • ちょっと落ち着きがなかった気がするの
      • あまり掘り下げた感じにはならなかったのは少しもったいない気がした。

      メモ環境

       

        Mozilla 勉強会@東京 6thのアウトラインメモ

        2011年10月1日に行われたMozilla 勉強会@東京 6thのメモ

        イベントのページ: Mozilla 勉強会@東京 6th
        Twitterのまとめ: Mozilla 勉強会@東京 6th – Togetter

        • 14:30 – 15:00: 開場、発表者準備
        • 15:00 – 15:10: Opening

        自己紹介の流れ。

        ■15:10 – 15:50: Firefox for Developers – 開発者ツール&セキュリティ編
        Firefox開発者ツール – Web Console
        • コマンドの補完

        Inspector

        • DOM Inspectorみたいなもの
        • 要素を調査するツール
        • Style Inspector(開発中)
        CSS Doctor
        • CSSの間違いとか
        ScrachPad
        • エディタ
        • 選択行のコードだけを実行できたりする。
        GCLI
        • ubiquityみたいな感じの
        • CUIとGUI
        Source Map
        • CoffeeScriptのような変換コードと元コードをマッピングしたたものを作る
        • 変換前の言語
        Tilt
        • DOMマップを3D化するアドオン
        about:Firefox
        セキュリティとプライバシーの話
        Same Origin Policy
        Content Security Policy
        • 次世代のセキュリティポリシー
          • XSSの攻撃防止
        • コンテンツ種別で読み込み制御
          • 画像やCSSやJSなども制御できるようにする
        • Webkitではほぼ開発されてる
        • デフォルトセキュリティポリシーがいろいろ強化される
        • CSPの使い方
          • X-Content-Security-PolicyのHTTPレスポンスヘッダを送信
          • HTMLのメタタグは書き換えできたりするものだからヘッダーで
          • Apache でCSPの設定
        • CSP対応に移行する
          • JS,CSSは外部ファイルに
          • evalを使わない
          • ポリシー違反レポートでどこがおかしいのかも確認できる
            • ヘッダーでレポートを報告するURLを指定してログを残せる
          • CSPブックマークレットもある

        HTTP Strict Transport Security

        • HTTPSでの接続を要求するヘッダ
        X-Frame-Options
        • クリックジャッキングとか
        Cross-Origin Resource Sharing
        • クロスドメインでの読み込み許可
        • 他のドメインから読み込まれてもいい場合の設定
        • XHR2とか
        ユーザ追跡拒否ヘッダ
        • Do-Not-Trackヘッダ
          • ブラウザ側でサイトに通知する
          • IE,Safariも対応
          • Chromeだけ非対応
        • 受け取ったらユーザー追跡をしない
        ■15:50 – 16:30: Pano って拡張機能 teramako
        Panorama
        • Firefox4から導入された
        • タブグループを管理するビュー
          • アクティブなタブグループの切り替え
        タブの種類
        • ピン止めタブ(AppTab)
        • グループの属するタブ
        • グループに属さないタブ(Firefox7で廃止)
        Pano できること
        • グループの作成/削除
        • グループ名の変更
        • D&D操作
        実装の仕組み
        • panoramade上で起こったイベントを拾ってビューを作ってる
          • tabopenなど
          • 起こらないイベントは上書きして起こす
        • 基本的にはビュー
        頑張った所
        • アイコンはSVG
          • いろいろな場所で使われてる
          • 使いまわしたい -> SVGで作る
        • SVG
          • ベクターなので拡大縮小できる
          • ファイルサイズも小さい
        • about:addonsでアイコンが表示されてない
          • アイコンのサイズが指定されてなかった
          • SVG内にサイズの指定した
        • タブ、Panoramaから発生するDOM Eventを拾う
          • Panoramaから発生しないEvent
            • グループが作成された
            • グループから削除された
            • グループから移動した
          • 取れないEventは無理やり発行させる
            • Gropuが作成されたときに起きるイベントを上書きする
        • GroupItems.registerの上書き
          • 元関数を実行
          • DOM Eventを発行
          • コールバックシステムに関数を登録してDOM Eventを発行させる
        起動速度の改良
        • 起動時のスクリプトは最小限
          • 必要なときにロードさせる
          • mozUSSubScriptLoaderの使用
        • 必要なときに取得
          • getterの使用
        • 速い読み込み
          • Firefox8 から mozUSSubScriptLoader もキャッシュされる
        実装方法
        • 最初の読み込みは必要最小限
          • 40行ほど
          • 最初はロードするものを書いておいて、ロードしたときにそれを上書きする
        • getterの使用
          • XPCOMUtil.jsmを使用してgetterを使いやすくする
          • defineLazyGetter
        コンテンツの遅延読み込み
        • bartab
          • 起動したときはタブはできるが、ロードはされない
          • タブが選択されたときに初めてロードされる
        • nsISessionStoreが鍵
          • 短いコードで実現する
        非アクティブなグループ内に開くには
        • Panoramaとバッテングして上手く行かなった
        • 上手い解決方法が見つからない
          • setTimeoutでぐるぐるー
        パネルでD&Dするために
        • パネルをドラッグする前に閉じないようにする
          • noAutohide = true
        • メニューボタンを押したときは閉じない様にする
        ■16:40 – 17:20: restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク – Piro
        Add-on SDKの目的
        • 誰でも開発できるようにする
        • 高機能なアドオンの開発は目的ではなかった
        • 今までのアドオン開発
          • 自由すぎた
          • 敷居高い
          • 何でもできた
        • SDKを使えばある程度制限された状態で簡単作れるようになる
        Add-on SDKはGreasemonkeyスクリプトと同じような立ち位置
        restartlessの目的
        • 再起動不要なアドオンを今までの開発と同じ方式で作れるように
        • Mozilla特有の事情を必要なのも従来方式
        • 対象も従来の開発者向け
        restartlessの使い方
        • main.jsの内容
          • startup()で読み込まれる
          • 専用の名前空間で実行される
          • shutdown()を定義
        • ユーティリティ
          • location.href
          • load関数 = Cu.importと互換
          • require関数
          • existsでファイルの有無を調べる
          • resolve 相対パスの解決
          • EXPORTED_SYMBOLS
          • doAndWait
            • 非同期処理を同期的に扱うときに使用
          • jstimer
          • pref
          • locale
            • 国際化
          • config
          • WindowManager
            • DOMWindowにアクセスする
            • ウィンドウのopenを監視
          • KeyboardShortcut
            • ショートカットの定義
          • jsDefferred
        restartlessの利用例
        • ALT
        • back to owner tab
        • Fox Splitter

        restartlessのコードリーディング

        • index.rdf
          • bootstrap=”true”で再起動不要と認識される
        • bootstrap.js
          • モジュールのロードとか
        • loader.js
          • ユーティリティとかが定義されている
          • doAndWait
            • スレッドをたててメインループを回す実装
        • main.js
          • 各アドオンのコード
        • module
          • 各ライブラリが入ってるので、削除すれば消える
        ■17:20 – 18:00: Lightning Talk
        • アドオン SDK を利用した初めてのアドオン開発– by knagato
          • 初めてアドオン開発する人が対象
          • SDKを使ったアドオン開発を特徴
            • HTMLやJavaScriptなどが中心で、XULやXPCOMなどMozilla特有の機能を使わなくても開発できる
          • 開発環境の種類
            • Add-on BuilderをWeb上での開発
              • 再起動不要なのでその場で試せる
            • Addon SDKを使った開発
              • コマンドラインベース
          • Add-on SDKのチュートリアル
        • Thunderbirdアドオンによるワークフロー開発について– by Nakashima
          • 提案するツール
            • 自分自身でのプロセス改善が可能
            • やり取りの簡略化ができる
          • http://www.p2pwf.com/ に仕様の詳細
        • Forking Secure Login – by saneyuki_s
          • Secure Loginアドオンのフォークの話
            • 現在はメンテナンスアップデートのみになってる
            • 全面改装してる
          • 一部機能の省略
          • レガシーコードの除去
          • doorhanger対応
            • Firefoxに入ってるSSLのポップアップするやつ
        • jQueryで破棄されたrequestAnimationFrameとJSでのアニメーション実装で注意すること – by kyo_ago
          • requestAnimationFrame
            • setIntervalの問題点としてアニメーション向けではない
          • jQuery 1.6から削除された
            • setIntervalとrequestAnimationFrameが衝突してキューがたまる
            • タブがバックグランドにあるときの挙動
        • ES.next WeakMap– by mooz (@stillpedant)
          • WeakMap = 連想配列
          • Firefox6から利用可能
          • {}やObject()と比較して
            • keyにオブジェクトが指定可能
              • ハッシュはkeyに文字列しか指定できない(toStringされてる)
              • WeakMapはkeyにオブジェクトが指定可能
                • オブエジェクトしか指定できない
                • プリミティブ値はエラー
              • オブジェクトの外部拡張
                • DOMノードに独自プロパティは危険
                • ES5ではオブジェクトの拡張がfreezeできる
                • オブジェクト自体は拡張しないで、外部に付加情報を持つ
                • WeakMapを利用する
                  • キーとして外部情報をもたせる
            • keyに指定されたオブジェクトを弱く参照
              • CGにたいして
        • Firefox4以降のE4X– by teramako
          • ワイルドカード
            • *が指定子に使える
          • 属性アクセス
            • @が使える
          • Firefox3.6までは上記のものがE4X以外でも使えた
            • Firefox4以降は禁止された
            • ざんねんでしたね

        第3回ブラウザー勉強会 アウトラインメモ

        2011年8月20日開催された第3回ブラウザー勉強会に参加してきたので、その時のメモです。

        TwittterのログはTogetter – 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」にまとまっています。

        Read the rest of this entry »

        サイボウズラボユース中間結果発表会アウトラインメモ

        サイボウズ・ラボユース 「中間成果報告会」に参加してきたのでそのときのメモです。
        かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。
        (特に手元でスライドがあるわけじゃないので、ちゃんとメモれてすらないです…)

        環境記録
        メモソフトウェア: bodhi/MarkdownEditor – GitHub

        サイボウズラボユース中間結果発表会

        NDAは結ばずに、成果をオープンすることを条件に支援を行う。

        「ロボット制作を支援するログ解析プログラムの開発」 by @sn_monochr

        マイコンカー

        赤外線センサーを使ってリアルタイムで制御するカー。 C言語で開発を行う。

        マイコンカーの走行ログ

        走行ログ

        • 制御プログラムの動作状態
        • 赤外線などのセンサー状態

        メモリが限られているので、データはシフト演算などを使って一つにまとめて保存、送信を行う。 これらのデータを可視化していくため、解析ソフトウェアを開発する。(Windows)

        走行ログの可視化

        • データに基づいたマシン調整が可能になる
        • 1つのソフトウェアに統合

        夏の合宿

        目標設定をして合宿を行った

        • 走行ログの可視化

        ラインの中でモードの変更をライン色の変更してる。

        • 無線通信でログのやり取りをするのが今後目標

        走るコースに、車線変更や直角カーブなどのマークが書かれていて、それを読み取ってモードを変えることで動きを変える。


        「世界最速の正規表現JITエンジンの実装」by @sinya8282

        • 正規表現エンジンの作成
        • 正規表現の歴史は古い 1960~
          • 実装はたくさんある
          • いろいろやられている

        「正規表現エンジンの開発」には意義があるのですか? -> 車輪は車輪でも「最速の車輪」を開発する

        正規表現エンジンRegen(れーげん)の開発

        Regen

        動的コード生成

        • Xbyak でJIT regex
        • 正規表現に合わせて、プログラムがプログラムを生成する
        • 正規表現コンパイルに最適化レベル導入(O0 – O4)
          • 最適化しにくいパターンもある

        マッチング並列化

        • 並列化のための特殊なモデルを実装

        ベンチマーク

        Google RE2との比較。

        JITしても3-5倍の高速化 -> 今はメニーコアの時代 -> 正規表現の並列化

        • 6コアでガクって落ちるのはアーキテクチャの問題

        まとめ

        高速化の二台手法は実装した、成果もでた

        • JIT
        • 並列化

        これからの課題

        • 実システムへの応用、ツールの作成
        • 正規表現エンジンじゃないと処理できない問題
          • なければ作る
        • ライブラリとして今夏中に整えたい

        質問

        • 正規表現 <-> インデクシング
        • フィルターなどの分野では、流れるデータに対して正規表現の活用などもある。
        • 禁止ワードのORつなぎみたいなものは正規表現より向いてる方法があるとか

        「JavaScriptによる型推論器の実装と可視化」by takuto_h

        型推論

        • 型を書かなくて楽
        • 型があるんで安全

        引数の型

        function foo(bar){ return bar + 1; }

        どのような演算子を呼んでいるかを見て、型を推論する

        型推論は方程式

        • 値が広志位なら型が等しい
        • 方の上での方程式を集めて解くのが型推論

        コンピューターでは解くのか

        a = b, b = c, c = d, d= int

        <a>, <b>, <c>, <d>というオブジェクトとintという物体を用意する。

        • a = b で <a : <b>>, <b>, <c>, <d>
        • b = c で ….

        どんどん置き換えて行って型推論を行う。

        Ibisという型推論機

        IbisはJavaScriptで書かれている。

        • まずはパースして構文木にする
        • ここからステップごとに型推論の計算(推論)を表示
        • 最終的に、関数の入力と出力の型推論結果が表示される

        型推論はパズル

        質問

        型推論にとってオブジェクトは鬼門

        Q . 循環参照の時はどうするの?

        2つの考え方

        • 禁止する方針
        • 再帰的なものも許す方針

        OCamlは不健全な循環参照は禁止されている。 再帰的なものはチェックを付けて型推論を続ける。

        演算子のオーバーロードがあると型推論はむずい


        「世界で一番仕様に忠実なJavaScript処理系の作成」 by Constellation

        iv/lv5

        iv / lv5 VM engine – 枕を欹てて聴く

        • ESのパーサーiv
        • エンジンlv5

        sputniktestというECMA262への正確性を測るテスト

        • 以前はASTはインタープリンタ
        • VMに変えたのでECMAエンジンといえますね。
        • インタープリタと共存している(オプションで切り替えが可能)

        JITをモジュールとして取り込めるのではないかと。

        高速化

        いろいろ。11倍近く高速

        まだJITはしていない。

        今後

        • RegisterVmについての検討
        • GCの自作

        az: ECMAScript Analyzer

        JavaScriptの補完候補を出す

        型の推論 Doctorjs

        • 抽象的なAbstractインタプリターを使って型情報を集めている
        • これを元にC++にした

        JavaScriptは後ろに関数宣言置けるし、補完するときにシンタックスは壊れてるからどうするの?

        方針: シンタックスが不正なASTに対して解析を行う
        • シンタックスが不正なスクリプトでも常にASTを得る

        target.

        こういう時はに解析を行うと、式がエラーになるので、ここでステートメントにマークを付ける。

        改行があったらそのへんは大丈夫なんじゃないかと、してぶっちぎる。 JavaScriptにはセミコロン自動挿入があるので、改行を判定に使う必要性が出てくる。

        問題点
        • Abstractインタープリタは状態が有限でないと終わらない
        • なので状態を有限して、行う
        • jQueryとのfor inとかむず

        WebStromの場合

        • JSDocで型情報を読んでこれを基準に解析
        • 元に情報を用意して何とかする方向

        おわり

        仕様忠実は第一


        「現役高校生の考えるクラウドOSの設計と実装」by liva_s

        クラスドOSって何だろう?

        Googleの場合

        • ブラウザ上でWebアプリを走らせている
        • 確かにクラウドを利用している

        僕の考えるクラウド化

        カーネルのクラウド化
        • カーネルがやるべきことをクラウドサーバー上で一括処理するのはどうだろか?
        • サーバー側に処理を置くことで、クライアント側の負荷が減る

        カーネルを分割して、クラウド上でカーネルが動いてるいうという状態

        • 当然ローカルでやるべきことも残る(ハードウェア制御)
        • ローカルとくらうどの線引きが大事になる

        どの境界線はどう測るべきものかがわからない(ベンチマークで?)

        マイクロカーネル開発

        カーネルには最小限なものにして、Serverというアプリケーションにわけてやるもの。 この時のServerをクラウドに乗っければ、クラウドOSになる。

        => マイクロカーネルの開発がいいのではないかと

        Serverを単位にして、ローカルとクラウドでベンチマークを取れば、境界線がわかりやくなる。

        モジュール開発とマイクロカーネル

        モジュールはプロセス管理を作る前に、モジュールを開発できる。 (後で動かせばいい)

        まとめ

        クラウドOSはWebアプリベースのOSではない

        Q. カーネルでどの辺がボトルネックになってるのか?

        A. モジュール化していけばベンチは測りやすいから、これからは。

        カーネルのモジュール化はダイナミックに構成を変更できるということが結構面白い事になる

        Q.マルチキャストの逆みたいな話。同じような処理をしてるコンピューターはいっぱいあるから、そのへんの処理を効率ができるのではないかと

        Shibuya Perl Mongersテクニカルトーク#16 アウトラインメモ

        Shibuya Perl Mongersテクニカルトーク#16 : ATNDに参加したので、メモっていた内容です。(正確性は保証されません)

        夏の正規表現祭り

        • 18:45 – 開会宣言(会場からの諸注意)

        18:50 – Dan the (Irr|R)egular Expressionist – @dankogai

        • メールアドレスの検証
          • 狭義のメールアドレスは正規表現でマッチできる事になっている
        • IPv4アドレスの検証
        • use Regexp::Commonにこういうよくある感じのが簡単に使えるようになっている。
        • コストが高い正規表現
          • 手動でやるのもコストが高い(人的に)
          • use Regexp::Assemnle というものがある
            • マッチした正規表現を返してくれる -> Perl5.10のやつはここまではできない
          • 実はPerl5.10以降はTRIE Optimizationはしてくれる
        • s//42/sexsexsex…
          • eだけは重ねると意味がある e 修飾子
        • 正規表現はPerlに通じる
          • JavaScriptの正規表現は弱い

        19:10 – スペシャルゲスト「正規表現メモ」 – 木村浩一

        • マイナーな正規表現演算子
          • [[:<:]] と [[:>:]]
            • tclの正規表現
          • [= =]
            • [=e=] はeにアクセントキーがついたものにもマッチする
            • e, é, ë
          • [. .]
            • アルファベットで複数文字が1文字と見なせるための正規表現
            • [.hoge.] <- 一文字と見なしてくれる
          • JPerl 5.6
            • Javaで書かれてます!
            • 5.6で正規表現に戻り読みというのが入った
              • 固定長の問題
          • POSIXの正規表現の分類
            • basic
            • extended
            • Perl拡張
          • 文字クラスとlocaleの悩ましい話
            • []の中で-範囲指定を使って書くときの問題
            • [a-Z] とか言語によって違うことが

        19:40 – Hello, re::engine! – @__gfx__

        • Perl5でPerlのコアと正規表現エンジンを独立させた
          • コードを修正しなくても正規表現エンジンを変えられる
        • いろいろな正規表現エンジン

        19:55 – 正規表現の限界 – @sinya8282

        • 正規表現で何でも表したい
        • 正規表現の演算
          • 基本 : 連接、選択、閉包
          • 糖衣構文 : .^$[]{}()?+
        • マッチしない正規表現 : 否定表現
        • 正規表現の否定 = 正規表現からDFAを作る事
          • DFAの受理状態と被受理状態
          • DFAになれば否定は簡単
        • 任意の文字列を対象にした否定ツール
        • 正規表現で表現できないもの = 自由文法
          • 括弧の対応、四則演算
        • Perlなら再帰のRがある
        • 四則演算と深さを指定したもの
        • 四則演算と長さを指定したもの
          • それぞれできる

        Lightning Talks

        • 20:30 – 僕の考えた世界最強の正規表現エンジン(速けりゃイイじゃん?) – @sinya8282
        • 20:35 – Plaggerで覚えたPerlの正規表現 – @yusukebe
          • 正規表現を覚えた道のり
          • Filter::EntryFullText を正規表現で
            • フェッチして正規表現でbodyを取る
          • エロYAML群
          • 正規表現の最初はPlaggerで
          • 既存プロダクトをいじって学ぶ
        • 20:40 – Regexp::Assembleで正規表現を作るとか – @yappo
          • 住所のマッチを正規表現
            • 郵便局のデータを元にした
          • Regexp::Trie
          • Regexp::Assemble <- こっちがオススメ
        • 20:45 – 再帰的正規表現 – @TAKESAKO
          • (?R) (?0) (?1)
          • JSONとXSS
          • JSON valueの定義
            • JSONのバリデート
          • 正規表現でJSONを表現
          • (?R)
            • JSONのバリデーションに使える
        • 20:50 – 僕と契約して、自己言及コードになってよ! – @sugyan
          • "Quine ruBy"
          • Perl版、JavaScript版を作成
          • Quine(クワイン)
            • 自身のソースコードを出力
        • 20:55 – 色々なものを正規に表現してみよう(仮) – @nipotan
          • 電話番号の正規表現
            • 総務省発表データから作った Number::Phone::JPというものがある
          • 郵便番号の正規表現
            • よくある感じのは無駄なマッチが多い
            • 無駄なものを省いたNumber::ZipCode::JP
            • DBに若干勝つ速度

        感想

        Perlはほとんど触った事なかったけど参加した。そういえば、数少ないPerl経験も正規表現書くだけだったなー
        ↑正規↓表現は奥が深い…
        就職活動してから参加したのでスーツのままでした。。

        東京Node学園 1時限目のアウトラインメモ

        東京Node学園 1時限目

        ~サーバサイドJavaScriptの幕開け~

        http://atnd.org/events/13529

        Togetter - #tng1のまとめ

        http://togetter.com/li/115851

         

        タイムテーブル

        時間

        題目

        発表者

        Ust

        19:00-19:25

        開場

         

         

        19:25-19:30

        ご挨拶 / 5分でわかるNode.js

        @meso

        #1 04:42AM

        19:30-20:00

        ECMAScript5時代のJavaScript再入門

        @masuidrive

        20:10-20:40

        『非同期プログラミングの改善』のエッセンス

        @koichik

        21:50-21:20

        Nodeにおけるテスト手法

        @Jxck_

        #2 05:49AM

        21:30-21:50

        LT大会

         

         

         

        Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る

        @hakobera

         

        「node.jsによるマルチプレイヤーネットワークゲームの可能性」

        @ndruger

        -22:00

        完全撤収

         

         

         

        ご挨拶

        http://tng1.mesolabs.com/

        Node.jsについては著者のブログを読む

        Node.jsの目的はスケーラブルなネットワークプログラムを作成する

        既存のI/Oライブラリがないため、位置からブロックしないライブラリを作成することができる。

         

        ECMAScript5時代のJavaScript再入門

        増えた機能

        JSONサポート

        配列のイテレーター

        Getter, setter

        Strict mode

        5thは誰のためのもの

        独自仕様の整理してAjaxなどから大規模なものも増えてきた。

        多人数の開発やコードのりユーズのための整理

        非同期処理

        JavaScriptは非同期処理を書きやすいけどネストが深くなる。

        JSDeferredライブラリで縦に非同期処理がかけるのとエラー処理を最後にまとめて書くことができる。

        Property Descriptor

        Setter/Getter

        ObjectFreeze/Sealでアクセスレベルの指定

        Object.create(),cloneなど

        Objectの拡張はライブラリでも似たようなことが可能だが、ESでの仕様としてあることで共通知識として利用できるため可読性などが向上する。

        PhotoShare

        サーバー側はRuby

        HTTP経由でアプリテストすると時間がかかる。

         

        ES5によって独自から共通へ

         

        『非同期プログラミングの改善』のエッセンス

        http://www.slideshare.net/koichik/node1

        Node.jsの非同期スタイル

        イベントリスナ・スタイル

        onメソッドでイベント

        コールバック・スタイル

        APIの最後にコールバック関数を渡す

        (プロミス)

        今はない

        Deferredみたいなメソッドチェーンもできた

         

        コールバックスタイルの問題

        無名関数を使うとネストが深くなってしまう

        関数名をつけて使うとgotoもどき

        try..catchがうまくいかない

        改善するには

        コールバックと無名関数を分離する

        コールバックの役割は「次」の無名関数を読み出す

        その無名関数は「アクター」と呼ばれる

        アクターとコールバックを結びつける

        フロー制御モジュールライブラリを使う

        複数のアクターを受け取ってって、アクターにコールバック(next)を提供する。

        フロー制御を導入すると

        ネストが深くならない

        可読性が向上する

        エラー時のルーティング

        アクターごとのエラー処理をしたくない

        エラーが起きたら途中のアクターを飛ばす

         

        Nodeにおけるテスト手法

        Nodeにおけるテストの考え方

        Assertion

        require(“assert”);

        Testing フレームワーク

         

        require(“should”);

        obj.should.test(“”)

        Objectを拡張して、列挙されないようにしてる

        require(“expresso”);

        赤いシャツの人が作った

        jscoverageの出力

        tearDownとかない

        require(“nodeunit”)

        Unit系のモジュール

        qunitみたいな感じ

        ブラウザでも動作する

        exportの代わりにthisを使うことで、どちらでも動作するコードがかける

        sandbox機能

        CI的な機能もあるよ

        クライアントとサーバサイドどちらも同じようにかけるのは大きな利点になる

        require(“Vows”);

        非同期に適してる作り

         

        require(“tobi”)

        ブラウザ的なものをシミュレートしてテスト(envjsみたいな)

         

         

        LT大会

        Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る @hakobera

        http://d.hatena.ne.jp/scalar/20110324/1300983209

        kinnect hackatonではXBOX360所有者がで2/20

        kinect+node.js+Socket.IO

        Kinect -TCP/IP - NodeJS – Socket API – ブラウザ

         

        Kinect.jsの作成

        C++実装 -> Javaラッパー -> Rhino -> JavaScript

        JavaScriptkinectで動くものが帰る

        DSJ(デバイスサイドJavaScript)

        現在の欠点

        遅い

        使ってるラッパーの制限

        node.jsではない

         

        node.jsによるマルチプレイヤーネットワークゲームの可能性 @ndruger

        http://www.slideshare.net/ndruger/nodejs-7375453

        リアルタイム→Node.jsなら簡単

        サーバークライアントで693行程度で簡単にかける

        敷居が高かったものが手軽に作成できる時代

         

         

        他の参加者のまとめ

        東京Node学園 1時限目 メモ – すぎゃーんメモ

        2011-03-25 – のりーごのアミーゴ日記

        東京Node学園 1時限目にいってきた – Web::Service::Blog->new( user => ’hide_o_55’ )

        東京Node学園1限目行ってきましたメモ – y-kawazの日記

        詳細に書かれているので参考になる

         

        感想

        会場(リクルートアネックス1ビル B1F)も伴ってか何かゆったり広々な感じであんまりガツガツとした雰囲気がなかった。角度、距離(文字サイズなども)的にスライドを見るのがつらい部分もあった。

        『非同期プログラミングの改善』のエッセンスLTが面白かった。


        タイムテーブル

        時間


        題目


        発表者


        Ust

        19:00-19:25


        開場







        19:25-19:30


        ご挨拶 / 5分でわかるNode.js


        @meso


        #1 04:42AM

        19:30-20:00


        ECMAScript5時代のJavaScript再入門


        @masuidrive




        20:10-20:40


        『非同期プログラミングの改善』のエッセンス


        @koichik




        21:50-21:20


        Nodeにおけるテスト手法


        @Jxck_


        #2 05:49AM

        21:30-21:50


        LT大会










        Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る


        @hakobera







        「node.jsによるマルチプレイヤーネットワークゲームの可能性」


        @ndruger




        -22:00


        完全撤収





        BPStudy#41のアウトラインメモ

        BPStudy#41に参加してきたのでメモってた内容。
        TwitterはTogetter – 「BPStudy#41 まとめ」にまとまっています。

        ^文殊堂

        第一部 – RequireJSeventUIコンポーネント

        BPStudy#41 RequireJSとeventとUIコンポーネント – 文殊堂

        RequireJS実践編

        jQuery カスタムイベント応用編

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

         

        RequireJS実践編

        RequireJSとは何か?

        AMDのブラウザ向けの実装

        RequireJS moduleについて

        defineでモジュールを定義する。

        requiremain関数みたいなもの。

        define – 第一引数に依存してるモジュール、第二引数に中身
        (第一引数に関数オブジェクトを渡すと関数の返値になってしまう)

        moduleの用途

        関数を返すmoduleを定義すれば、関数として使えるmoduleが作れる。

        副作用
        何も返さないmoduleも有効利用できる

        jQueryextendしてるmoduleを作れば、requireしたときにその拡張してるという保証が存在するため有用になる。

        RequireJS本体の前にrequireというグローバル変数があると、RequireJSの設定として認識される

        baseurl

        module名はpathから拡張子をのぞいたものだけど、pathの基底を変更できる

        paths

        pathを探す場所をkey-valueで決められる

        urlArgs

        読み込むjsファイルに指定したパラメーターをつけることができる。(キャッシュ対策)

        deps

        最初から読み込んでおきたいファイルを決めておける

        text plugin

        文字列として取得できる
        テンプレート的な利用

         

        jQuery カスタムイベント応用編

        カスタムイベントはブラウザ定義ではなく独自定義のイベント

        jQuerytrigger,triggerHandlerなどで、イベントの発火ができる(dispatch event)

        カスタムイベントは豊かな表現が行える

        jQuerybindでイベント名とイベントハンドラをくっつける

        trigerの第二引数に配列を渡すと展開されて渡した状態でイベントハンドラを実行する

        data(“属性” , ““)をつけられる

        イベントハンドラの$(this)==evt.target

        カスタムイベントでClassを定義する

        liveを利用する。
        liveは要素ではなくて、CSSセレクタに紐づけることができる。

        カスタムイベントでmixin

        liveを使ってるので、classを追加するとメソッドを生える

        カスタムイベントでcallback

        liveを登録して、callbackcallする代わりにtirgerでイベントを発火させる。

        カスタムイベントでmixout

        classを追加することでmixinになるため、classを除去すればmixoutできる。

        カスタムイベントで同名の関数を呼び出す

        存在しない関数も呼んで大丈夫

        好きなだけ定義できる

         

        第二部

        マスタリング非同期読み込み – os0x

        マスタリング非同期読み込み BPStudy#41

        Twitterでも非同期処理やってるけど、本文が表示されるのが最後なので遅い感じがする。

        LAB.js

        部分的な導入が難しい。
        全体を書き換える必要がある。

        ControllJS

        <script type=”text/cjs”></script>としてtypeを変えて読み込む。

        Controll側で評価する

        RequireJS

        依存がネストすると非同期にできない。

        依存関係が複雑だと、読み込み待ちが発生する。

        解決方法として、テキストとして読み込んでおいて評価する。とか

        whatwgのwikiにいろいろな手法が乗っている。

         

        第三部

        gitの歴史改変について神速

        BPStudy#41で発表しました #bpstudy – アジャイルSEを目指すブログ

        分散SCMの基本的なこと

        ネットワーク環境がなくても作業できる

        誰かが壊しても問題ない

        歴史改変でできること

        不要な変更のコミット修正

        コミットメッセージの修正

        作業途中のコミット

        適当なコミットを行える

        git add -p

        部分変更を記録するコマンド

        対話式で部分コミットを行える

        git rebase -I

        コミットの変更、結合、削除とか

        歴史改変の実践編

        bisect テストが失敗してるところを2分探索するコマンド

        デモ

        間違いを打ち消す git revert

        過去のコミットを打ち消す

        改変世界からの復帰 – reflog

        コミットを移動させたり

        歴史を変えてはいけないコミット

        人のは変えてはいけない

        自分の黒歴史だけ

        感想

        椅子オンリーだったので、膝上PCつらい。
        途中でキーボードがトラブった
        カスタムイベントは何か冗長だけど、今後よく使う方向になりそうな予感がするのでいろんな使い方がでてきそう。
        また機会があったら参加したいですね。

        プロフィール: azu(アズ)
        Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
        • OS:Windows Vista, 7
        • ブラウザ:Firefox
        • Twitterのアカウントはこちら
        • azu_re
        • メールアドレス(Twitterの方が確実)
        • info@ドメイン名
        リンク

        WebMoney ぷちカンパ