hiragram no blog

iOSとか

先着順申し込みに負けない勉強会情報の集め方

🍺が美味しい季節ですね。

ここ数ヶ月、月に3回くらいのペースで外部の勉強会にオーディエンスとして参加しています。いつかはスピーカー側に立ってみたいものです。

勉強会への参加申し込みには2種類あって、先着順のものと抽選のものがあります。トレンドなトピックであったり、会場が人気のオフィスであったり、スピーカーが有名な人だったりすると、あっという間に定員を超えてしまい、イベントを知った時にはもう満員なんてこともよくあります。

そこで今日は普段僕が勉強会情報を得るのに使っているWebサイトやTwitterアカウントなどを紹介したいと思います。

イベント情報サイト

connpass

http://connpass.com

f:id:hiragram:20150802113424p:plain

言わずと知れた、「人をつなぐIT勉強会・イベント支援サイト」。

非常に活発な印象で、サイトも綺麗で使いやすいです。僕は毎朝PCからチェックしています。新着イベントや新着グループのフィードを眺めて面白そうなものがあったら申し込んでいます。

iPhone向けのアプリがありますが、Twitterアカウントでログイン仕様としたら「エラーが発生しました」と表示されるので僕は使っていません。

dots.

http://eventdots.jp/

f:id:hiragram:20150802113418p:plain

各種イベント情報サイトを横断して検索できます。つい先日(7/29)サイトがリニューアルされて今風の見た目になりました。

検索対象のサービスは

  • ATND
  • connpass
  • DoorKeeper
  • Zusaar

リニューアル前は検索が遅く、イベント情報の更新が遅く、なかなか使いこなせないサイトだったんですが、リニューアルしてからは検索がずいぶん軽くなった気がします。更新頻度についてはまだあんまりわかんないです。

使い方としては、上述のconnpassと同じように毎朝新着がないかをチェックするのに加えて、あるトピックに関するイベントを探したいときなどにここで検索しています。

あと、複数のイベントサイトに情報を出して参加者を募っているケースがまれにあって、例えばatndの枠は満席になっちゃったけどconnpassにはまだ空きがあるみたいな状況になることがあります。そういうのにもdotsであれば気づけるので、横断検索できるのは便利です。

毎朝おすすめイベントをメールで送ってくれるのですが、それはあんまり精度高くないな−という印象。Webをみるきっかけにはなるので一応購読していますが。

最近はdots独自運営のイベントもちょいちょいやってるっぽい。

Twitterアカウント

connpass

@connpass_jp

connpass公式アカウント。

新たに公開されたイベントの情報をツイートしてくれるので、先着順で人気のあるイベントを狙うならフォロー必須です。

新着勉強会bot

@event_subscribe

こちらも新着イベントを定期的にツイートしているアカウントなのですが、特徴的なのが@event_subscribe sub キーワードとツイートするとそのキーワードが含まれるイベントが公開されたときにmentionで通知してくれるのです。まあまあ便利です。僕はswift,potatotips,ios,react,ltなどをsubscribeしています。

IT勉強会@関東

@atnd_kanto

こちらは地域を限定したイベント情報をツイートしているアカウントです。関東の他にも北海道(@atnd_hokkaido)、東北(@atnd_tohoku)、中部(@atnd_chubu)、近畿(@atnd_kinki)、中国(@atnd_chugoku)、四国(@atnd_shikoku)、九州(@atnd_kyushu)のアカウントがあります。

僕はまだ東京以外のイベントには参加したことがありませんが、このアカウントは神奈川など近隣県のイベント情報も発信しているので、合わせてフォローしておくといいと思います。

さいごに

先着申し込みに遅れた/抽選に漏れたらもう参加できないんだうわあ〜となりがちですが、前日当日になってキャンセルする人結構います。たとえ補欠だったとしても、キャンセル待ちとして扱われるので自分が補欠何位なのかを把握して、当日までイベントページをちょいちょいチェックするのがお勧めです。20人くらい平気でキャンセルすることもあるので。

