<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Web scratch</title> <atom:link href="http://efcl.info/feed/" rel="self" type="application/rss+xml" /><link>http://efcl.info</link> <description>フリーソフトやFirefoxなどについて、web全般なサイト</description> <lastBuildDate>Sat, 21 Jan 2012 23:30:41 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Mozilla Vision 2012 Conference Day アウトラインメモ</title><link>http://efcl.info/2012/0121/res2997/</link> <comments>http://efcl.info/2012/0121/res2997/#comments</comments> <pubDate>Sat, 21 Jan 2012 13:44:16 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[javascript]]></category><guid
isPermaLink="false">http://efcl.info/?p=2997</guid> <description><![CDATA[Mozilla Vision 2012 – Conference Day Mozilla Vision 2012 Conference Dayに参加してきたので、その時のメモです。(いつも通り正確性は保証されません) &#038; [...]]]></description> <content:encoded><![CDATA[<h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; font-weight: bold; font-style: normal; font-size: 30px; line-height: 36px; font-family: inherit; color: #404040; padding: 0px; border: 0px initial initial;">Mozilla Vision 2012 – Conference Day</h1><p><a
href="http://mozilla.jp/events/vision/2012/conference/">Mozilla Vision 2012 Conference Day</a>に参加してきたので、その時のメモです。(いつも通り正確性は保証されません)</p><p><img
title="NewImage.png" src="http://efcl.info/wp-content/uploads/2012/01/NewImage.png" alt="NewImage" width="448" height="600" border="0" /></p><p><span
id="more-2997"></span></p><p>&nbsp;</p><h1>Boot to Gecko</h1><p>B2G = Boot to Gecko</p><h3>なぜ必要なのか</h3><p>モバイルは閉鎖的すぎる</p><p>過去を振りかえる</p><ul><li>2002年 ブラウザの場合</li></ul><p>IE のみだったので、拡張性はなかった。 拡張する必要がなかった</p><p>やがて複数のブラウザが登場して競争するようになった。 ブラウザ間で実装の競争が起こると</p><ul><li>UXが良くなる</li><li>ユーザーはハッピーになる</li><li>標準化も良くなっていく -&gt; 書き手もハッピー</li></ul><h3>ブラウザとモバイル</h3><p>モバイルプラットフォームは閉鎖的で、プラットフォーム側がコントールできるようにしている。</p><p>様々なプラットフォームに対応しようとするとそのプラットフォームに対応しないといけない -&gt; 時間の無駄になってる。</p><p>プラットフォームを移行するとデータが移行できない。 このようなsilosがあるとオープンではない</p><p>これを変えるためにB2Gを作っていく。</p><h3>Webプラットフォームができる事</h3><p>オープンなものにするために必要なもの</p><ul><li>オープンなApp Marketsが必要</li><li>プラットフォーム間を移行する際にデータも移行できる Firefox Syncのデバイスを超えた同期システム。</li><li>BrowserID</li></ul><p>ネイティブアプリだと使えるケドWebからは使えないモバイルの機能があるのはWebのバグなども</p><h3>Boo2Gecko</h3><p>B2Gに必要なもの</p><ul><li>iOS負けないUX</li><li>オープンスタンダートを構築する。B2G以外でも同じAPIが利用できる</li><li>Apps。Web自体がapp storeみたいなもの</li></ul><h3>デモ</h3><ul><li>ロックスクリーン、ホーム画面もWebアプリとして実装されている</li><li>60FPS出るようにしている</li></ul><p>電話ができるようにWeb APIとしてDevice APIを実装してある。 ネイティブコードではなくてWebの技術で実装されている。</p><p>ホーム画面もHTMLベースなので、ソースコードが見られる</p><ul><li>Quake 3を使ったアプリ<ul><li>WebGLのエンジン</li></ul></li></ul><p>クラッシュしたけど、直ぐ立ち上がる。</p><h3>B2Gの実装</h3><p>iOSなどのネイティブAPIの代わりに、Webエンジン/標準化されたDevice APIsがあり、ネイティブUIの代わりにWebベースのUIが存在する。</p><p>すべて再開発するわけではなく、Webレイヤー以外の部分は既存のものをサイっ利用したりする。</p><p>Gonk ( Androidのものも再利用) WebランタイムにMozillaは集中開発して、GPSなど他の部分に関してはAndroidのコードを利用する。</p><h3>B2Gは何がしたい</h3><ul><li>モバイルをオープンにしたい</li><li>プランや開発やソースコードもオープンにしている</li><li>作成したAPIを標準化したい</li><li>オープンなエコシステムを作成したい</li><li>Boot2Webkit など他の実装も作れるようにしたい</li><li>B2Gで動くものはB2Wでうごくようになるべき</li></ul><p>一からはじめたプロジェクトではない。 Androidのコミュニティ</p><h3>Q&amp;A</h3><p><em>Q</em> どのようにして標準化していくのか。 それぞれの実装に対してそれぞれのUIがあるから、ポートする作業していく必要がでていく。 Gaiaに対してのUIのガイドラインが必要</p><p><em>A</em> 標準化していくのはシステムのテーマ</p><p><em>Q</em> non-nativeなものを場合、ゲーム等最大限の性能出すためにネイティブAPIを開発するの?</p><p><em>A</em> ネイティブAPIを実装するつもりはない。 WebGLがOpenGLが遅ければそれはWebのバグである。 クロスプラットフォームを常に担保していくという目的を持っているので、少し遠回りでもWeb APIをやっていく。</p><p><em>Q</em> アプリが落ちたときに他のシステムを巻き込むの?</p><p><em>A</em> プライオリティの高いものを別のプロセスを走らせる事もできる。 OSがとても軽量なので、全てがダウンしても直ぐに起動できる。</p><p>電話のプロセスは別のものとして動いてるのでOSがダウンしても生きてる。 プロセスのセパレーションと呼ばれるものが実装できてる。</p><p>Linuxカーネルがあってその上にいくつかのXULや電話やBTなどのプロセスなどを起動していく。そして最後にB2Gのプロセスが起動して、その中でWeb Appが起動する。</p><p>Chromelessのようなイメージで、全てがiframeのようなものになって、iframeにマニフェストを与えて、iframeを別プロセスで動作させることができる。</p><p><em>Q</em> どのようにB2Gを提供していくか? Mozillaがサポートするの?</p><p><em>A</em> Mozillaは直接デバイスを出荷することはなく、 Mozilla Phoneパートナーと一緒してやっていく。 メジャーなキャリアとはやり取りを始めていて、最終的にそのキャリアが出していくことになる。</p><p><em>Q</em> デバイスを買ってきて、OSとしてB2Gを後入れるということはできるの?</p><p><em>A</em> 今サムソンのデバイスを使ってるが勝手に入れてる。 なので、将来的にはより多くのデバイスをサポートして行って、そのような事が可能になる</p><h1>Web 標準の今、そして未来</h1><p>Tantek Çelik</p><p>スライド : <a
href="http://tantek.com/presentations/2012/01/open-web/">Open Standards Stories &amp; Practices</a></p><p>CSSの標準化に参加したことについてのお話</p><ul><li>ISO</li></ul><p>買った上で誰でも見ることができる =&gt; 昔のオープン</p><ul><li>CalConnect</li></ul><p>お金を払った上にテストに参加できる。 テストスイートなのに、対象が限定されている。</p><p>W3Cはだれても見られるオープン</p><ul><li>W3C tests</li></ul><p>CSS WGはレポートを公開していたので誰でも見ることができた。 CalcConnectは公開してはいけないという縛りがあった</p><p><strong>オープンなテストは再現性が担保されている</strong></p><h3>まだCSS WG不満があった</h3><p>更にテスト、レポートをオープンにしていく必要がある。</p><ul><li>Blog</li><li>Wiki</li></ul><p>CSS WGのWikiを作成した。まだ閉ざされていた部分があったが、IRCやバグトラッカーなども公開していくようにした。</p><p>当時にメーリングリストはあったが、W3Cのメンバーでないとみられないようになっていたが、テクニカルな内容のものは全てPublicにしていくようにした。</p><ul><li>editor &#8216;s drafts</li></ul><p>これもエディターが書いてる途中のものも公開していくようにした。</p><ul><li>last call</li></ul><p>2011になってCSS2.1がやっとRCになった。9年もかかった。</p><p>CSS3の確固たる基盤になるCSS2.1ができた。</p><h3>学んだ事</h3><p>オープンは進化する</p><h2>2. XFN</h2><ul><li>2003年</li></ul><p>SXSWという会議に参加した時の話。</p><p>ブログロールの仕組みについての会議で、ものすごく複雑な仕様になっていた。</p><p>rel=&#8221;friend&#8221;がついてればいいぐらいな簡単なものを提案した。</p><p>実際にどういう状態がfriendなのかについて調査した。</p><h3>CC</h3><p>XFNは初めてのCCライセンスを使ったオープンな標準化となった。 そこからフィードバックをもらってXFN1.1をリリースした。</p><h3>rel=me</h3><p>一番大きな6文字。自分を示すrel属性で、多くのSNSなどで使用されている。</p><h3>rel=me , OAuth</h3><p>２つを組み合わせることで、OpenIDをよりシンプルなものを実現できるでは?</p><p>XFNから学んだものは単純でシンプルであるべきということ</p><h2>3. MicroFormat</h2><ul><li>rel=license</li></ul><p>この時初めてMicroFormatという事が使われた</p><p>その頃はまだ標準に関するWikiがなかったので、Wikiで公開した。= 初めてのWikiで公開され知多Web標準</p><h3>人を表現するhtml</h3><p>classnameでつけていた習慣など、定義されていた言葉を元に定義した。</p><h3>hcard , hcalendar</h3><p>既にある用語を元に作成した標準。 既存のフォーマットを使用したので馴染みやすい。</p><h2>Webレビューのフォーマット</h2><p>いろいろ研究した</p><p>80/20の法則 : 比較などのある程度のフォーマットの表現が見えてきた</p><ul><li>hreview</li></ul><p>hreviewという標準化した</p><h3>microformats.org</h3><p>これまでの標準化団体とは少し異なる。</p><ul><li>プロセスそのものを文章化</li><li>今までの教訓を掲載した</li><li>IRCもオープンに</li><li>パブリックなログを公開</li></ul><p>wikiがemail以上の公式な文章であるとした。 -&gt; Wikiが厳格であるようにした</p><ul><li>IRCに変更をとばすbot</li><li>スパムの除去</li></ul><p>Wikiのイイ点としては同時に翻訳が行えるようになった。 今も標準化作業中に17ヶ国に翻訳作業がされている。</p><p>どんどんフィードバックを送る。標準化は誰でも参加ができる環境に翻訳は重要</p><p>Wikiは誰でも参加できる。W3Cは組織としての参加が必要になってる。</p><p>全てPublic domain / CC0にすることで全てがオープンであることを体現する。</p><h3>microformats2</h3><p>更にシンプルになるMicroformat。 ユーザーはシンプルなしようが求められる。</p><h2>4. HTML5</h2><ul><li>2004年</li></ul><p>W3Cのワークショップが始まり。</p><p>HTM + CSS + DOM VS XHTML2 +XForms +etc..</p><p>これまでを進化させていく方向　VS W3CのXML</p><p>incremental VS replace</p><p>進化させていくと置き換えていくの対決</p><p>HTML VS XML は8:11でHTMLは負けた</p><p>ベンダーはHTMlの方を支持していた。MS,Apple,Mozilla等</p><p>Web自体は進化しないと行けない</p><h3>WHATWGが設立</h3><p>ここでHTMLは進化していった。</p><p>Web Apllication specがHTMl5になっていった。</p><p>Core+new APIsという構成はCSSも同じ</p><p>WHATWGはMITライセンスをしようした!!! これまであるライセンスを再利用した</p><p>W3Cは独自のライセンス &#8211; フォークが許されないライセンス</p><h3>W3CとWHATWGの共通点</h3><ul><li>要素</li></ul><p>エディタを信頼する VS WG全体で協議する</p><p>というような対立が生まれてた。</p><h2>5. W3C CGs (コミュニティグループ)</h2><ul><li>2011年</li></ul><p>2011にW3Cコミュニティグループができた</p><p>あるテーマに関するコミュニティグループは4人いればできる</p><h3>CC0 &amp; OWFa の仕様</h3><p>Mozillaの弁護士にそれぞれ調べて持ったが、どちらもいい感じだった。 オープンに使えるライセンス。</p><h2>仕様作成の10個のベストプラクティス</h2><ol><li>オープンに作る(標準をオープンに作っていく)</li><li>オープンに反復を行う(完璧じゃなくてもいいから試行錯誤を出す)</li><li>オープンWikiを使う</li><li>オープンに討議をする</li><li>ブログ、Tweet、あらゆる手を使ってオープンに</li><li>オープンなアーカイブ&amp;ログ</li><li>Wiki編集はIRCに投げる</li><li>オープンテストスイート(堅牢、反復的に</li><li>テストレポートをオープンにする</li><li>可能な限りコミュニティを巻き込む( 多くの人を巻き込む)</li></ol><p>境界を超えた範囲で巻き込んだ作業をする。標準はグローバル</p><h2>Q&amp;A</h2><p><em>Q</em> MicroFormats以外に草の根的なものはありますか?</p><p><em>A</em> OAuthはメーリングリストだけでできてきた</p><p><em>Q</em> ベストプラクティスはWeb以外に対しても適応できる?</p><p><em>A</em> 他にも適応できるだろう.</p><p>Facebookがオープンプラットフォームということをやろうとしている</p><p><em>Q</em> W3Cのノンフォークライセンスだということだけど、コミュニティができてフォークが行われてる。W3Cが変わってきてるの?</p><p><em>A</em> 今は２つの方向ができてきてる。 HTML5はまだノンフォークなライセンスになってる。</p><p>将来的には切り替わるかもしれない。</p><h1>pdf.js — HTML5 と JavaScript の限界に挑戦する</h1><h3>なぜpdf.jsが必要なのか</h3><p>信頼されたネイティブコードは脆弱性があると問題になる。</p><h3>pdfに何が必要なのか</h3><p>portableなのに巨大なフォーマット</p><ul><li>Adobeのみが実装してるサブセットがある</li><li>pdfの一部サブセットを実装することを目的にした</li></ul><p>圧縮されたpdfを戻して、パースしてdrawTextみたい形にしてレンダリングする。</p><p>Document -&gt; ページとオブジェクトがある。</p><h3>HTML/CSS/JS</h3><ul><li>JavaScriptはTyped Arrayなどを使用して高速化</li><li>Fast 2D Canvas、GPUで加速的</li><li>CSS @fant-face フォントに対応、ダイナミックにフォントをロードする機能</li><li>data: URI バイナリデータをJavaScript上で作れる</li></ul><p>SVGなどを使わなかった理由もある。 = スピード</p><h3>pdf.jsの手順</h3><h4>ダウンロード</h4><p>バイナリデータをXHRでresponseTYpe = &#8220;arraybuffer&#8221;でダウンロードできる。</p><h4>デコード、解読、パース</h4><ul><li>PNG,LZWデコーダーをJavaScriptで書いた</li><li>パーサーもJavaScriptで書いた</li></ul><h4>レンダリング</h4><p>パースしたものをレンダリングしていくのが大変</p><ul><li>2D CanvasでLineやarcsなどを描いていく</li><li>bitmapもimgで描画する</li></ul><h4>問題</h4><ul><li>2DCanvasは十分ではなかった。</li><li>Dash line等Canvasには実装されてなかった。 even odd ruleなどもそう</li></ul><p>解決方法として2DCanvas自体を拡張していく</p><p>bitmap画像のデコードをサポートしてなかった。</p><ul><li>img と Canvasはjpeg2000</li><li>フォーマットを追加するのは大変</li><li>JavaScriptでデコーダーを書く</li></ul><p>フォントの問題</p><ul><li>OpenType , TrueTypesなどブラウザはサポートしてないTypeがあった</li><li>Type1は一番PDFで使わてるのにCSS Font faceでサポートされてない</li></ul><p>解決方法としてOpenTypeに変換して、中間フォーマット的にType1をサポートした。</p><p>まだまだやることはいろいろ</p><ul><li>Shading fillはCSS gradientsで実装されてる</li><li>Image Mask はCanvasがネイティブでできる</li><li>PostScriptオブジェクト &#8211; PostScriptのインタープリタをJSで</li><li>TYpe3フォント PDF.js自体でレンダリングを行ってる</li></ul><p>pdfをWeb技術でレンダリングする事に成功した。</p><h3>デモ</h3><ul><li>Web技術で実装するとモバイルでも動かせる</li><li>フルのPDFレンダラーがブラウザ上で走っている</li></ul><h3>PDFビューアーのUI</h3><p>UIを作っていく</p><ul><li>ページビュー(サイドでページをプレビューする)</li><li>ハイパーリンクのサポート</li><li>テキストの選択 &#8211; 難しい</li><li>テキストの検索 &#8211; 難しい</li></ul><h4>ハイパーリンクの実装</h4><p>2種類のリンク方式がある</p><ul><li>相互参照</li><li>外部リング</li></ul><p>Webブラウザが認識できるaリンクに変換した。 そのオブジェクトをpdf.jsでレンダリングした上にaリンクを重ねたものを表示して扱うようにした。</p><p>相互参照はポイントへ飛ぶようにしていて、バックボタンが機能するようになっている。</p><h4>テキストの選択</h4><p>Canvasは画素が並んでいるだけなので選べないが、オーバーレイに透過性を持ったdivタグでテキストを描画している。</p><p>アクセシビリティもサポートできている。</p><h3>pdf.jsの高速化</h3><h4>コンパイル</h4><p>pdf.jsはPDFのサブセットをレンタリング</p><ul><li>PDFレンダラーはインタープリタだった</li><li>PDFレンダラーのJITコンパイルする switch等をコンパイルしたら省略できるので、直接draw*を呼べるようにできて十数倍の動作速度が得られる。</li><li><a
href="http://blog.mozill*A*com/cjones/2011/06/15/overview-of-pdf-js-guts/">Overview of pdf.js guts &lt; Chris Pitchin&#8217; Hey</a></li></ul><p>ダイナミックなコンパイレーションを行なってFunction()で実行してる。</p><h4>Web Workers</h4><p>Web Workersを使って別のスレッドで、デコード、パース、フォント変換、デコードイメージを行う。</p><ul><li>main threadではdrawを行なっていく。(これはUIブロックを生む)</li><li>別スレッドで実行してるものはUIブロックの影響されない</li><li>同時併用でタスクを実行できるので高速化</li></ul><h3>pdf.jsの現状</h3><ul><li>大部分の機能は完成している</li><li>Firefox,Chromeの拡張して利用できる</li></ul><p><em>* HTML/JS/CSS Can redner PDFs *</em></p><h3>next</h3><ul><li>PDF内のテキストを検索</li><li>HTTP byte-rangeリクエストを使ってPDFを分割ロード。メモリの削減になる</li><li>Web Worker内でCanvasをサポート。UIブロックを潰せる</li><li>(maybe) WebGLで高速レンダリング？？？ GPUをもっと使える</li></ul><h3>質問</h3><p><em>Q</em> なぜCanvasを使用したのか?</p><p><em>A</em> JavaScriptが直接やり取りできる。SVGはDOMを経由しないといけないため、より早くするには難しい。</p><p>PDFではPDFファイルがあるのだからDOMを作成してやるのは不要だ。</p><p><em>Q</em> 政府などでフォームとしてPDFを利用する場合。インタラクティブなPDFな方向はするのか?</p><p><em>A</em> ２つのフォームフォーマットがある</p><ul><li>Acro format &#8211; 標準化されてる</li><li>XNA format &#8211; プロレタリア</li></ul><p>PDF.jsでも実装しやすい部類のもの。 AdobeではSpiderMonkeyベースのエンジンが使わていて、Validationが行われていたりする。</p><p>pdf.jsは100%のpdfのサポートするわけではないので、フォームなどのやり取りをべーすとするならばHTMLベースのほうがよいものになるかもしれない。</p><p><em>Q</em> セキュリティポリシーについて</p><p><em>A</em> pdf.jsの用途について</p><p><em>A</em> メールクライアントなどの場合 HTMLのセキュリティポリシーに寄っていく(クロスドメインの問題がでるかもしれない)</p><p><em>Q</em> テキストの描画方法</p><p><em>A</em> PDFは左から右へ書けというようなコマンドが存在する。 まだ、サポートしてないが、Canvasの機能を一部利用かもしれない。</p><p><em>Q</em> Canvasにテキスト選択を追加しなかった理由?</p><p><em>A</em> Canvasにそれが実装されなかったのはとても管理が大変だったから。パフォーマンスとテキスト選択のトレードオフの結果</p><p><em>Q</em> 対応するブラウザについて</p><p><em>A</em> pdf.jsはオープンWeb標準を使って作っていくという方向から始まった。だが、ブラウザにはまだ実装されていない機能があって、その部分が拡張実装として、Firefox や Webkitに実装されていった。</p><p>dot line と even fill あたりが互換性ブラウザの問題を生んでる。 =&gt; スタンダートを追加していく</p><p>重要なのはTyped Arrayのサポートが大事で高速に動作するにはこれが必須。# LT</p><h1>LT</h1><h2>&#8220;実践&#8221;Emscripten</h2><ul><li>Alon zakai<ul><li>EmScriptenの作者</li></ul></li><li>C, C++をLLVMでJavaScriptへ変換する<ul><li>バイトコードになってそれをエミュレート</li></ul></li><li>手作業よりも少し遅いぐらい</li><li>まとめ<ul><li>2-4倍ぐらい遅くなる</li><li>変換作業が短くすむ</li></ul></li><li>JSViz<ul><li>GraphVizを変換</li><li>アニメーション機能付き</li><li>グラフを考えるようにするのを視覚化</li></ul></li></ul><h2>ブラウザプレゼンテーションの教育的利用</h2><ul><li>Nurota Lab.</li><li>教師と生徒とのやり取りが必要になる。<ul><li>臨機応変に内容を変えられるようにする</li><li>黒板以上のことをできるようにする</li></ul></li><li>インタラクティブにコードを実行しながら事業を進行できる</li><li>Webページを埋め込むとかWeb技術を使える</li><li>数学とか物理とか利用方法がある</li></ul><h2>Firefox Syncサーバを建てて見た</h2><ul><li>Firefox Sync<ul><li>保存情報をアドオンを同期する機能</li><li>Androidとも同期できる</li></ul></li><li>Mozillaのサーバに情報が転送される<ul><li>ローカで暗号化されてから送信している</li></ul></li><li>Syncサーバを自前で建てて利用する<ul><li>証明書を用意してHTTPSでやり取りできる</li></ul></li><li>Python, SQLite、Macurialで動く<ul><li>ビルドして、コマンドだけ動く</li></ul></li><li>いろいろ調整しないと動かないけど</li></ul><h2>Firefox 布教大作戦</h2><ul><li>Firefox を 灘高校 に広める<ul><li>IE 83%のシェアな高校</li></ul></li><li>Firefoxノートを1300部発注<ul><li>教員に止められた</li></ul></li><li>「布教」は簡単ではない</li></ul><h2>Firefoxのゴキゲンな通知UI</h2><ul><li>Popup Notifications<ul><li>doorhangerがコードネーム</li></ul></li><li>ノンブロッキングな通知UI</li><li>PopupNotification.show()<ul><li>6つの引数で設定</li></ul></li><li>通知の複数表示ができないバグ</li><li>ドキュメントが充実してない<ul><li>コードはドキュメントになってる</li></ul></li><li>まとめ</li></ul><h2>ドアハンガーをもっと簡単につかいたい! &#8211; Piro</h2><ul><li>PopupNotication.jsmの罠<ul><li>CSSでアイコンの表示</li><li>コードバックをたくさん指定しないといけない</li></ul></li><li>簡単に扱えるライブラリを書いた</li></ul><h2>海外の開発コミュニティをを利用して世界デビューをしよう</h2><ul><li>Linuxに企業として参加<ul><li>コミニティに参加していくには</li></ul></li><li>ユーザーもどんどん参加する</li><li>英語のレベルはあまりきにしない</li><li>批判されても落ち込まない</li><li>思いついたらすぐ投稿(反応を早く)</li><li>オープンにディスカッションをする</li><li>キーとなる人を早く見つける</li><li>まずは感謝</li></ul><h2>才能のソーシャルメディア</h2><ul><li>Stylelist DirectoryというSNSサービス<ul><li>才能のソーシャルメディア</li><li>美容師のソーシャルメディア</li></ul></li><li>欧米だと美容師は芸術家的に個人活動<ul><li>日本だとサロン</li></ul></li><li>美容師が才能を発揮できるようなサイト<ul><li>活躍のアピール</li><li>一般の人たちもそれらに反応</li></ul></li><li>Joomla の CMSを使って運営してる<ul><li>他の業界とのコラボレーションとかやっていきたい</li></ul></li></ul><h2>Scratchでつなぐオープンな学び</h2><ul><li>Openな学び</li><li>Scratch<ul><li>8 &#8211; 12歳向けのMITが開発してるソフト</li><li>80万人ぐらいアクティブユーザー</li></ul></li><li>デモ</li></ul><h2>Interop Tokyoでのオープンなネットワークエンジニア育成</h2><ul><li>Interop<ul><li>ネットワークの国内最大のイベント</li><li>いろんな会社の機器を使ってネットワークを構築する</li><li>超ネット</li></ul></li><li>ShowNet<ul><li>STMプログラム</li><li>インターネット技術者を育てる</li></ul></li></ul><h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; font-weight: bold; font-style: normal; font-size: 30px; line-height: 36px; font-family: inherit; color: #404040; padding: 0px; border: 0px initial initial;"><span
style="font-size: 24px; color: #000000; line-height: normal;">まとめ</span></h1><p>Web 標準の今、そして未来 by Tantek Çelik がとても面白かった。仕様を作っている側からの視点の話は結構貴重な貴重な気がした。</p><p>Mozilla飯よかった。</p><p>メモツール(セッションごとに別々のファイルで保存)</p><ul><li><a
href="http://www.inkcode.net/qute">Qute for PC/Mac</a></li><li><a
href="http://mouapp.com/">Mou</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0121/res2997/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>今まで書いたJavaScript情報の読み方をまとめてみた</title><link>http://efcl.info/2012/0116/res2985/</link> <comments>http://efcl.info/2012/0116/res2985/#comments</comments> <pubDate>Mon, 16 Jan 2012 14:49:50 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category><guid
isPermaLink="false">http://efcl.info/?p=2985</guid> <description><![CDATA[もう既に見た人もいるかもしれませんが、オフライン勉強会でJSer.info一周年について発表してきた &#124; JSer.infoで今まで書いてた記事のまとめ的な発表をしてきました。 海外のJavaScript情報を見つけよう [...]]]></description> <content:encoded><![CDATA[<p>もう既に見た人もいるかもしれませんが、<a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a>で<br
/>今まで書いてた記事のまとめ的な発表をしてきました。</p><ul><li><a
title="海外のJavaScript情報を見つけよう" href="http://efcl.info/2011/0116/res2185/">海外のJavaScript情報を見つけよう</a></li><li><a
title="世界のJavaScript情報を読もう" href="http://efcl.info/2011/0117/res2229/">世界のJavaScript情報を読もう</a></li><li><a
title="今からRSS購読すべきタグと検索結果" href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果</a></li><li><a
title="ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ" href="http://efcl.info/2011/0301/res2303/">ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ</a></li><li><a
href="http://azu.github.com/slide/HowToLearn/#slide1">HOW TO LEARN</a> (これだけ記事じゃないですが)</li></ul><p><a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide1">世界のJavaScriptを読もう @ 2012</a>を発表していた時、<a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide29">RSS購読フロー</a>の部分がなぜか<a
href="http://twitter.com/tatsuoSakurai/statuses/158419082654400512">受け</a>が<a
href="http://twitter.com/koichik/statuses/158542707378233344">良かった</a>ようなので、簡単な補足を書いておきます。</p><p><img
title="social_flow.png" src="http://efcl.info/wp-content/uploads/2012/01/social_flow.png" border="0" alt="Social flow" width="600" height="528" /></p><p>自分はRSSリーダを多用しているので、何でもRSSにしてとりあえずRSSリーダーに流れてくるような状況を作っています。<br
/>Webサイトを見ていて、Read It Latorなどで後で読むことにしても結局読むのを忘れてしまうことがあるため、Read It Latorに登録したリストがRSSとしてRSSリーダーに流れてくるといった感じです。</p><p>Pinboardやはてなブックマークや<a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide22">ソーシャルニュース</a>サイト等もRSSで購読していると、同じ記事を扱ったものが何度もRSSに出てきます。<br
/>これは<a
href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果</a>でLDRの読み方にでも書いていましたが、SBMなどは量が多くなってしまうので、全て目を通そうとすると気疲れします。<br
/>そのため、SBMや検索結果等のRSSは高めのレートにして心理的に飛ばしやすい(LDRでいうSキーを押す)状態にしています。</p><blockquote><p>なんで検索結果のRSSは★4にしてるかというと、検索結果RSSで出てくるサイトは★3のサイトと被ったりすることがあるので、<br
/>★4で飛ばしても★3で出てくるからまあいいっかと適当な感じで読める安心感が生まれます。</p> <a
title="今からRSS購読すべきタグと検索結果 | Web scratch" href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果 | Web scratch</a></blockquote><p>ここから、発表してたときにウケてた部分ですが、RSSリーダで読んでいるときに少しでも気になった記事は<br
/>とりあえずTwitterへ投稿しています。(<a
href="http://userscripts.org/scripts/show/46441">Post Now browsing to Twitter</a>がLDRから直接投稿できるようにしているのもその辺の関係)<br
/>一応軽くは目を通してからTwitterへ投稿していますが、専門的な記事や英語の記事など一度みるだけじゃ理解が出来なかったり、判断が難しい記事も多いと思います。</p><p>そういう時にTwitterのフォロワーから反応があると理解しやすかったりします。<br
/>またFavやRTがあったものが流れてくるようにRSSを購読しておけば、重要な記事 (少なくてもフォロワーが興味を持った記事)が再度RSSとして流れてくるようになります。</p><div><blockquote
class="twitter-tweet" lang="ja"><p>ありのまま今起こった事を話すぜ！『おれは奴が情報を選別してくれてると思ったらいつのまにか選別させられていた』 何を(ry という素晴らしいフィードバックを見た</p> — koichikさん (@koichik) <a
href="https://twitter.com/koichik/status/158542707378233344">1月 15, 2012</a></blockquote><script src="//platform.twitter.com/widgets.js"></script></div><p>こういう感じで、重要な記事は何度もRSSとして流れるようにして、読み忘れを減らしたり &amp; 心理的に軽い気持ちでフィードを読み飛ばしても大丈夫なように意識しています。<br
/>他の人の力も借りて手を抜きつつ、人があまり見ないようなところもチェックするようにして、いろいろな情報を共有できればいいかなと思います。</p><p>どういう所などをみているかについては<a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a>のスライドの方にもまとめたのでそちらを見てください。</p><ul><li><a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a></li></ul><p> </p><ul></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0116/res2985/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>shibuya_sp 勉強会 vol1 アウトラインメモ</title><link>http://efcl.info/2011/1213/res2982/</link> <comments>http://efcl.info/2011/1213/res2982/#comments</comments> <pubDate>Tue, 13 Dec 2011 14:52:44 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[iPhone]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[iOS]]></category> <category><![CDATA[test]]></category><guid
isPermaLink="false">http://efcl.info/?p=2982</guid> <description><![CDATA[#shibuya_sp 勉強会 vol1 : ATNDに参加してきたので、その時のメモです。 iOSアプリケーションのUnit Test &#8211; 岸川 テストを習慣化するには なぜテストを書かないか テストの効果 [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://atnd.org/events/22758#comments">#shibuya_sp 勉強会 vol1 : ATND</a>に参加してきたので、その時のメモです。</p><h3>iOSアプリケーションのUnit Test &#8211; 岸川</h3><h4>テストを習慣化するには</h4><h4>なぜテストを書かないか</h4><ul><li>テストの効果がわかりにくい</li><li>iPhoneアプリのテストってどう書けばいいのかワカラナイ</li><li>デバイス固有のデータを利用していたりする</li></ul><h4>ツール/フレームワークを使う</h4><ul><li>繰り返し実行するのが簡単</li><li>自動化できる</li><li>テスト結果が見えてくるようになる</li></ul><h4>無理をしない</h4><ul><li>モデルのテストは書きやすい</li><li>論理構造はそう簡単に変わらないはず</li><li>繰り返し実行するメリットがあるので(正常系/例外/異常/境界値)をちゃんとテストする</li></ul><p>表示は論理構造が簡単にひっくり返る事があるので、テストを無理に書こうとしない</p><h4>テストしやすいコードを書く努力はする</h4><ul><li>テストしやすいコードは、使い易いコードなので良い設計にも繋がる</li><li>メソッドをきちんと分けてあげる</li></ul><h4>単体テストをワークフローに取り入れる</h4><ul><li>OCUnit</li><li>GHUnit</li></ul><h6>OCUnit</h6><ul><li>XCode標準</li><li>XCodeと統合されてるが、アサーションが貧弱</li><li>非同期テストがサポートされてない</li></ul><p>GHUnit</p><ul><li>XCode非標準</li><li>アサーションが豊富</li><li>まともなテストができる(teardown/setup)</li><li>非同期テストのサポート(waitを使える)</li><li>OCUnitのテストケースも実行可能</li><li>viewのテスト機能が追加された</li></ul><h4>Viewのテスト</h4><p>GHVerifyView  あらかじめ取っておいた画面の画像と照らしあわせてテストしてくれる 画像での比較</p><h3>Flashからcocos2dに移植した話 &#8211; CAつりポンチーム</h3><ul><li><p>Flashとcocos2dに移植した</p></li><li><p>1万７千件のレビュー</p></li><li><p>平均4.5☆</p></li><li><p>Twitterによる拡散</p></li><li>完全無料広告なし</li><li>アメーバピグ</li><li>ストレスフリー</li><li>App Storeのレビュー誘導</li></ul><h4>オフライン対応</h4><h4>非会員対応</h4><ul><li>ほぼすべての機能を非会員でも遊べる</li><li>会員と非会員の差別化</li><li>タイトル画面の対応のみ</li><li>ポイントの管理をローカルにおいて、サーバ側からポイント管理を排除</li></ul><p><strong>iPod Touchのユーザーが30%</strong> =&gt; オフライン対応の成果?</p><h3>cocos2dとFlash</h3><p>大量の画像を書きだす</p><ul><li>手動は日が暮れるので</li><li>アクションを作って、画像ファイル名=レイヤー名にしてバッチで生成</li></ul><h4>texturepacker を知る</h4><ul><li>一枚の画像に素材を貼り付けて、座標データからファイルを切り出して表示する</li><li>CSS スプライトみたいな</li></ul><h4>AutoSD</h4><p>自動でRetinaと通常の解像度を作成できる</p><h4>Spriteはフォルダ管理</h4><p>Finder上でフォルダ構造そのままにSPriteを管理できて楽 texturepacker上に反映する</p><h4>見ていて飽きないガチャを作れという司令</h4><p>まずはFlashで動きを作る</p><ol><li>色を選ぶ</li><li>ガチャを出すアニメーション</li></ol><h4>自作AIRツールで座標の抽出</h4><p>swfから座標の抽出をするソフトを作成した</p><ul><li>座標系の違いを補正する スクリーン座標 -&gt; デカルト座標</li><li>Flash上のレイアウトがそのままcocos2dに移植</li></ul><p>cocos2dを利王した最適化と高速化</p><ul><li>描画処理の高速化</li><li>テクスチャロードの非同期化</li></ul><h4>iPhoneのOpenGLの傾向と対策</h4><ul><li>OpenGLの描画を呼び出すほどオーバーヘッドが大きなリ重くなる傾向</li><li>なので、texturepackerを使ってテクスチャを一回でロードしたりして 呼び出し回数を減らした。</li></ul><h4>テクスチャロードの非同期化</h4><ul><li>非同期で先にテクスチャを読み込んで、読み込み待ちを減少させる</li><li>addImageAsyncを使って非同期ロード</li></ul><h4>テクスチャフォーマットの調整</h4><ul><li>RGBA4444に統一してる(32bit -&gt; 16bit)</li></ul><h4>モーション制御の最適化</h4><p>CCPawnやCCSequenceを処理コストが多いでの、人体とかが苦手だった。 モーションデータを削減して、モーション制御をNEONで並列処理にして最適化</p><h4>コンフィグの微調整</h4><p>ccConfig.hでCC<em>USES</em>VBOを無効にするだけで結構変わる</p><h4>Time Profiler</h4><p>順次上から見て最適化をしていく</p><h4>まとめ</h4><ul><li>テクスチャは一枚にまとめてCCSpriteBatchNodeで描画</li><li>NEONなどSIMDを使って最適化</li><li>ccConfig.hをみてチューニング</li></ul><h3>OCTOBAから見た面白いAndroidアプリ &#8211; 丸岡</h3><h4>Android Market</h4><p>アプリ削除率</p><ul><li>37%?</li></ul><p>OCTOBA</p><ul><li>男性が多い</li><li>30-40代が多い</li></ul><h4>パーミッションの問題</h4><p>Any.Do</p><ul><li>機密ログデータの読取</li><li>このパーミッションを要求するアプリはレビューしない</li></ul><p>いろいろなパーミッション</p><ul><li>機密ログデータの読取</li><li>連絡先データの読取</li><li>SMSメッセージの送信</li><li>アカウントの認証情報を利用</li><li>起動中のアプリケーション情報</li><li>端末ステータスとIDの取得</li></ul><p>広告SDKでGPSデータを利用してターゲティングを使用したりするものもある。 組み込んだアプリでGPSを使ってなくても、パーミッションが求められる</p><h4>レビューの基準</h4><h6>人気ジャンル</h6><p>セキュリティが5月(2011)あたりが入ってる</p><ul><li>ツール・設定系</li><li>ゲームエンタメ系</li></ul><p>昔はツール系が多かったが、ゲームエンタメ系が増えてきている</p><h4>検索キーワード</h4><ol><li>電話帳</li><li>時計</li><li>メール</li></ol><h3>使ってもらえるアプリの考え方 &#8211; fladdict</h3><h4>ATMアプリを考えてみる</h4><p>架空の事例で考える</p><h4>リサーチ</h4><ul><li>既存のATMの機能?</li><li>既存のATMの不便?</li><li>どういう時に使う</li></ul><h6>既存のATMの機能</h6><ul><li>残高確認</li><li>入金、引き出し</li><li>送金</li><li>設定変更</li></ul><p>オンラインバンキングを含めるともっとたくさんあるので、 どの機能をアプリに含めるのかを考える -&gt; 絞り込む、利用の想定</p><h4>シナリオ</h4><ul><li>通販などの振込</li><li>通常の送金</li><li>支払い忘れへの緊急対応</li><li>残高確認</li></ul><p>逆にスマートフォンで保険や税金管理などの操作はしないとのでいらないはず</p><p>90%のユーザーが必要な機能を入れる</p><ul><li>ヘルプなしでわかるアプリを作る</li><li>アプリを起動してからそのアプリのタスクを1-2駅程度の間に完了できるようにする</li></ul><p>必要な機能を絞り込んでから、コンセプトを立てる</p><h4>コンセプトの定義</h4><p>iPhoneアプリは大体4つの形がある</p><ul><li>ユーティリティ型</li><li>ナビゲーション型(TableView)</li><li>タブ型</li><li>没入型(全画面)</li></ul><p>それぞれのタイプをプロトタイピングして検証していく。</p><h4>ユーティリティ型</h4><ul><li>最低限だけの機能</li><li>残高の確認</li><li>送金ができる</li></ul><h4>ナビゲーション型</h4><p>ユーティリティより機能は増える</p><ul><li>ニュース</li><li>残高</li><li>送金</li><li>設定</li></ul><h4>タブ型</h4><p>ナビゲーション型と似た機能を持つが、平行して機能を使える</p><h4>没入型</h4><p>iPhoneのUIに頼らないので時間がかかる</p><ul><li>実際の画面に似せるなど</li><li>ナビゲーションを出してみたり</li><li>現実のメタファ</li></ul><p><strong>今回はナビゲーション型かタブ型</strong></p><h4>ナビゲーション型</h4><ul><li>拡張しやすい</li><li>単純</li></ul><p>タブ型</p><ul><li>拡張に限界がある</li><li>平行して機能を利用できるのが利点</li></ul><p>ナビゲーション型は階層が深いと、作業を切り替えるにコストがかかるので、タブ型の方がやりやすい</p><h4>タブ型のメニュー</h4><p>よく使うものから左から右へ配置していく</p><p>ニュースを残高確認後に見る人はあまりいない ニュースをATM側としては配信したいので、ニュースを左に持ってきて自動的に見せるようにした。</p><h4>設定画面</h4><ul><li>ピンコード</li><li>アカウント名</li><li>銀行アカウントのパスコード</li></ul><h4>入力UI</h4><ul><li>Pickerを使って桁ミスなくすなど</li><li>送金時はボタンのミスタッチをなくす</li><li>スライドで送金処理を完了させる &lt;= 難しいUIな気がする…</li><li>最初にボタンを詰め込みすぎない</li></ul><hr
/><p>Edit <a
href="http://www.inkcode.net/qute">Qute for PC/Mac<br
/><br
/></a></p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/1213/res2982/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>JavaScriptのいろいろなコーディングルールをまとめてみた</title><link>http://efcl.info/2011/0527/res2764/</link> <comments>http://efcl.info/2011/0527/res2764/#comments</comments> <pubDate>Fri, 27 May 2011 13:20:55 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[まとめ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2764</guid> <description><![CDATA[JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に [...]]]></description> <content:encoded><![CDATA[<p>JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に複数人の開発の場合)</p><p>有名な企業やライブラリはコーディングルールも公開している事が多いので適当にまとめてみました</p><h4><a
href="https://developer.mozilla.org/ja/JavaScript_style_guide">JavaScript style guide &#8211; MDC Docs</a></h4><p>Mozilla/Firefox向けのものなので、一部ECMAScriptの範囲を超えたものも含まれています。 <br
/>多くの人が見ていると思うので、見たことない人は一度読んでみるといいです。</p><h4><a
href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">Google JavaScript Style Guide</a></h4><p><a
href="http://cou929.nu/data/google_javascript_style_guide/">Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳</a>(日本語版) <br
/>Googleのコーディングルールですが、ルールを並べるだけではなくなぜ悪いのかについても触れているので、一読をお勧めします。 <br
/><a
href="http://code.google.com/intl/ja/closure/utilities/docs/linter_howto.html">Closure Linter</a>というチェックツールもあるため、採用しやすいかもしれない。</p><h4><a
href="http://docs.jquery.com/JQuery_Core_Style_Guidelines">JQuery Core Style Guidelines &#8211; jQuery JavaScript Library</a></h4><p>jQuery Coreのもの。 <br
/>Typeチェックの仕方についても触れている。</p><h4><a
href="http://dojotoolkit.org/community/styleGuide">Dojo Style Guide &#8211; The Dojo Toolkit</a></h4><p>Dojoのコーディングルール。 <br
/>コード例が豊富で、命名規則やホワイトスペースの扱いなど細かいところまで入ってる。</p><h4><a
href="http://nodeguide.com/style.html">Felix&#8217;s Node.js Style Guide</a></h4><p><a
href="http://popkirby.github.com/contents/nodeguide/style.html">Felix&#8217;s Node.js Style Guide(和訳)</a>(日本語版) <br
/>Node.jsにおけるコーディングルール。(公式なものではない。no official document) <br
/>Node.jsに限らず、クライアントサイドJavaScriptに置いても参考になる部分は多い。</p><h4><a
href="http://javascript.crockford.com/code.html">Code Conventions for the JavaScript Programming Language</a></h4><p>Douglas Crockfordによるもの。 <br
/>コーディングルールというよりは慣習的なもの。 <br
/>同作者による<a
href="http://www.jslint.com/">JSLint</a>も併用しましょう。(<a
href="http://www.jslint.com/">JSLint</a> or <a
href="http://www.jshint.com/">JSHint</a>は他のコーディングルールであっても採用してよいもの)</p><h4><a
href="http://jibbering.com/faq/notes/code-guidelines/">Code Guidelines for Rich Internet Application Development</a></h4><p>コーディングルールではなくてガイドライン的なものです、HTMLやCSS、JavaScriptについてのガイドラインを書かれている。</p><h4><a
href="https://developer.apple.com/library/mac/#documentation/ScriptingAutomation/Conceptual/JSCodingGuide/Introduction/Introduction.html">Introduction to Apple JavaScript Coding Guidelines</a></h4><p><a
href="http://developer.apple.com/jp/documentation/ScriptingAutomation/Conceptual/JSCodingGuide/">JavaScript Coding Guidelines for Mac OS X</a>(日本語版) <br
/>Appleによるコーディングのガイドライン。 <br
/>&#8220;JavaScriptのベストプラクティス&#8221;でコーディングで気をつける事について触れている。</p><h4><a
href="http://www.webkit.org/coding/coding-style.html">The WebKit Open Source Project &#8211; WebKit Coding Style Guidelines</a></h4><p>JavaScriptではありませんが、Webkitにおけるコーディングルール。 <br
/>ホワイトスペースやLine breakingの所はJavaScriptの場合でも参考になる。 <br
/>uupaaさんがこれをベースに一部分を変更した感じで使ってるそうです。</p><ul><li><a
href="http://code.google.com/p/uupaa-js/wiki/CodingStyle">CodingStyle &#8211; uupaa-js &#8211; JavaScript Coding Style Guide &#8211; JavaScript Library for Casual Creator &#8211; Google Project Hosting</a></li></ul><h4><a
href="http://d.hatena.ne.jp/amachang/20100917/1284700700">サイボウズで学んだこと &#8211; IT戦記</a></h4><p>amachangによるもの。 <br
/>大規模 JavaScript 開発におけるルールや命名規則、デバッグ、パフォーマンスについて触れています。 <br
/>コーディングルールを整えてどのように実践したかについて参考になります。</p><h4><a
href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/">JavaScriptパターン</a> (オライリー本)</h4><h4></h4><div
class="azlink-box" style="margin-bottom: 0px;"><div
class="azlink-image" style="float: left;"><a
name="azlinklink" href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank"></a><img
style="border-style: none;" src="http://ecx.images-amazon.com/images/I/51ZoMJ%2BrLhL._SL160_.jpg" alt="JavaScriptパターン ―優れたアプリケーションのための作法" /></div><div
class="azlink-info" style="line-height: 120%; float: left; margin-left: 15px;"><div
class="azlink-name" style="line-height: 120%; margin-bottom: 10px;"><a
name="azlinklink" href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank"></a>JavaScriptパターン ―優れたアプリケーションのための作法<div
class="azlink-powered-date" style="line-height: 120%; margin-top: 5px; font-family: verdana; font-size: 7pt;">posted with <a
href="http://sakuratan.biz/azlink/dp/JavaScript%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%20%E2%80%95%E5%84%AA%E3%82%8C%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E4%BD%9C%E6%B3%95/4873114888/book042-22" target="_blank">AZlink</a> at 2011.5.27</div></div><div
class="azlink-detail">Stoyan Stefanov,豊福 剛 <br
/>オライリージャパン <br
/>売り上げランキング: 8213</div><div
class="azlink-link" style="margin-top: 5px;"><a
href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>この書籍の<a
href="http://efcl.info/adiary/JavaScriptPatterns/Chapter2Essentials">Chapter 2. Essentials</a>において、JavaScriptのコーディングルールが紹介されています。 <br
/>また避けるべき事やどう書くべきなのかについてもかなり深く書かれています。</p><p>コーディングルールは&#8221;どう書けばいいのか分からない&#8221;という人向けのものではないと思います。どう書いたらいいのか分からない人は、まずなぜそのように書いたらダメなのかを知るのがよいと思います。 <br
/>そのため、書き方に不安を持ってる人はなぜダメなのかについても触れている<a
href="http://cou929.nu/data/google_javascript_style_guide/">Google JavaScript Style Guide 和訳</a>を読むのがよいと思います。(読みやすい日本語版もあるしね) <br
/>コーディングルールはコードに一貫性を持つためにあると思います。頻繁にルールを変える必要はないと思いますが、必ずしもそのルールが、その時の(実行環境|JavaScript)において最適な書き方ではない場合もあります。そういうときはルールの更新をしましょう。</p><h4>おまけ</h4><p>自分の場合は<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>の<a
href="http://efcl.info/2010/1027/res2023/">自動整形</a>に任せている(といっても膨大なルール設定があるため、上記で紹介したコーディングルールを自動化できる)ので、基本的にはIDE任せという書き方にしています。 <br
/>セミコロン忘れなどについてはcomplete current statement機能(<a
href="http://blog.livedoor.jp/okashi1/archives/51751259.html"> [WebStorm]Complete Current Statementがとても便利な件(・∀・)</a>)を使ったり、<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>のシンタックスチェックはかなり優秀なのでエラーも書いてる途中で発見しやすいです。(シンタックスチェックも細かく制御できる) <br
/>そのため、やっぱり道具任せといった感じではありますが、WebStormを使用していない場合も同じコードが書けるようにある程度のルールは持っています。 <br
/><a
href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">Google JavaScript Style Guide</a> + <a
href="http://www.webkit.org/coding/coding-style.html">WebKit Coding Style Guidelines</a> に近いですが、ホワイトスペースなど見た目的なちょっとした違いにはそこまで厳しくしない感じで書いています。 <br
/>if, for, while, doなどの{}は省略しない(<a
href="http://www.memetodo.co.cc/2011/05/webstorm_29.html">WebStormの自動整形で中括弧を強制的につける</a>)、誰が見てもある程度読める感じにする、ブレークポイントを打ちやすい空間を作るように配慮するなどなどで、他のコーディングルールに書いてある事と同じようなものだと思います。</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0527/res2764/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>第七回ありえるえりあ勉強会 アウトラインメモ</title><link>http://efcl.info/2011/1013/res2971/</link> <comments>http://efcl.info/2011/1013/res2971/#comments</comments> <pubDate>Thu, 13 Oct 2011 14:55:07 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category><guid
isPermaLink="false">http://efcl.info/?p=2971</guid> <description><![CDATA[第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜に参加してきたので、その時のメモ。 「JavaScriptで大規模ゲーム開発」渋川 ソーシャルゲームの定義 ユーザー間で非同期のやり取りが発生する ngC [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://partake.in/events/2de2385a-fe4a-42ea-98a4-a321c9249bcf">第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜</a>に参加してきたので、その時のメモ。</p><h3>「JavaScriptで大規模ゲーム開発」渋川</h3><h5>ソーシャルゲームの定義</h5><ul><li>ユーザー間で非同期のやり取りが発生する</li></ul><h4>ngCore</h4><ul><li>マルチプラットフォーム<ul><li>同一ソースでAndroidとiOSに対応</li><li>テスト環境はFlashにも対応</li></ul></li></ul><h5>ゲームの構成</h5><ul><li>ngCore上にゲームロジック/JavaScript</li><li>サーバ/APach+FCGI上に認証とか結果の書き込みをMobageサーバに</li></ul><h5>役割分担</h5><ul><li>ngCoreのクライアント<ul><li>アクションシーン</li><li>サーバ側で作ったデータの再生</li></ul></li><li>ゲームサーバ<ul><li>パラメーター保持、変化</li><li>アイテム管理</li><li>ミッションのスロットの目の決定など</li><li>ずる防止をするためサーバ側でロジックがある</li></ul></li></ul><h5>ngCoreの開発サイクル</h5><ul><li>node.jsで書かれたビルドサーバでビルドを行う。<ul><li>ファイルの結合とか</li></ul></li></ul><h5>コード</h5><ul><li>CJSライクなモジュール</li><li>クラスを作るsubclass関数</li><li>ゲームはmain関数から始まる</li><li>Core.UpdateEmitter でゲームループを回す</li></ul><h5>ゲームの基本構成</h5><ul><li>シンプルなクラス群<ul><li>Sceneクラスを継承してシームを作っていく</li><li>Sceneを遷移してゲームの遷移が行われる</li></ul></li><li>サーバ側からjsonのジョブスタックを受け取る<ul><li>ミッション結果なども配列で返ってくる</li><li>知らないジョブが来たら無視が基本方針</li><li>クライアントは順番に再生していくだけ</li><li>新しいミッションも簡単に追加できる</li></ul></li><li>サーバエラーがおきたらホーム画面に強制的に戻る</li></ul><h5>DnLig/ngGo</h5><ul><li>DnLib<ul><li>ゲーム開発の共通ライブラリ</li></ul></li><li>ngGo</li></ul><h5>開発拠点</h5><ul><li>サンフランシスコ</li><li>日本</li><li><p>パキスタン</p></li><li><p>SKypeチャットが主なインフラ</p></li><li>git<ul><li>git flow</li></ul></li><li>ドキュメントSphinx</li></ul><h5>ngGo/ngBuilder</h5><ul><li>– データ駆動で行えるように</li><li>- パラメーターチューニングのしやすさ</li></ul><h5>デバッグとテスト</h5><ul><li>デバッグメニュー<ul><li>サーバにデバッグ用画面がある</li></ul></li><li>Jasmineを使ってる</li></ul><h5>今後のngCore</h5><ul><li>3D対応、HTML5対応</li></ul><h4>まとめ</h4><p>JavaScriptベースで</p><h3>オフラインWebアプリケーションの作り方 (白石)</h3><p>Google Gearsを使ってオフラインアプリケーションを作ったことがある。</p><h4>オフラインWebアプリケーション</h4><h5>Google Gears</h5><ul><li>Google Gears終了 –&gt; HTML5へ以降を推奨<ul><li>HTML5を中心にするようになった</li></ul></li></ul><h4>オフラインでも読めるアプリの作り方</h4><ul><li>それほど実装は難しくない</li><li>アプリケーションキャッシュを利用すればいい</li></ul><h5>アプリケーションキャッシュとは</h5><ul><li>静的なリソースをキャッシュすることができる機能</li><li>ローカルキャッシュの利点</li><li>IE以外のブラウザでは実装されてる</li></ul><h5>キャッシュマニフェスト</h5><ul><li>リソースのリストを作成する</li><li>Titanium Mobileのリファレンスはローカルキャッシュされてる</li></ul><h5>アプリケーションキャッシュのJavaScript API</h5><ul><li>window.applicationCacheにJavaScriptから操作できるアプリケーションキャッシュAPIがある。</li></ul><h5>アプリケーションキャッシュを利用する上での注意点</h5><ul><li>キャッシュマニフェストを更新しないとリロードで反映しない</li><li>キャッシュ容量が限られている<ul><li>モバイルとかだと10MBぐらい</li></ul></li></ul><h4>オフラインでも書けるアプリの作り方</h4><ul><li>割りと面倒なもの</li><li>デスクトップアプリとやりたい事はあんまり変わらない</li></ul><h5>オフラインWebアプリを作るポイント</h5><ul><li>基本はリッチクライアント+同期機能</li></ul><h5>利用できるローカルストレージ</h5><ul><li>Web Storage</li><li>Web SQL Database</li><li>Indexed Database API</li><li>File API<ul><li>ドメインごとに仮想的な空間</li><li>セキュリティ的なものがあるため</li></ul></li></ul><h5>双方向同期</h5><p>かなり難しく面倒くさい – フェールセーフ – 更新の衝突 – 同期のタイミング – ネットワーク状態、データの状態管理 – ローカルDBのスキーマ管理/サーバのスキーマと2つできてしまう – ローカルDBのクオータ(5MBぐらい)</p><pre><code>- 容量の限界がきたときにどうするか
</code></pre><h4>まとめ</h4><ul><li>オフラインアプリケーションといっても読む/書くの2つがある</li><li>書く/同期的なアプリケーションはかなり面倒臭い<ul><li>割り切ったほうがいい</li></ul></li></ul><h3>スケールするUIについて – @monjudoh</h3><p>Objective-Cで非同期処理のチェーンライブラリとか</p><h5>要素数</h5><p>ループの中でbind/unbindしてたので大量に追加されたときに重たかったのでliveメソッドに変更 bindはここの要素に付けるから、要素が多いと死ぬ。delegateとかliveはその枠の方にイベント一個張るだけだから軽くてすむ。</p><h5>D&amp;D</h5><ul><li>ユーザが触れる範囲だけにイベントを付ける</li><li>D&amp;Dは複数のイベントから成り立つので複雑(down-&gt;move-up)</li></ul><h5>要素の生成</h5><ul><li>UITableView<ul><li>表示範囲+ぐらいのみを描画してる</li><li>再利用してる</li></ul></li></ul><h3>JavaScriptのテスト事情 –  @os0x</h3><ul><li>JavaScriptのテスト<ul><li>まだまだ未成熟</li></ul></li><li>二種類<ul><li>JavaScriptのテスト<ul><li>JavaScriptだけなので比較的わかりやすい</li></ul></li><li>JavaScriptを含めたテスト<ul><li>UIとかも含むインテグレーションテスト</li></ul></li></ul></li></ul><h5>インテグレーションテスト</h5><ul><li>インテグレーションテストは書くのが大変</li><li>動いてあることが保証できるので重要<ul><li>後から追加修正とかも</li></ul></li></ul><h5>インテグレーションテストの定番 – Selenium</h5><ul><li>インテグレーションテストは遅い</li></ul><h5>テスト実行環境</h5><ul><li>カピバラさん + Webkit</li></ul><h5>QUnit,Jasmine</h5><ul><li>Jasmineの方がアプリケーションテストは向いてる</li></ul><h5>jasmine-headless-webkit</h5><ul><li>jasmine のspecをCUI環境で実行できる</li></ul><h3>Titanium Mobile – Masui Yuichiro</h3><ul><li>ココログ</li><li>liblis</li><li>AKB</li><li>サイボウズLiveの</li><li>MobSnap</li></ul><h4>Titanium Mobile</h4><ul><li>JavaScriptだけでアプリを作成できる</li><li>Titanium Mobile のモジュール売買できる<ul><li> mobile market place</li></ul></li></ul><h4>モバイルのUX</h4><ul><li>それぞれのプラットフォームに合わせた形に変換する</li><li>それぞれに合わせたUIはUXに</li><li>タブバーの位置がAndroid/iPhoneで逆になったり</li></ul><h4>飯食う</h4><ul><li>追加モジュールとサポートのみが有料</li><li>認定トレーニング</li></ul><ul></ul><p>感想</p><ul><li>ちょっと落ち着きがなかった気がするの</li><li>あまり掘り下げた感じにはならなかったのは少しもったいない気がした。</li></ul><p>メモ環境</p><ul><li><a
href="http://mouapp.com/">Mou</a></li></ul><p> </p><ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 25px; font-weight: normal; font-style: normal; font-size: 13px; line-height: 1; font-family: inherit; list-style-type: disc; list-style-position: initial; list-style-image: initial; padding: 0px; border: 0px initial initial;"></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/1013/res2971/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Mozilla 勉強会＠東京 6thのアウトラインメモ</title><link>http://efcl.info/2011/1003/res2967/</link> <comments>http://efcl.info/2011/1003/res2967/#comments</comments> <pubDate>Mon, 03 Oct 2011 14:01:06 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[アウトライン]]></category><guid
isPermaLink="false">http://efcl.info/?p=2967</guid> <description><![CDATA[2011年10月1日に行われたMozilla 勉強会＠東京 6thのメモ イベントのページ: Mozilla 勉強会＠東京 6thTwitterのまとめ: Mozilla 勉強会＠東京 6th &#8211; Toget [...]]]></description> <content:encoded><![CDATA[<p>2011年10月1日に行われた<a
href="https://dev.mozilla.jp/events/workshop11/">Mozilla 勉強会＠東京 6th</a>のメモ</p><p>イベントのページ: <a
href="https://dev.mozilla.jp/events/workshop11/">Mozilla 勉強会＠東京 6th</a><br
/>Twitterのまとめ: <a
href="http://togetter.com/li/195486">Mozilla 勉強会＠東京 6th &#8211; Togetter</a></p><ul
style="font-family: Arial;"><li>14:30 – 15:00: 開場、発表者準備</li></ul><ul
style="font-family: Arial;"><li>15:00 – 15:10: Opening</li></ul><p>自己紹介の流れ。</p><div
style="font-family: Arial;">■15:10 – 15:50: Firefox for Developers – 開発者ツール＆セキュリティ編</div><div
style="font-family: Arial;">発表資料: <a
rel="nofollow" href="http://www.slideshare.net/dynamis/firefox-developer-tools">開発者ツールの紹介</a></div><div
style="font-family: Arial;">Firefox開発者ツール &#8211; Web Console</div><ul
style="font-family: Arial;"><li>コマンドの補完</li></ul><p>Inspector</p><div
style="font-family: Arial;"><ul><li>DOM Inspectorみたいなもの</li><li>要素を調査するツール</li><li>Style Inspector(開発中)</li></ul> CSS Doctor</div><div
style="font-family: Arial;"><ul><li>CSSの間違いとか</li></ul> ScrachPad</div><div
style="font-family: Arial;"><ul><li>エディタ</li><li>選択行のコードだけを実行できたりする。</li></ul><div>GCLI</div><ul><li>ubiquityみたいな感じの</li><li>CUIとGUI</li></ul> Source Map</div><div
style="font-family: Arial;"><ul><li>CoffeeScriptのような変換コードと元コードをマッピングしたたものを作る</li><li>変換前の言語</li></ul> Tilt</div><div
style="font-family: Arial;"><ul><li>DOMマップを3D化するアドオン</li></ul> <strong>about:Firefox</strong></div><div
style="font-family: Arial;">セキュリティとプライバシーの話</div><div
style="font-family: Arial;">発表資料: <a
rel="nofollow" href="http://www.slideshare.net/dynamis/firefox-security-features">セキュリティ機能の紹介</a></div><div
style="font-family: Arial;">Same Origin Policy</div><div
style="font-family: Arial;">Content Security Policy</div><ul
style="font-family: Arial;"><li>次世代のセキュリティポリシー<ul><li>XSSの攻撃防止</li></ul></li><li>コンテンツ種別で読み込み制御<ul><li>画像やCSSやJSなども制御できるようにする</li></ul></li><li>Webkitではほぼ開発されてる</li></ul><ul
style="font-family: Arial;"><li>デフォルトセキュリティポリシーがいろいろ強化される</li><li>CSPの使い方<ul><li>X-Content-Security-PolicyのHTTPレスポンスヘッダを送信</li><li>HTMLのメタタグは書き換えできたりするものだからヘッダーで</li><li>Apache でCSPの設定</li></ul></li><li>CSP対応に移行する<ul><li>JS,CSSは外部ファイルに</li><li>evalを使わない</li><li>ポリシー違反レポートでどこがおかしいのかも確認できる<ul><li>ヘッダーでレポートを報告するURLを指定してログを残せる</li></ul></li><li>CSPブックマークレットもある</li></ul></li></ul><p>HTTP Strict Transport Security</p><div
style="font-family: Arial;"><ul><li>HTTPSでの接続を要求するヘッダ</li></ul> X-Frame-Options</div><div
style="font-family: Arial;"><ul><li>クリックジャッキングとか</li></ul> Cross-Origin Resource Sharing</div><div
style="font-family: Arial;"><ul><li>クロスドメインでの読み込み許可</li><li>他のドメインから読み込まれてもいい場合の設定</li><li>XHR2とか</li></ul> ユーザ追跡拒否ヘッダ</div><ul
style="font-family: Arial;"><li>Do-Not-Trackヘッダ<ul><li>ブラウザ側でサイトに通知する</li><li>IE,Safariも対応</li><li>Chromeだけ非対応</li></ul></li><li>受け取ったらユーザー追跡をしない</li></ul><div
style="font-family: Arial;"><div>■15:50 – 16:30: Pano って拡張機能 teramako</div><div>発表資料: <a
rel="nofollow" href="http://teramako.github.com/doc/modest-20111001/">Pano って拡張機能</a></div><div>Panorama</div><ul><li>Firefox4から導入された</li><li>タブグループを管理するビュー<ul><li>アクティブなタブグループの切り替え</li></ul></li></ul> タブの種類</div><div
style="font-family: Arial;"><ul><li>ピン止めタブ(AppTab)</li><li>グループの属するタブ</li><li>グループに属さないタブ(Firefox7で廃止)</li></ul> Pano できること</div><div
style="font-family: Arial;"><ul><li>グループの作成/削除</li><li>グループ名の変更</li><li>D&amp;D操作</li></ul> 実装の仕組み</div><div
style="font-family: Arial;"><ul><li>panoramade上で起こったイベントを拾ってビューを作ってる<ul><li>tabopenなど</li><li>起こらないイベントは上書きして起こす</li></ul></li><li>基本的にはビュー</li></ul> 頑張った所</div><div
style="font-family: Arial;"><ul><li>アイコンはSVG<ul><li>いろいろな場所で使われてる</li><li>使いまわしたい -&gt; SVGで作る</li></ul></li><li>SVG<ul><li>ベクターなので拡大縮小できる</li><li>ファイルサイズも小さい</li></ul></li><li>about:addonsでアイコンが表示されてない<ul><li>アイコンのサイズが指定されてなかった</li><li>SVG内にサイズの指定した</li></ul></li><li>タブ、Panoramaから発生するDOM Eventを拾う<ul><li>Panoramaから発生しないEvent<ul><li>グループが作成された</li><li>グループから削除された</li><li>グループから移動した</li></ul></li><li>取れないEventは無理やり発行させる<ul><li>Gropuが作成されたときに起きるイベントを上書きする</li></ul></li></ul></li><li>GroupItems.registerの上書き<ul><li>元関数を実行</li><li>DOM Eventを発行</li><li>コールバックシステムに関数を登録してDOM Eventを発行させる</li></ul></li></ul> 起動速度の改良</div><div
style="font-family: Arial;"><ul><li> 起動時のスクリプトは最小限<br
/><ul><li>必要なときにロードさせる</li><li>mozUSSubScriptLoaderの使用</li></ul></li><li>必要なときに取得<ul><li>getterの使用</li></ul></li><li>速い読み込み<ul><li>Firefox8 から mozUSSubScriptLoader もキャッシュされる</li></ul></li></ul> 実装方法<br
/><ul><li>最初の読み込みは必要最小限<ul><li>40行ほど</li><li>最初はロードするものを書いておいて、ロードしたときにそれを上書きする</li></ul></li><li>getterの使用<ul><li>XPCOMUtil.jsmを使用してgetterを使いやすくする</li><li>defineLazyGetter</li></ul></li></ul> コンテンツの遅延読み込み</div><div
style="font-family: Arial;"><ul><li>bartab<ul><li>起動したときはタブはできるが、ロードはされない</li><li>タブが選択されたときに初めてロードされる</li></ul></li><li>nsISessionStoreが鍵<ul><li>短いコードで実現する</li></ul></li></ul> 非アクティブなグループ内に開くには</div><div
style="font-family: Arial;"><ul><li>Panoramaとバッテングして上手く行かなった</li><li>上手い解決方法が見つからない<ul><li>setTimeoutでぐるぐるー</li></ul></li></ul> パネルでD&amp;Dするために</div><div
style="font-family: Arial;"><ul><li>パネルをドラッグする前に閉じないようにする<ul><li>noAutohide = true</li></ul></li><li>メニューボタンを押したときは閉じない様にする</li></ul><div>■16:40 – 17:20: restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク &#8211; Piro</div><div>発表資料: <a
rel="nofollow" href="http://piro.sakura.ne.jp/xul/doc/20111001workshop11/">restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク</a></div><div>Add-on SDKの目的</div><ul><li>誰でも開発できるようにする</li><li>高機能なアドオンの開発は目的ではなかった</li><li>今までのアドオン開発<ul><li>自由すぎた</li><li>敷居高い</li><li>何でもできた</li></ul></li><li>SDKを使えばある程度制限された状態で簡単作れるようになる</li></ul> Add-on SDKはGreasemonkeyスクリプトと同じような立ち位置</div><div
style="font-family: Arial;">restartlessの目的</div><div
style="font-family: Arial;"><ul><li>再起動不要なアドオンを今までの開発と同じ方式で作れるように</li><li>Mozilla特有の事情を必要なのも従来方式</li><li>対象も従来の開発者向け</li></ul><div>restartlessの使い方</div><ul><li>main.jsの内容<ul><li>startup()で読み込まれる</li><li>専用の名前空間で実行される</li><li>shutdown()を定義</li></ul></li><li>ユーティリティ<ul><li>location.href</li><li>load関数 = Cu.importと互換</li><li>require関数</li><li>existsでファイルの有無を調べる</li><li>resolve 相対パスの解決</li><li>EXPORTED_SYMBOLS</li><li>doAndWait<ul><li>非同期処理を同期的に扱うときに使用</li></ul></li><li>jstimer</li><li>pref</li><li>locale<ul><li>国際化</li></ul></li><li>config</li><li>WindowManager<ul><li>DOMWindowにアクセスする</li><li>ウィンドウのopenを監視</li></ul></li><li>KeyboardShortcut<ul><li>ショートカットの定義</li></ul></li><li>jsDefferred</li></ul></li></ul> restartlessの利用例</div><ul
style="font-family: Arial;"><li>ALT</li><li>back to owner tab</li><li>Fox Splitter</li></ul><p>restartlessのコードリーディング</p><div
style="font-family: Arial;"><ul><li>index.rdf<ul><li>bootstrap=&#8221;true&#8221;で再起動不要と認識される</li></ul></li><li>bootstrap.js<ul><li>モジュールのロードとか</li></ul></li><li>loader.js<ul><li>ユーティリティとかが定義されている</li><li>doAndWait<ul><li>スレッドをたててメインループを回す実装</li></ul></li></ul></li><li>main.js<ul><li>各アドオンのコード</li></ul></li><li>module<ul><li>各ライブラリが入ってるので、削除すれば消える</li></ul></li></ul><div>■17:20 – 18:00: Lightning Talk</div></div><ul
style="font-family: Arial;"><li><a
rel="nofollow" href="http://www.slideshare.net/knagato/mozilla-workshop-20111001-lt-addon-sdk">アドオン SDK を利用した初めてのアドオン開発</a>– by knagato<br
/><ul><li>初めてアドオン開発する人が対象</li><li>SDKを使ったアドオン開発を特徴<ul><li>HTMLやJavaScriptなどが中心で、XULやXPCOMなどMozilla特有の機能を使わなくても開発できる</li></ul></li><li>開発環境の種類<ul><li>Add-on BuilderをWeb上での開発<ul><li>再起動不要なのでその場で試せる</li></ul></li><li>Addon SDKを使った開発<ul><li>コマンドラインベース</li></ul></li></ul></li><li>Add-on SDKのチュートリアル</li></ul></li><li><a
rel="nofollow" href="http://www.p2pwf.com/">Thunderbirdアドオンによるワークフロー開発について</a>– by Nakashima<br
/><ul><li>提案するツール<ul><li>自分自身でのプロセス改善が可能</li><li>やり取りの簡略化ができる</li></ul></li><li><a
href="http://www.p2pwf.com/">http://www.p2pwf.com/</a> に仕様の詳細</li></ul></li><li><a
rel="nofollow" href="http://www.slideshare.net/saneyuki/forking-secure-login">Forking Secure Login</a> – by saneyuki_s<br
/><ul><li>Secure Loginアドオンのフォークの話<ul><li>現在はメンテナンスアップデートのみになってる</li><li>全面改装してる</li></ul></li><li>一部機能の省略</li><li>レガシーコードの除去</li><li>doorhanger対応<ul><li>Firefoxに入ってるSSLのポップアップするやつ</li></ul></li></ul></li><li><a
rel="nofollow" href="http://0-9.sakura.ne.jp/pub/lt/modest/start.html">jQueryで破棄されたrequestAnimationFrameとJSでのアニメーション実装で注意すること</a> – by <a
rel="nofollow" href="https://twitter.com/#%21/kyo_ago">kyo_ago</a><br
/><ul><li>requestAnimationFrame<ul><li>setIntervalの問題点としてアニメーション向けではない</li></ul></li><li>jQuery 1.6から削除された<ul><li>setIntervalとrequestAnimationFrameが衝突してキューがたまる</li><li>タブがバックグランドにあるときの挙動</li></ul></li></ul></li><li><a
rel="nofollow" href="http://d.hatena.ne.jp/mooz/20111002/p1">ES.next WeakMap</a>– by mooz (<a
rel="nofollow" href="https://twitter.com/#%21/stillpedant">@stillpedant</a>)<br
/><ul><li>WeakMap = 連想配列</li><li>Firefox6から利用可能</li><li>{}やObject()と比較して<ul><li>keyにオブジェクトが指定可能<ul><li>ハッシュはkeyに文字列しか指定できない(toStringされてる)</li><li>WeakMapはkeyにオブジェクトが指定可能<ul><li>オブエジェクトしか指定できない</li><li>プリミティブ値はエラー</li></ul></li><li>オブジェクトの外部拡張<ul><li>DOMノードに独自プロパティは危険</li><li>ES5ではオブジェクトの拡張がfreezeできる</li><li>オブジェクト自体は拡張しないで、外部に付加情報を持つ</li><li>WeakMapを利用する<ul><li>キーとして外部情報をもたせる</li></ul></li></ul></li></ul></li><li>keyに指定されたオブジェクトを弱く参照<ul><li>CGにたいして</li></ul></li></ul></li></ul></li><li>Firefox4以降のE4X– by teramako<ul><li>ワイルドカード<ul><li>*が指定子に使える</li></ul></li><li>属性アクセス<ul><li>@が使える</li></ul></li><li>Firefox3.6までは上記のものがE4X以外でも使えた<ul><li>Firefox4以降は禁止された</li><li>ざんねんでしたね</li></ul></li></ul></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/1003/res2967/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>無料で読めて定期更新されているIT系の電子雑誌</title><link>http://efcl.info/2011/0905/res2963/</link> <comments>http://efcl.info/2011/0905/res2963/#comments</comments> <pubDate>Mon, 05 Sep 2011 13:38:47 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[まとめ]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[pdf]]></category> <category><![CDATA[programing]]></category> <category><![CDATA[セキュリティ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2963</guid> <description><![CDATA[PDF形式などで配布されていて、定期的に更新があるサイトの紹介 今だとブログがいっぱいありますが、まとまった形態,書式である良さというのもあるので、ブログとはひと味違う感じの所を中心に。 デジタルプラクティス 発行は季刊 [...]]]></description> <content:encoded><![CDATA[<p>PDF形式などで配布されていて、定期的に更新があるサイトの紹介 <br
/>今だとブログがいっぱいありますが、まとまった形態,書式である良さというのもあるので、ブログとはひと味違う感じの所を中心に。</p><h4><a
href="https://www.ipsj.or.jp/15dp/dp-index.html">デジタルプラクティス</a></h4><p>発行は季刊で1月（創刊号のみ2月），4月，7月，10月に発行されるのをPDFで読める。 <br
/>内容も多岐にわたっていて、論文というほど堅くはないものもあり読みやすい。</p><blockquote
cite="https://www.ipsj.or.jp/15dp/foreword.html"><p>デジタルプラクティスでは，実務の現場におけるIT 実践例・経験・ノウハウのレベルの成果でも社会的に有用なものならば歓迎し，IT実践における新たな発展を先導するような論文を積極的に採録します <br
/><cite><a
href="https://www.ipsj.or.jp/15dp/foreword.html">創刊に当たって</a></cite></p></blockquote><p>また、著名な人も結構寄稿されているので、読みたいものが何かしらあると思います。</p><ul><li><a
href="https://www.ipsj.or.jp/15dp/Vol2/No2/IPSJ-DP0202003.pdf">プログラミング言語Rubyの世界普及戦略</a> <br
/>まつもとゆきひろ</li><li><a
href="https://www.ipsj.or.jp/15dp/Vol2/No2/IPSJ-DP0202005.pdf">ウェブブラウザLunascapeの起業戦略と技術戦略</a> <br
/>近藤秀和</li><li><a
href="https://www.ipsj.or.jp/15dp/Vol1/No1/IPSJ-DP0101004.pdf">クラウド時代のユーザインタフェースの方向性 <br
/>～サービスサイエンスでUI の方向性を検証する～ </a> <br
/>鹿島泰介</li></ul><p>などなど</p><h4></h4><h4><a
href="http://www.ipa.go.jp/about/NYreport/index.html">情報処理推進機構：ニューヨークだより</a></h4><p>IPAにより月一でPDF形式で発行される。 <br
/>アメリカのIT関係についての最新事情を扱っていて、ものすごく詳しく書かれている。 <br
/>ITやスマートフォンなどのデジタル機器(OSについても)やITと政治についてなど、かなり詳細な情報を掲載している。 <br
/>無料とは思えない質だったり、情報元のソースを脚注で入れてくれるので、情報元自体も見られてとても良い感じになっている。おすすめです。</p><h4><a
href="http://wizardbible.org/">Wizard Bible</a></h4><blockquote
cite="http://wizardbible.org/"><p>Wizard Bibleとは、基本的に毎月リリースしているWebマガジンです <br
/><cite><a
href="http://wizardbible.org/">Wizard Bible</a></cite></p></blockquote><p>発行は月一でtxt形式で発行されている(最近不定期だった気がする) <br
/>内容は<a
href="http://wizardbible.org/wbQandA.html#1">どういったテーマで書けばいいのか？</a>を見ると分かると思いますが、セキュリティ関係のものが中心となっています。それに関係するプログラミングや数学などの内容も扱われています。</p><h4><a
href="http://www.is.doshisha.ac.jp/isreport">IS Report System</a></h4><blockquote
cite="http://www.is.doshisha.ac.jp/isreport"><p>本サイトは 「同志社大学生命医科学部医情報学科 医療情報システム研究室」 及び 「同志社大学工学部インテリジェント工学科 知的システムデザイン研究室」 の所有する研究報告である ISレポートの管理システム <br
/><cite><a
href="http://www.is.doshisha.ac.jp/isreport">IS Report System</a></cite></p></blockquote><p>医療やソーシャルメディア、インターネットや携帯電話などの電子機器について書かれたレポートが公開されています。 <br
/>HTMLとepub形式(一部PDFも)で配布されていて、図などが入ったものも多く内容も結構読みやすいです。 <br
/>結構書かれているジャンルが幅広い気がします。</p><h4></h4><h4><a
href="http://pragprog.com/magazines">The Pragmatic Bookshelf | Read Our Magazines</a></h4><p><a
href="http://pragprog.com/">Pragmatic Bookshelf</a>により毎月発行されるプログラミング関係の電子雑誌。 <br
/>HTML PDF epub mobiが用意されている。</p><h3>番外編</h3><p>タイトルから外れて有料の雑誌。 <br
/>といっても海外だと電子版の雑誌は珍しくないので、気になったものだけ。</p><h4><a
href="http://www.jsmag.com/">JsMag &#8211; the magazine for JavaScript developers</a></h4><p>JavaScriptについて扱う月刊誌。 <br
/>一号毎に購入($4.99)か一年分まとめて購入($53.88 )ができる。 <br
/>日本にもこういうの欲しいですね。。 <br
/></p><h4><a
href="http://hackermonthly.com/">Hacker Monthly &#8211; Print Magazine of Hacker News</a></h4><p><a
href="http://news.ycombinator.com/">Hacker News</a>で話題になったものを厳選して扱う月刊誌。</p><p><strong>おわり</strong></p><p>電子雑誌というタイトルにしたけど、別に雑誌じゃないものが多い気がする。 <br
/>今はブログやソーシャルメディア経由でだいたいの情報はカバーできるだろうけど、論文や雑誌、スライドなどある程度労力を伴って書かれたものにはブログとは異なるものがあると思ってるので、こういうものも読んでいきたいですね。</p><blockquote
cite="https://twitter.com/#!/azu_re/status/75878368695959552"><p>JavaScriptの論文かき集める仕組み欲しい。日本でも小さなもの含めて年間二桁は書かれてる感じする。 <br
/><cite><a
href="https://twitter.com/#!/azu_re/status/75878368695959552">Twitter / @azu_re: JavaScriptの論文かき集める仕組み欲しい。日 &#8230;</a></cite></p></blockquote><p>とか思ったりするのはそういう理由です。</p><p>他にもおすすめがありましたらよろしくお願いします。</p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0905/res2963/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>第３回ブラウザー勉強会 アウトラインメモ</title><link>http://efcl.info/2011/0820/res2954/</link> <comments>http://efcl.info/2011/0820/res2954/#comments</comments> <pubDate>Sat, 20 Aug 2011 13:20:03 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[イベント]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[アウトライン]]></category> <category><![CDATA[勉強会]]></category><guid
isPermaLink="false">http://efcl.info/?p=2954</guid> <description><![CDATA[2011年8月20日開催された第３回ブラウザー勉強会に参加してきたので、その時のメモです。 TwittterのログはTogetter &#8211; 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」にまとまっ [...]]]></description> <content:encoded><![CDATA[<p>2011年8月20日開催された<a
href="http://bws.hebikuzure.com/">第３回ブラウザー勉強会</a>に参加してきたので、その時のメモです。</p><p>Twittterのログは<a
href="http://togetter.com/li/176968">Togetter &#8211; 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」</a>にまとまっています。</p><p><span
id="more-2954"></span></p><p><span
style="font-size: 18px; font-weight: bold;">第3回 ブラウザー勉強会</span></p><h2>午前の部 :コミュニティー セッション</h2><h3 id="kyo_agohttp:tech.kayac.comtestqunitcui">ショートセッション : kyo_ago  (http://tech.kayac.com/) 「Testで始まる物語（ストーリー） QUnit CUIの紹介」</h3><p>[<a
href="http://www.ustream.tv/recorded/16762261">Ustream</a>] [<a
href="http://jsrun.it/kyo_ago/browserws3">発表資料</a>]</p><h4 id="jqueryplugintest">jQuery Plugin testフレームワーク</h4><ul><li>非同期実行されるコードのテストが面倒</li><li>UIのテストが面倒</li></ul><p>テストコードは次の３つから構成される</p><ul><li>テスト前のHTML</li><li>テストするコード</li><li>テスト後のHTML</li></ul><p>コードにすると以下みたいな感じ。</p><pre><code>&lt;script type="dom/base" /&gt; &lt;script type="test/code" /&gt; &lt;script type="dom/comp" /&gt;</code></pre><ul><li>iframe内でこれを行うので、セレクタなどの心配が不要</li><li>自動的にdiffをとれる</li><li>複数端末上で分散実行</li><li>複数ブラウザでの比較</li><li>pluginのテストコードを生成</li></ul><hr
/><h3 id="usingwin32apiinsidechromeextensionbrowserws">ショートセッション : はせがわようすけ 「Using Win32 API inside Chrome Extension」</h3><p>[<a
href="http://www.ustream.tv/recorded/16762480">Ustream</a>] [<a
href="http://utf-8.jp/public/20110820/chrome.pptx">発表資料</a>]</p><p>Chrome Extensionの構成</p><ul><li>HTML + JavaScript</li><li>マニフェストとリソース</li></ul><h4 id="chromeextention">Chrome Extentionの制約を超える</h4><p>NPAPI DLL &#8211; プラグインを書くためのもの</p><ul><li>OSに依存する</li><li>Extension内にplugin DLL<ul><li>リモートHTMLから直接利用は無理</li></ul></li></ul><p>マニフェストにdllのロードパスを書くだけで読み込める。</p><ul><li>拡張の制約が超えられる</li><li>化石のようなもの</li></ul><h4 id="npwin32">NPWIN32</h4><p>何でも使える汎用DLL * JavaScriptから何でもできる</p><p>JavaScriptからネイティブコードを呼び出すことができる</p><ul><li>Windowsの方のalertを呼び出す</li><li>デスクトップ情報の取得</li></ul><p>NaCLとの違い * NaCLは OSネイティブの機能は呼び出せない。</p><hr
/><h3 id="normalianhttp:d.hatena.ne.jpwaritohutsu">ライトニング トーク : normalian さん (http://d.hatena.ne.jp/waritohutsu/)</h3><p>[<a
href="http://www.ustream.tv/recorded/16762671">Ustream</a>] [発表資料]</p><p>「ブラウザ戦国時代で考えるクロスブラウザなテスト方法（仮題）」</p><ul><li><p>ブラウザのバージョンアップ頻度が高くなった</p></li><li><p>ブラウザレンダリングの差異</p></li><li>JavaScriptのイベントハンドリングの差異</li><li>HTMl5の対応状況の差異</li></ul><h4 id="jquerymodernizr">jQuery &amp; Modernizr</h4><h4 id="jquery">jQuery</h4><ul><li>jQuery Core</li><li>jQuery Mobile</li><li>jQuery Template</li><li>jQuery Validate</li></ul><h5 id="modernizr">Modernizr</h5><ul><li>ブラウザのHTML5対応度合いの確認</li></ul><p>jQuery UIとjQuery Mobileはソースコードは一部流用されている。 混ぜると危険。</p><hr
/><p><span
style="font-size: 14px; font-weight: bold;">モバイルブラウザのタブの傾向と対策 -Androidスマフォを主に- saneyuki_s</span></p><p>[<a
href="http://www.ustream.tv/recorded/16762887">Ustream</a>] [<a
href="http://www.slideshare.net/saneyuki/ss-8930380">発表資料</a>]</p><ul><li><p><a
title="モバイルブラウザのタブの傾向まとめ" href="http://www.slideshare.net/saneyuki/ss-8930380">モバイルブラウザのタブの傾向まとめ</a> <strong>スマートフォンブラウザの「タブ」の様式にデファクトがない</strong></p></li><li><p>ウィンドウ式</p></li></ul><ul><li><p>メニューからウィンドウを出して切り替える</p></li><li>画面下部に表示<ul><li>Opera</li><li>Sleipnir Mobile</li><li>サムネイル付きが多くてわかりやすい</li></ul></li><li>画面上部に表示<ul><li>Dolphine Browser</li><li>タブレットでは一般的</li></ul></li><li>FIrefox Mobile式<ul><li>サイドに格納する</li></ul></li></ul><p><strong>番外</strong></p><p>* IE9 Mobile &#8211; タスクスイッチャーと連動<br
/>* Sleipnir Mobile &#8211; タブグループ機能 -  面倒くさい工程</p><h4>まとめ</h4><p>様式は落ち着かないだろう。</p><hr
/><h3 id="googlechrome:hebikuzure">Google Chromeはエンタープライズの夢をみるか : Hebikuzure</h3><p>[<a
href="http://www.ustream.tv/recorded/16763031">Ustream</a>] [<a
href="http://www.slideshare.net/hebikuzure/chrome-gpo-availability">発表資料</a>]</p><ul><li>ユーザ権限でインストールできる</li><li>勝手にアップデートできる</li><li>Google Chrome Frame</li></ul><p>管理者が投げ捨てる可能性</p><h4 id="chrome">Chrome にはグループポリシー機能がある</h4><p>(Windows版について) <strong><a
href="http://www.chromium.org/administrators">Documentation for Administrators &#8211; The Chromium Projects</a></strong></p><p>Chromum Projectの方に書かれてる</p><ul><li>HTTP認証の動作</li><li>コンテンツの設定</li><li>検索プロバイダ</li><li>パスワードマネージャー</li><li>プロキシ</li><li>ホームページ</li><li>拡張機能</li><li>スタートアップページ</li><li>Google Chrome Frameの動作(無効にできる)</li><li>Google Updateの動作<ul><li>Google製品の個別で自動アップデートの有無</li></ul></li><li>Google Installerによるソフトウェアのインストールの設定</li></ul><p>&nbsp;</p><p>Chromeのmsiインストーラーもある(?msi=trueでダウンロード)</p><ul><li>Active Directorで配布できる</li><li>特定のバージョン縛りができる</li></ul><p>グループポリシーのテンプレート(ADM,ADMX)が配布されているので、グループポリシーの追加ができる。<br
/>PolicyDefinitionsというフォルダーにコピーする事で入れることでも読み込める</p><h4 id="qa">Q&amp;A</h4><ul><li>セキュリティアップデートも無効にできる</li></ul><h2 id="web">午後の部 : テーマ セッション 「ブラウザーと Web が描く『夢』」</h2><h3 id="mozillajapanopennessinnovationandopportunity">加藤 誠さん (Mozilla Japan) 「Openness, Innovation, and Opportunity」</h3><p>[<a
href="http://www.ustream.tv/recorded/16764957">Ustream</a>] [<a
href="http://www.slideshare.net/djraven/openness-innovation-and-opptunity">発表資料</a>]</p><p>Mozillaのミッション「Openness, Innovation, and Opportunity」</p><p>非営利法人が扱えるお金が制限されているので、Mozilla Corporationという株式会社ができた。</p><p><strong>Mozilla Labsをメインに</strong></p><ul><li>実装だけではなくて、モックなどでもあり</li><li>RUST 言語</li><li><p>将来のFirefoxで取り入れられることも</p><ul><li>FIrefox Syncなど</li></ul></li><li>UI/UX</li><li>WEB API</li></ul><p>などがLabの範囲</p><h4 id="designchallenge">Design Challenge</h4><ul><li>特定のテーマでデザインやモックでアイデアを募る</li><li>アイデア(デザイン)の発表する場所</li><li>実装ではなく、あくまでもアイデア</li></ul><h4 id="testpilot">Test Pilot</h4><ul><li>ユーザーのブラウザ利用データーを取得して解析<ul><li>収集用のアドオン</li><li>結果を公開</li></ul></li><li>データが偏る傾向があるため、偏りを取る手法を使う</li><li>ユーザーのクリックするホットスポット調査とか</li></ul><p>&nbsp;</p><h4 id="prospector">Prospector</h4><ul><li>ユーザーが目的のサイトにたどり着くためのUXの模索</li><li>Prospectorは実装ありきのアイデア</li></ul><p><strong>Firefox SHARE / F1</strong></p><p>ソーシャルネットワークとの結合</p><h4 id="qa">Q&amp;A</h4><p>アップデートスピードが早くなったのはなんで? * Webの流れが早くなってる</p><p>UI/UXのアプローチ</p><ul><li>目線の移動がおかしいとか</li><li>公開された議論してるので、おかしいとクレームがくる</li></ul><p>検索バーとURLバーの統合について</p><ul><li>一応Firefoxとしてもそういう議論がある</li><li>ユーザーからのフィードバック次第になる。</li></ul><h3 id="danieldavisoperajapanhtml5">Daniel Davis さん (Opera Japan) 「ブラウザの未来：HTML5の先には？」</h3><p>[<a
href="http://www.ustream.tv/recorded/16765907">Ustream</a>] [発表資料]</p><p>1899年に書かれた未来2000年について。</p><p>未来的なものを想像しても、洋服や建物が変化していない。</p><h4 id="morethanhtml5">More than HTML5</h4><p><strong>Device APIs</strong></p><ul><li>まだまだカメラでデータ取得は先だけど 。</li><li>Web APIとARを連動してやるなど(Tweetの取得など)</li></ul><p>逆にカメラにブラウザが乗ることもあり得る</p><h4 id="morelikeaplatform">More like a platform</h4><p>Web on TV * ブラウザが載ってるTVも増えている * ブラウザはWebを見るためではなく、Appとして利用されてる * 多くのメーカーはSVGでUIを使ってる(レンダリングエンジンがブラウザ)</p><ul><li>TVのUI(user input = リモコン)は最悪<ul><li>これが改善されないとWeb on TVが流行らないかも</li><li>ジャイロリモコン</li><li>キーボードタイプ</li></ul></li></ul><p>ブラウザの進化</p><ul><li>ブラウザによりUIが静的から動的に</li><li>動的からインタラクティブへ<ul><li>ペーパーレス = 静的なものがまだ多い =&gt; マルチメディア</li></ul></li></ul><p>履歴書の事例 * 履歴書に動画を入れる * マルチメディアをもっと普通のドキュメントに使う</p><p>再生だけではなく、作成もブラウザで? * contenteditable * 今はまだ非力</p><h4>ネイティブよりウェブ?</h4><ul><li>JavaScriptは早く、パワフルになった</li><li>比較的に書きやすく勉強しやすい</li><li>100%オープン<ul><li>ひとつの会社などにコントロールされてない</li><li>未来的にそれはいいこと</li></ul></li></ul><h4>未来の予想は人によって違う</h4><ul><li>ウェブはひとつの団体にコントロールされないのが重要</li><li>コントロールされないウェブは未来も一緒に作る</li></ul><h4 id="qa">Q&amp;A</h4><p>ブラウザがいろいろなものに乗った場合、それぞれに対して最適なUIは異なるが、それを上手くやる工夫</p><ul><li>OSとブラウザは大きくは変わらない</li><li>ブラウザを一番下において、その上に何かをかぶせて作らせれば異なるものに対して拡張を作りやすい。</li></ul><h3 id="uxweb">春日井 良隆さん (日本マイクロソフト株式会社 UXエバンジェリスト) 「マイクロソフトにとってのWebって？」</h3><p>[<a
href="http://www.ustream.tv/recorded/16766640">Ustream</a>] [<a
href="http://www.slideshare.net/ykasugai/web-8931345">発表資料</a>]</p><p>MSとしてIE6のシェアを減らすのに取り組んでいる。 @mskkie の中の人 with ミゾグチさん</p><p>管理者キット9(IEAK 9) * カスタマイズしたIEをパッケージ化、配布、管理するためのツール<br
/>なんとか版IEというのはIEAKでパッケージ化したものを使ってる</p><p>The Internet Explorer 9 Blocker Toolkit<br
/>WindowsアップデートやMSアップデートを管理するツール</p><p>HTML5 Native to WIndows</p><ul><li>ウェブの技術をネイティブに持っていく</li><li>ウェブサイトをアプリケーションと同じように使う方向性</li></ul><p>タブレットPCは失敗した…</p><p>HTML5+JavaScriptでアプリケーションを作る。</p><p>MSは同じ表示をするという基本思念がある。</p><p>Windowsはカーナビ専用のOSがある。</p><p>Windows Phone はIE9ベースのブラウザ</p><p>MSと携帯会社である程度端末の取り決めがある</p><ul><li>ボタンは3つを付ける</li><li>性能についても取り決めがある</li><li>解像度は固定</li></ul><p>IE10は8-12週でリリースする。</p><p><strong>MSはブラウザ固有の機能は付けない方向</strong></p><p>IEの拡張性について</p><ul><li>IEはカスマイズは上げて行く方向ではない感じ</li><li>拡張を簡単に作る仕組みはまだ見検討</li></ul><p>IE7について</p><ul><li>IE7さんはわすられています。</li><li>まずはIE6からなくしていく。</li></ul><p>IDE, Expression について</p><ul><li>Expressionはdevよりの作り</li><li>デザインはDWの方がいいかも</li><li>ExpressionはそっけないVisual Studioな感じ</li></ul><ul><li>IE10は今年はでない</li><li>Windows 8 がタブレット</li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0820/res2954/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>サイボウズラボユース中間結果発表会アウトラインメモ</title><link>http://efcl.info/2011/0820/res2949/</link> <comments>http://efcl.info/2011/0820/res2949/#comments</comments> <pubDate>Fri, 19 Aug 2011 16:57:50 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[イベント]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[まとめ]]></category> <category><![CDATA[アウトライン]]></category> <category><![CDATA[最適化]]></category> <category><![CDATA[正規表現]]></category><guid
isPermaLink="false">http://efcl.info/?p=2949</guid> <description><![CDATA[サイボウズ・ラボユース 「中間成果報告会」に参加してきたのでそのときのメモです。かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。(特に手元でスライドがあるわけじゃないので、ちゃんとメモれてす [...]]]></description> <content:encoded><![CDATA[<p><a
href="https://job.rikunabi.com/2012/company/blog/detail/r646010018/42/">サイボウズ・ラボユース 「中間成果報告会」</a>に参加してきたのでそのときのメモです。<br
/>かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。<br
/>(特に手元でスライドがあるわけじゃないので、ちゃんとメモれてすらないです…)</p><p>環境記録<br
/>メモソフトウェア: <a
href="https://github.com/bodhi/MarkdownEditor">bodhi/MarkdownEditor &#8211; GitHub</a></p><h2>サイボウズラボユース中間結果発表会</h2><p>NDAは結ばずに、成果をオープンすることを条件に支援を行う。</p><ul><li><a
href="http://labs.cybozu.co.jp/recruit/youth.html">サイボウズ・ラボユース</a></li></ul><h2 id="bysn_monochr">「ロボット制作を支援するログ解析プログラムの開発」 by @sn_monochr</h2><h4>マイコンカー</h4><p>赤外線センサーを使ってリアルタイムで制御するカー。 C言語で開発を行う。</p><h4>マイコンカーの走行ログ</h4><p>走行ログ</p><ul><li>制御プログラムの動作状態</li><li>赤外線などのセンサー状態</li></ul><p>メモリが限られているので、データはシフト演算などを使って一つにまとめて保存、送信を行う。 これらのデータを可視化していくため、解析ソフトウェアを開発する。(Windows)</p><h4>走行ログの可視化</h4><ul><li>データに基づいたマシン調整が可能になる</li><li>１つのソフトウェアに統合</li></ul><h4>夏の合宿</h4><p>目標設定をして合宿を行った</p><ul><li>走行ログの可視化</li></ul><p>ラインの中でモードの変更をライン色の変更してる。</p><ul><li>無線通信でログのやり取りをするのが今後目標</li></ul><p>走るコースに、車線変更や直角カーブなどのマークが書かれていて、それを読み取ってモードを変えることで動きを変える。</p><hr
/><h2 id="jitbysinya8282">「世界最速の正規表現JITエンジンの実装」by @sinya8282</h2><ul><li>正規表現エンジンの作成</li><li>正規表現の歴史は古い 1960～</li><li><ul><li>実装はたくさんある</li></ul></li><li><ul><li>いろいろやられている</li></ul></li></ul><p>「正規表現エンジンの開発」には意義があるのですか? -&gt; 車輪は車輪でも「最速の車輪」を開発する</p><p><em>正規表現エンジンRegen(れーげん)の開発</em></p><h3 id="regen">Regen</h3><p>動的コード生成</p><ul><li>Xbyak でJIT regex</li><li>正規表現に合わせて、プログラムがプログラムを生成する</li><li>正規表現コンパイルに最適化レベル導入(O0 &#8211; O4)</li><li><ul><li>最適化しにくいパターンもある</li></ul></li></ul><p><strong>マッチング並列化</strong></p><ul><li>並列化のための特殊なモデルを実装</li></ul><h4>ベンチマーク</h4><p>Google RE2との比較。</p><p>JITしても3-5倍の高速化 -&gt; 今はメニーコアの時代 -&gt; 正規表現の並列化</p><ul><li>6コアでガクって落ちるのはアーキテクチャの問題</li></ul><h4>まとめ</h4><p>高速化の二台手法は実装した、成果もでた</p><ul><li>JIT</li><li>並列化</li></ul><p><strong>これからの課題</strong></p><ul><li>実システムへの応用、ツールの作成</li><li>正規表現エンジンじゃないと処理できない問題</li><li><ul><li>なければ作る</li></ul></li><li>ライブラリとして今夏中に整えたい</li></ul><h4>質問</h4><ul><li>正規表現 &lt;-&gt; インデクシング</li><li>フィルターなどの分野では、流れるデータに対して正規表現の活用などもある。</li><li>禁止ワードのORつなぎみたいなものは正規表現より向いてる方法があるとか</li></ul><hr
/><h2 id="javascriptbytakuto_h">「JavaScriptによる型推論器の実装と可視化」by takuto_h</h2><ul><li><a
title="JavaScriptで型推論器を作りました - takuto_hの日記" href="http://d.hatena.ne.jp/takuto_h/20110401/ibis">JavaScriptで型推論器を作りました &#8211; takuto_hの日記</a></li></ul><p>型推論</p><ul><li>型を書かなくて楽</li><li>型があるんで安全</li></ul><h4>引数の型</h4><pre><code>function foo(bar){ return bar + 1; }</code></pre><p>どのような演算子を呼んでいるかを見て、型を推論する</p><h4>型推論は方程式</h4><ul><li>値が広志位なら型が等しい</li><li>方の上での方程式を集めて解くのが型推論</li></ul><p>コンピューターでは解くのか</p><blockquote><p>a = b, b = c, c = d, d= int</p></blockquote><p><code>&lt;a&gt;, &lt;b&gt;, &lt;c&gt;, &lt;d&gt;</code>というオブジェクトとintという物体を用意する。</p><ul><li>a = b で <code>&lt;a : &lt;b&gt;&gt;, &lt;b&gt;, &lt;c&gt;, &lt;d&gt;</code></li><li>b = c で ….</li></ul><p>どんどん置き換えて行って型推論を行う。</p><h4 id="ibis">Ibisという型推論機</h4><p>IbisはJavaScriptで書かれている。</p><ul><li>まずはパースして構文木にする</li><li>ここからステップごとに型推論の計算(推論)を表示</li><li>最終的に、関数の入力と出力の型推論結果が表示される</li></ul><blockquote><p>型推論はパズル</p></blockquote><h4>質問</h4><blockquote><p>型推論にとってオブジェクトは鬼門</p></blockquote><p>Q . 循環参照の時はどうするの?</p><p>２つの考え方</p><ul><li>禁止する方針</li><li>再帰的なものも許す方針</li></ul><p>OCamlは不健全な循環参照は禁止されている。 再帰的なものはチェックを付けて型推論を続ける。</p><p>演算子のオーバーロードがあると型推論はむずい</p><hr
/><h4 id="javascriptbyconstellation">「世界で一番仕様に忠実なJavaScript処理系の作成」 by Constellation</h4><p>iv/lv5</p><p><a
title="iv / lv5 VM engine - 枕を欹てて聴く" href="http://d.hatena.ne.jp/Constellation/20110727/1311697245">iv / lv5 VM engine &#8211; 枕を欹てて聴く</a></p><ul><li>ESのパーサーiv</li><li>エンジンlv5</li></ul><p>sputniktestというECMA262への正確性を測るテスト</p><ul><li>以前はASTはインタープリンタ</li><li>VMに変えたのでECMAエンジンといえますね。</li><li>インタープリタと共存している(オプションで切り替えが可能)</li></ul><p>JITをモジュールとして取り込めるのではないかと。</p><h4>高速化</h4><p>いろいろ。11倍近く高速</p><p>まだJITはしていない。</p><h4>今後</h4><ul><li>RegisterVmについての検討</li><li>GCの自作</li></ul><h4 id="az:ecmascriptanalyzer">az: ECMAScript Analyzer</h4><p>JavaScriptの補完候補を出す</p><h4 id="doctorjs">型の推論 Doctorjs</h4><ul><li>抽象的なAbstractインタプリターを使って型情報を集めている</li><li>これを元にC++にした</li></ul><p>JavaScriptは後ろに関数宣言置けるし、補完するときにシンタックスは壊れてるからどうするの?</p><h5 id="ast">方針: シンタックスが不正なASTに対して解析を行う</h5><ul><li>シンタックスが不正なスクリプトでも常にASTを得る</li></ul><blockquote><p>target.</p></blockquote><p>こういう時はに解析を行うと、式がエラーになるので、ここでステートメントにマークを付ける。</p><p>改行があったらそのへんは大丈夫なんじゃないかと、してぶっちぎる。 JavaScriptにはセミコロン自動挿入があるので、改行を判定に使う必要性が出てくる。</p><h5>問題点</h5><ul><li>Abstractインタープリタは状態が有限でないと終わらない</li><li>なので状態を有限して、行う</li><li>jQueryとのfor inとかむず</li></ul><p>WebStromの場合</p><ul><li>JSDocで型情報を読んでこれを基準に解析</li><li>元に情報を用意して何とかする方向</li></ul><h4>おわり</h4><blockquote><p>仕様忠実は第一</p></blockquote><hr
/><h2 id="osbyliva_s">「現役高校生の考えるクラウドOSの設計と実装」by liva_s</h2><h4 id="os">クラスドOSって何だろう?</h4><p>Googleの場合</p><ul><li>ブラウザ上でWebアプリを走らせている</li><li>確かにクラウドを利用している</li></ul><h4>僕の考えるクラウド化</h4><h5>カーネルのクラウド化</h5><ul><li>カーネルがやるべきことをクラウドサーバー上で一括処理するのはどうだろか?</li><li>サーバー側に処理を置くことで、クライアント側の負荷が減る</li></ul><p>カーネルを分割して、クラウド上でカーネルが動いてるいうという状態</p><ul><li>当然ローカルでやるべきことも残る(ハードウェア制御)</li><li>ローカルとくらうどの線引きが大事になる</li></ul><p>どの境界線はどう測るべきものかがわからない(ベンチマークで?)</p><h4>マイクロカーネル開発</h4><p>カーネルには最小限なものにして、Serverというアプリケーションにわけてやるもの。 この時のServerをクラウドに乗っければ、クラウドOSになる。</p><p>=&gt; マイクロカーネルの開発がいいのではないかと</p><p>Serverを単位にして、ローカルとクラウドでベンチマークを取れば、境界線がわかりやくなる。</p><h4>モジュール開発とマイクロカーネル</h4><p>モジュールはプロセス管理を作る前に、モジュールを開発できる。 (後で動かせばいい)</p><h5>まとめ</h5><blockquote><p>クラウドOSはWebアプリベースのOSではない</p></blockquote><p>Q. カーネルでどの辺がボトルネックになってるのか?</p><p>A. モジュール化していけばベンチは測りやすいから、これからは。</p><p>カーネルのモジュール化はダイナミックに構成を変更できるということが結構面白い事になる</p><p>Q.マルチキャストの逆みたいな話。同じような処理をしてるコンピューターはいっぱいあるから、そのへんの処理を効率ができるのではないかと</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0820/res2949/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Homebrewを使ってMacにPHP環境を構築する</title><link>http://efcl.info/2011/0718/res2942/</link> <comments>http://efcl.info/2011/0718/res2942/#comments</comments> <pubDate>Mon, 18 Jul 2011 05:56:41 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[インストール設定]]></category> <category><![CDATA[Mac]]></category> <category><![CDATA[php]]></category><guid
isPermaLink="false">http://efcl.info/?p=2942</guid> <description><![CDATA[Homebrewのインストール方法はいろいろなところで見られるので手短に Installation &#8211; GitHub Macのパッケージ管理をMacPortsからhomebrewへ &#8211; よんちゅB [...]]]></description> <content:encoded><![CDATA[<p>Homebrewのインストール方法はいろいろなところで見られるので手短に</p><ul><li><a
href="https://github.com/mxcl/homebrew/wiki/installation">Installation &#8211; GitHub</a></li><li><a
href="http://d.hatena.ne.jp/yonchu/20110226/1298723822">Macのパッケージ管理をMacPortsからhomebrewへ &#8211; よんちゅBlog</a>&#160;</li></ul><div><pre class="csharpcode">$ ruby -e <span class="str">&quot;$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)&quot;</span><br />$ brew install git<br />$ brew update</pre></div><p>これでbrewコマンドが使えるようになったので、下のFormula(パッケージの情報みたいなもの)を使ってPHPやMySQLなどをインストールする。</p><ul><li><a
href="http://justinhileman.info/article/reinstalling-php-53-on-mac-os-x/">(Re)installing PHP 5.3 on Mac OS X — justin hileman dot info</a></li><li><a
href="https://gist.github.com/85ad6dfb594d9215b42b">bobthecow&#8217;s gist: 85ad6dfb594d9215b42b — Gist</a></li></ul><p>最近のMacだとデフォルトPHPとか入ってるけど、何かアップデートとか面倒そうなのでbrewを使ってインストールし直してる。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">$ brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/php.rb --with-mysql --with-intl</pre><br
/></div><p>という感じでインストールした。 <br
/>インストール後にwhichコマンドで、どのphpバイナリを示しているかを確認すると、デフォルト?のphpが参照されてままだった。(Homebrewは/usr/local/bin/以下にインストールしていく)</p><div><pre id="codeSnippet" class="csharpcode">$which php<br />/usr/bin/php</pre></div><div>なので、Homebrewでインストールしたものを示すように.bashrcでPATHを書き換える必要がある。(この辺<code>brew linkとかでどうにかなったりしそうだけど…)</code></div><pre><code>/usr/local/bin/php</code></pre><div>デフォルトのMacだと.bashrcがないので自分でホームに作成する必要があるけど、そのままではTerminalで読み込まれなくて、~/.bash_profileを作って~/.bashrcを読み込むようにする。</div><ul><li><a
href="http://memo358.blog18.fc2.com/blog-entry-30.html">とあるプログラマーの覚書 OSXでのbashrcの設定</a></li></ul><p>~/.bash_profile を作り、下記の内容を書き加える。</p><p><div><pre id="codeSnippet" class="csharpcode"><span class="kwrd">if</span> [ -f ~/.bashrc ] ; then<br />. ~/.bashrc<br />fi</pre></div><div>同じ要領で、~/.bashrcを作って下記の内容を書き加える。</div><div><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">export PATH=<span class="str">&quot;$(brew --prefix)/bin:$PATH&quot;</span></pre>これで、Terminalを再起動すると、~/.bashrcが読み込まれるようになるので、</div><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">$ which php<br />/usr/local/bin/php<br /></pre></div> というようにHomebrewでインストールしたphpが使えるようになる。</div><div>ブラウザからphpのファイルにアクセスするにはApacheの設定も必要になるけど、下記を参考に設定した。</div><ul><li><a
href="http://weble.org/2010/06/20/mac-virtualhost">Mac でバーチャルホストを XAMPP や MAMP に頼らず設定する方法 | ウェブル</a></li><li><a
href="http://d.hatena.ne.jp/hida_shun/20110405/1302016168">Mac OS X 10.6 で VirtualHost &#8211; hida_shunの日記</a></li><li><a
href="http://d.hatena.ne.jp/bojovs/20081130/1228042934">MacでApache, MySQL, PHP環境を作ったよ &#8211; bojovs blog</a></li></ul> MacのApacheは「システム環境設定」→「共有」→「Web共有」をON/OFFすれば、コマンドから再起動とかしなくてもいい。後、デフォルトだとPHPモジュールが読み込まれてないので、<a
href="http://d.hatena.ne.jp/bojovs/20081130/1228042934">MacでApache, MySQL, PHP環境を作ったよ &#8211; bojovs blog</a>のように httpd.conf のコメントアウトを外してPHPモジュールを読み込むようにする。</p><p>httpd-vhosts.conf を使って、バーチャルホストを設定する際は設定を変更して保存したら</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">apachectl -t</pre></div><p>のコマンドで文法ミスがないかをチェックしてから再起動などして試した方が安心。 <br
/>またコピペして設定する時は、クオーテーションがおかしくないかなども確認した方がいい。</p><p>参考</p><ul><li><a
href="http://d.hatena.ne.jp/okonomi/20110501/1304256929">HomebrewでPHP5.3.6をインストールする &#8211; okonomiの日記</a></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0718/res2942/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 760/842 objects using disk: basic

Served from: efcl.info @ 2012-02-05 01:11:35 -->