しょぼいライブラリを公開したあとの話

興味を持ってもらえるのは嬉しいという話。

まえがき

しょぼいライブラリを公開した話 -> 3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった

その後

達成感の熱を持ったまま私は追加機能のIssueを書いたりCocoaControlsに掲載申請だしたりしていたけどそれも徐々に落ち着いてきて、しょぼいライブラリだしこんなもんかと1から増えないStarを眺めていた。

6時前に起きてちまちまコード綺麗にしたりブランチ切ってみたりしていたある朝、ふとメールボックスを見ると

スクリーンショット 2015-07-30 19.51.55.png

↑誰かがIssue立てた

やべえ!オープンソースっぽい!

Re-use YHImageViewer

スクリーンショット 2015-07-30 10.39.26.png

   画像開いて、詳細みて、フリックで閉じるのが"繰り返せたら"便利だぞ  

スクリーンショット 2015-07-30 10.40.05.png

   おっと使い方が悪かったわ、普通に繰り返し使えたわ、すまん  

o0450027713074673360.jpg

で終わらせるのももったいないので返事を書いてみた。

スクリーンショット 2015-07-30 20.22.22.png

   コメントありがとうございます!  初めてのオープンソースライブラリなので興味を持ってもらえて嬉しいです!  どんなIssue、コメント、指摘も歓迎します!  

ついでにちょっと聞きたいことがあったので聞いてみた。

スクリーンショット 2015-07-30 20.27.11.png

   ところでどうやってこれを見つけたのか教えてほしいっす。  まだCocoaControlsにも乗ってないし、Starも1(おれの)だし。  

返事きたらイイナーと思って書いた次の日、

スクリーンショット 2015-07-30 20.35.39.png

   CocoaPodsのWebサイトで見つけたぜ〜。こいつは俺が本当に欲しかったものだ。俺はviewerをUITableViewCellから呼び出したかったから、UIViewControllerにデリゲートメソッドを生やしたくなかったんだよ〜。(ほかの似たようなライブラリはそうしないと使えない)    ズーム機能が待ちきれねえよ〜マジその機能欲しいよ〜。作ってくれてありがとよ〜!  

note-2011-07-06-06h44m13s225.jpg

普通に嬉しい

3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった

飛ばしっぽいタイトルですまんの😁

やってることは全く大したことないけど、思ってたより100倍くらい簡単にできたので書きます。

How to系の話はもう他にいくらでもあるので以下の内容は書いてません。

  • SwiftiOSライブラリを作る方法
  • CocoaPodsに公開する方法

やったこと

iOSライブラリYHImageViewerを作って、CocoaPodsに公開した。

なにこれは

f:id:hiragram:20150720185403g:plain

Twitterアプリなんかでよくある、サムネイルをタップすると画像がフルスクリーンで表示されて画像をスワイプしたり背景をタップしたりすると元の画面にもどる奴です。

作ったよアピールがしたかっただけなので忙しい人はここからは別に読まなくていいです。

経緯

  • 今年の4月から所属プロジェクトのネイティブアプリ開発を担当してた
    • それまでアプリ開発の経験ほとんど無し
    • Objective-Cで書かれたアプリのバグ修正とか機能追加とか
    • 以前はPHPでサーバーサイド書いてた
    • 最初はすべてが意味不明だった
      • たのしくない👊( ˘ω˘ )
  • そして慣れた
    • Objective-C触り始めて3,4ヶ月くらい、なんとなくiOSの勘所もわかりはじめた(気がする)
      • たのしい!✋( 'ω' )
  • Swift書きたい
    • Swift読みやすいじゃん もうSquare bracketなんて書きたくないし見たくないよ
      • 角括弧NO👎[ 'ω' ]
  • オープンソースに興味
    • 最近外部の勉強会とかミートアップみたいなのに積極的にいくようにしていて、前で発表する人たちつよい、つよくなりたいと思った
      • 何か実績を💪('ω'💪)
  • Tweetbotの画像タップした時の触り心地が好きすぎた
    • 言葉で説明できないからみんなTweetbot使おうな
    • これ使いたい、でもライブラリとかなさそう、じゃあつくろう

結論から言うと、作りたかったTweetbotの画像プレビューの操作感は全然実現してないんですが、ミニマムな機能は作ったので一旦出してしまえと思って公開しました。

やって思ったこと

達成感がある。すごい。

あと、今まではなんとなく作ってたオレオレ機能って、自分しか使わないから多少使いにくい設計しててもまあいいかなってなってたんですけど公開して他の人が使う(かもしれない)ことを考えると、綺麗に書こうとか設計気をつけようとかそういう意識をより強く持てると思った。

CocoaPodsめっちゃ簡単。

今回は100行くらいのちょろいクラスを作ったけど、その100行を毎回違うアプリで書くのもあほらしいので、自分の中で再利用できそうなものはどんどんpod化して公開していこうとおもった。

公開するとメンテナンスのモチベーションになる。

みんなやろう。

参考にしたもの

iOS向けのライブラリをCocoaPodsで配布する

最初からCocoaPodsに公開することは決めていたので、手を動かし始める前にCocoaPodsのイロハを調べてるときに見ました。

Podfileでローカルのパスを指定してpod installできるの知らなかったので助かりました。

自前のライブラリをCocoaPodsで管理するメモ

podspecをチェックするのに、pod spec lintでやってたら毎回エラーが出て、pod spec lint YHImageViewer.podspecでやれば通るということに気づけました。

HTML5オールスターズ勉強会に参加したメモ #dotshtml5

6月13日にHTML5オールスターズ勉強会(dots)に行ってきたのでメモ。

『いつになっても議論が終わらないパフォーマンス関連のWeb標準たち』

@_furoshikiさん

モバイルWebを支える標準技術の進化の話。

アニメーション

  • 過去: Animation Frame方式(JS->CPU)
    • ex: jQuery Mobile
    • 「モバイルの世界ではcpuでゴリゴリやるの良くない」
  • 現在: CSS Animations方式(CSS->GPU)
    • ex: OnsenUI, IonicFramework
  • 未来: Web Animations方式(JS->GPU)
    • ex: Polymer(0.5?)
    • 「今後はこれが流行る気がします」

これから先(1年後くらい)のしごとのやり方

ネットワーク

モバイル端末でディスプレイのバックライトの次に電池を消費するのはネットワークインタフェース。

  • だから普段オフになってる
  • モバイルの消費電力を抑えるにはネットワークインタフェースのパワーオン期間を短くしなくてはいけない

Resource Hints

  • Webページに含まれていないリソースの取得
  • サーバと接続するためのスペック
  • IE11でも実装している

最初Resource Prioritiesという名前で仕様策定が進められていたが、Resource Hintsに名前が変わった時lazyloadがなくなった。

lazyloadを復活させろという声も多い。

Service Workers

  • ライフタイムが変わる
  • Fetch APIとPush API
  • WebSocketでやりたがるようなことはモバイルはPush APIでやるよ
    • Pushは通信の種類が違うので電力消費が少ない

モニタリング

※ここちゃんとメモ取れてないので注意

クロスプラットフォームにパフォーマンス計測結果を取得できるjsのAPI

  • frame timing api
  • performance group
    • 特定のパフォーマンスが記録されたことを通知してくれる機能
  • performance observer

「frame timing api + performance observer でまともなfirst paint時間計測apiが作れそうな気がする」

まとめ

  1. アニメーションはWeb Animationsの時代へ
    • CSS Animationはなくならん
    • Googleがんばれ
  2. ネットワークはServiceWorkersに期待
  3. モニタリングはなんかもうごめんなさい

もっと詳しく

@_furoshikiさんのgihyoの連載

『まだまだ ServiceWorker のはなし。Background Sync も来るよ!』

@kinuさん。Chromeの中の人。

今日のお話

  • 最近話題のServiceWorkerを中心に新しいAPIについて(偏った視点で)駆け足で紹介します

service worker

  • ブラウザの裏側で動くもの
  • service worker上でjsを動かす
  • apiたくさん増えすぎよくわからない
  • ページの裏側で動くイベント駆動型Yet another js環境
    • ページのセット(=scope)に対して登録され、バックグラウンドで動作
    • 対象ページからのロードリクエストをproxyのようにインターセプトして操作できる

Cache API

httpリクエスト・レスポンスのためのオフラインストレージ

  • Requestオブジェクトをキーに、Responseオブジェクトをキャッシュしておける
  • ゴリッとキャッシュしておけばWebページをオフライン対応にできる

Fetch API

ネットワークからリソースを'fetch'してResponseオブジェクトを返す

  • XHRよりCORS,cache controlなどをきめ細かく制御可能

ReadableStream

まとめてじゃなくてデータを受け取るための処理したい

  • 絶賛仕様策定中: Streams API
  • バイナリ・ストリームをちゃんと扱える
  • fetchと組み合わせてresponse.bodyをストリームとして読み出せる
  • ジェネリックAPI

Push API

ServiceWorkerを使ってサーバーからのpush通知を受け取る

  • GCMなどを使う(実装依存)
  • タブ閉じてても受けられる
  • Chrome for AndroidではChrome起動してなくてもok
  • まだ仕様変わったりしている

Background Sync

今ネットにつながってなくても後でつながったときに通信してほしい

  • ツイートやメッセージをオフラインで書いて次につながったとき送る
  • 定期的にバックグラウンドで通信する'periodic sync'の仕様も策定中

『オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavascript SQL-like database』

@yoshikawa_tさん

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

W3Cに項目あり

  • 当時の構成要素あんまりはやらなかった
  • Application Cacheにいろいろ課題があり流行らなかった
  • 現在はService Workerが出てきてオフラインWebアプリケーションがより現実的になってきている

かつてIndexed Database APIというものがあった

Indexed Databaseとは

  • ブラウザに持つKVS型のローカルデータベース
  • オフラインWebアプリケーションを前提としたローカルでのデータアクセス
  • Application Cacheがコケたせいで、オフラインを前提としたIndexed DBが日の目を見ることがなかった
特徴(localstorageとの違い)
  • 非同期API(ブロックされない)
  • 大量のデータ保存に向いている(クォータはブラウザ依存)
  • jsオブジェクト(関数などは除く)やバイナリデータ(Blob)が直接保存できる
  • トランザクション対応
  • Worker上で動作可能(もちろんService Workerでも)

indexed databaseの難解さ

  • RDBMSじゃないからSQL的な操作方法はできない
  • 何かのプロパティで検索したければ予めインデックスを作っておく必要がある
  • 複合検索をするには予め 略
  • ソートをするには、予め 略
  • 集合関数?なにそれ

そのまま使うのは辛いのでLovefieldというライブラリを使いましょう

Lovefield

  • SQLライクにデータベースを操作可能
  • 今のSQLでできる機能がふんだんにある
    • 集合関数、joinなど

Google IOで結構大きく取り上げられた

Service Worker + Indexed Database(lovefield) = Offline web application

『ついに来たぞ!Polymer1.0!!!』

Google Developer Expertの@komasshuさん

polymer

Google I/O 2015 Keynoteで紹介された数少ないWeb系技術の一つ

  • Web Componentsを使いやすく
    • custom tag
    • template
    • shadow dom
    • html import
  • クロスブラウザでも使えるように
    • polyfill

1.0でProduction ready

Polymer is NOT a Framework

Polymerについてはよく知らないので要勉強……

『Reactがいかに素晴らしいか語る20分』

@masuidriveさん

BackboneやAngularはどうも馴染めずにいて、年末にReactの公式Tutorial開始してすばらしいとなった。

独自のjsフレームワーク作ってたairbnbがそれを捨ててfacebookのReact.jsを採用した点からもアツいっぽいことがわかる。

DOM操作はなぜ難しいのか

  • いつどこで書き換えるのかわからない
    • DOMはどこからでも変更可能
  • このタグは見えてる?
    • DOMが状態を持っている(hiddenとかvisibleとか)
  • どこで処理するかわからない
    • DOMとコードが離れすぎ

もっと簡単にやろう

  • DOMを書き換えないで常にHTML全体を生成
  • EventListenerやめてonXXX使おう
  • HTMLとjsをまとめよう

  • jsx

  • jsの中にhtml

サンプル→codepen.io/masuidrive

  • 昔→サーバーはdomの中身を直接知ることはできなかった
  • react→いままでサーバーがやってた部分をreactがやるけど、サーバーがやってた部分ではdomを直接知れない
    • 昔と同じ!

Reactはコード量は多いけど、読みやすくメンテしやすい。

ロジックとビューを切り離せる。

virtualDOM

  • Reactが変更前のdomを持ってる
    • 差分だけ変更する

問題点

  • コードを書く人がHTMLも書く
  • 既存のjs部品が使えない
  • Twitter widgetとか外部jsは苦手らしい

Flux

  • 考え方の名前(MVCとかと一緒)
  • ReactではDataさえ変更すれば画面に反映される

Wrapping up

  • reakt.jsのDomはwrite once
  • 読み込みも変更もできない
  • コードは書くより読むが多い
  • 部品(コンポーネント)化して再利用しよう

『今からはじめるECMAScript6』

@1000chさん

javascriptecmascript

ECMAScript = 標準化された規格

  • いろいろな意見がjsに影響してきた
    • cofeescript
    • node
    • angularjs
    • etc...

ECMAScript6は正式にECMAScript 2015という名前になったらしい。

ecmascript6

  • 変数宣言(var)
  • Arrow Functions
    • thisを関数の外のthisから引き継ぐ?
    • 1文だったらbraceも省略できる?
  • importとexport
    • 他のモジュールを読み込む仕組みがなかった
  • Rest Parameters
    • 可変長引数
    • 配列作ってから渡さないといけなかったのが配列で渡さずとも関数側では配列として受け取ることができる
  • Default Parameters
    • デフォルト引数
  • Template Strings
    • stringリテラルの中に変数埋め込める
    • 関数も入れれる
  • Class
    • ただの糖衣構文ではある
  • Generator functions
  • Proxy
  • Promise
    • 非同期処理をthenで
    • ネイティブサポート
  • set weakset
  • map weakmap

以上は一部。他にもあるよ。

ECMAScript6とのつきあいかた

ECMAScript 6 compatibility table みればブラウザの対応状況が見れる

ES6がいかに素晴らしくてもサポートが進まないことには導入できない? -> 半分x

  • トランスパイラを使う
    • es6のコードを古いコードに変換して実行できるようにする
      • Babel
  • 限定された環境で使う
  • altjsで取り入れていく
    • TypescriptやFlow
  • Node.js 0.12~

『ハードウェアこわい』

midi

midiでブラウザ制御できるよ

スライドに夢中でメモ取れませんでした。

『Edge だけじゃない! Build 2015 で発表されたそれ以外の Web 関連技術まとめ』

@wksさん

  • Universal Windows Platform
    • PC上で開発したアプリを同じバイナリで複数のプラットフォームで動かせる
  • Docker on Windows
  • Windows 10 IoT core
  • HoloLens

Visual Studio Code

Vorlon.js

リモートデバッグの。 Vorlon.jsはトイレ行っててメモ取れませんでした