YAPC::Asiaとは
世界最大のYAPCが最後の大花火をぶちあげにもどってきました!YAPCはYet Another Perl Conferenceの略で、Perlに関するカンファレンス・・・いや、お祭りです!Perlだけに限らず、様々な分野のギーク達が集まり技術の話と楽しさに満ちた三日間のお祭りが開かれます。Perlに関連する事に興味がなくとも心配する必要は全くありません、YAPC::Asia Tokyo 2015は技術者であれば誰でも楽しめるカンファレンスです。
僕自身Perlを書けないのですが普段使っているJavaScript、Ruby、Swiftなど他言語の話からサービスや働き方についての話など多くのセッションが用意されており、いつか行ってみたいと思っていたところ、今回機会を頂いので参加してきました。
せっかく参加したんだし、
blogを書くところまでがYAPC
と運営の方が口酸っぱく(笑)仰っていたので、忘れないように気になったとこや、後で調べようと思ったとことを箇条書き程度にまとめようと思います。
参加したセッション
1日目
- Effective ES6 - YAPC::Asia Tokyo 2015
- Conway's Law of Distributed Work - YAPC::Asia Tokyo 2015
- Electron: Building desktop apps with web technologies - YAPC::Asia Tokyo 2015
- esa.io - 趣味から育てたWebサービスで生きていく - YAPC::Asia Tokyo 2015
2日目
- どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか? - YAPC::Asia Tokyo 2015
- サーバーサイドエンジニア(特にPerl)のためのiOSアプリ開発入門 - YAPC::Asia Tokyo 2015
- 3分でサービスのOSを入れ替える技術 - YAPC::Asia Tokyo 2015
- Posture for Engineers - YAPC::Asia Tokyo 2015
1日目
Effective ES6
ES6の話。この間jspmでアーキテクチャを組もうとして苦汁をなめたので学び直し。
- ES6は正式にはECMAScipt2015と呼ぶ
- ES6は
- Modern syntax fixing pitfalls
- Better support for large applicecations
- No( or few) breaking changes
- Class
class Person { constructor(name) { this.name; } greet() { console.log("Hellow! I'm" + this.name); } } var bob = Person("Bob"); bob.greet();
- Now more altJS
- 何がどの環境で使えるかはECMAScript 6 compatibility table で確認する
- IE11 \(^o^)/オワタ
- 何がどの環境で使えるかはECMAScript 6 compatibility table で確認する
- どうするか
- Transpiler
- ES6 Polyfill
- Babel
- REPLでちょっと遊べる
- new syntax
- Arrow Function
- Class
- build-in classも継承できるよ
- Module
- Block Scope
- Default Parameters
- Rest Parameter
- Destructuring Assignment
- Template Literal
- Promise
- Map/Set
- WeakMap/WeakSet
- Object.assign(target, 1, 2);
- 落とし穴
if (a => 1) { }
- 落とし穴に落ちないようにESLint - Pluggable JavaScript linterでlintをかける
- われわれはどうするか
- Babelろう!
所感
- さようなら愛しのCoffeeScript
- 大きめのアプリケーションを作りやすくなった。ここまでくると型が欲しくなるつらみ。
- Map/Set調べる。
Conway's Law of Distributed Work
リモートワークってどうやったらいいのよ?って話。昨今働き方が多様化しているし、自分も最近結婚したりしていい働き方を考えたい年頃なので聞いてみた。
- task管理
- 週一で会う理由は共感
- 一堂に会することは大切
- オフィスではコミュニケーションをメインにして家では仕事
- お互いのことを知ること
- Over communicateに注意
- いいアイディアでも相手のタイミング考えずに話すとだめ
- 相手のタイミングが悪い時は書き起こそう
- Share your personality
- プロフィールを開示していこう。
- 何に興味があるか
- どんな曲がすきか
- どこのコーヒーが美味しかったとか
- プロフィールを開示していこう。
- メインのタイムゾーンを決めよう
- Sociotechnical system
- 英語が聞きとれなかったのであとで読む
- Sociotechnical system - Wikipedia, the free encyclopedia
- 組織のクオリティと健康はダイレクトにプロダクトのクオリティと健康に反映される
- リモートワークだと働き過ぎない?
- 家族がいい感じに邪魔してくれる
所感
- 飲みニュケーションが苦手なんだけどお互いを知ることの必要性は痛いほどわかる
- 隣の人との雑談とか、朝会での小ネタで埋め合わせられないものか
- リモートワークに関しては賛成だし実践したいのだが、その理由を突き詰めていくと満員電車に乗りたくない一心なので実は時間ずらして出社したら解決なのではと気付きかけている。
The health and quality of your product will be a direct reflection of the health and quality of your organization.
Electron: Building desktop apps with web technologies
Webの技術(HTML,CSS,JavaScript)でデスクトップアプリつくろうぜって話。
- AtomはSingle Page Application
- OSのファイルシステムにアクセスできるなど
- JavaScript, HML, CSS
- Electron(Chromium + io.js)
- OS
- 何がElectronでできてるんだっけ?
所感
特にslackなんだけど、ブラウザでも動いててデスクトップアプリでも動いてるアプリケーションってフロントのソースコードの同期をどうしてるのかが非常に気になる。なんとなくブラウザ版がアップデートされたらデスクトップ版も変わってるので同期させているのだろうけど、その辺の実装について聞いてみたい。
esa.io - 趣味から育てたWebサービスで生きていく
すいません、ずっと「イサ」だと思ってたら「エサ」でした。
サービスづくりが好きなので参加。
- 某サービスの無料利用期間が終わったので作った
- いろいろやるの大事
- 10個に1個ぐらいはうまい具合にいく
- 公開するのが大事
- チャンスが増える
- 大量に申請がきたので少しずつ承認していったのはミス
- 楽しさやモチベーションは直接コントロールできない
- やれることを、やる
- 毎日Bundle Updateする→やることが決まる
- bug fixタイムアタック
- やれることを、やる
- フィードバック駆動開発
- メールは5分以内に返信
- よく寝る
- 睡眠不足による損失はおおきい
- イライラするとか
- 決済処理があると寝れないのでまとめてやる
- 睡眠不足による損失はおおきい
- Herokuを使う
- アクセスが増えたらすぐにお金で解決できる
- 開発スケジュールを決めない
- モチベーション駆動開発
- かわいみ
- かわいいは正義
- リリース前から公式グッズを作る
所感
- 鳥のキャラクターが可愛いので十分サービスを育てるモチベーションになりそう。
2日目
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
Nodeはバックエンドや開発環境でよく使うけど、この分裂の話に関して恐ろしかったのであえて追わないようにしていました 笑 だいぶ収束しそうな話だったのでこの機会に追ってみよう。
Node誕生〜今の歴史の話
- C10K Problem
- 1万人アクセスしたら1万個のプロセスが上がるよね
- Web2.0の先にあるC10K問題 SNSとか
- →やばい!
- イベントループモデル
- libebb → libuv
- netv8 → node
- BDFL
- 優しい終身の独裁者モデル
- 一人のリーダー(Ryan)とコミッターたちみたいなコミュニティ
- 優しい終身の独裁者モデル
- 2012年
- RyanからIsaacsにリーダー変わった
- 2012年
- IsaacsからTJ Fonteineにリーダー変わった
- TJ Fonteine 「v1.0だすぜ〜」
- IsaacsからTJ Fonteineにリーダー変わった
- 今のNode
- socket.isの普及によるリアルタイムアプリの増加
- Front End Tool(Gulp, Grunt)
- Desk Top Appliceation(Electron)
- AWS Lambda
- Tessel(loT)
- こっから開発者間の溝
- 安定を求める開発者 vs cutting edgeを求める開発者
- というのもエンタープライズで使われるようになった
- 2014年からコアの開発が停滞
- issue/featureが増えてきた
あかん...
- Node Forwardって団体ができちゃった
- 停滞からの脱却
- 2015/01 Nodeがio.jsをフォーク
- 2015/01/13 io.jsでた
- Nodeとのちがい
- BDFLモデルからの脱却
- どうやって新機能の開発やissueの対応をするのか?
- Technical Cmmittee
- リーダーはいないがコアメンバーで構成された技術委員会
- Collaborator
- TSCの実際にコードを編集していく人たち
- Working Group
- Evangelistsみたいに実際の作業をしていく人のグループ
- Semantic Versioning
- major.minor.patch
- patch バグた修正された
- minor 機能が追加
- major APIの互換が崩れる
- major.minor.patch
- Technical Cmmittee
- オープンガバナンスモデル
- 中継とか www.youtube.com
- git で議事録を管理とか
- The Future of Node = io.js
- CIのホスティングとかはNode Foundation財源
- Long Term Support
- stable branchとunstable branch
- リリースされて一年と半年はちゃんとメンテナンスされる(マジか!)
- Node v4.0(9月とか10月)
- ES6
- StrongScript
- SimpleStrema
- Improve perf
- Debuggability
Free Talk
by 大津さん - 古川さん
- Node魅力は?
- 進歩が早い
- 自分で開発してみたかった
- ソケット通信から、SSLの通信まで広いレイヤーを触れる
質問
- 企業の庇護下でやったほうがいのか?
- 問題は、issueが滞ったりリリーススケジュールが不明なところ
- いいか悪いかはわからないけど自由と、企業の庇護とのベクトルは違う
- Node v4.0てES6,ES7がどれだけ使えるか?
- Class、let、"use strong"(ES6じゃないとおこられる)、Promise、ジェネレーター
- arrow functionは使えない
- async awaitは策定中
所感
- 最初から統合される予定だったとはいえNode Foward側と本家の思想の分離と統合のフローが美しいと思った。
- 「Nodeのマイナーバージョンを上げたらモジュール使えなくなった!最低!!!」というケースにかなり苛まれてきたので今後の運用方針がありがたい。
サーバーサイドエンジニア(特にPerl)のためのiOSアプリ開発入門
Perlかけないけどこの間Swiftでアプリを作ったばかりなので復習。
- iOSアプリ開発2015
- Swift2.0から始めるといい時期
- Good by Objective-C
- Xcode7以降だとdeveloper programに入らなくても作れるよ
- Perl to Swift
- @lazy var hoge
- 参照されるまで実行されないらしい。こんなのあったんだ。。。
- @lazy var hoge
- Perl使いがSwiftに違和感にない一番のポイント
- リファレンスカウント方式
Perlにないけど重要な奴ら
- optional
var foo:String?
- nilかStringが代入可能
アクセスするときは
self.foo!
こっちがおすすめ
if left foo = self.foo {}
こういうこともできる
if left base = self.foo?.bar?.baz{}
この場合nilだったらなにもおきない
self.foo?.do_something()
- Protocol
- GoのInterfaceみたいなもの(Go書いたことないけどJavaのInterfaceみたいなものだと思ってる)
- Cpan/Carton
- CocoaPods
- Alamofire
- AFNetworkingのSwift版、機能が揃ってきたのでこっちを使おう
- github.com
3分でサービスのOSを入れ替える技術
インフラ周りを勉強中なので聞いてみた。
www.slideshare.net
- 昨日と同じ仕事をしない
- cloud-init
- OSの起動の時点で設定を実行できる
- runcommandは使わないこれをやることをpuppetをつかってやる
- IaaSって?
- Infrastructure as a Service
- 100台とかあるときついのでpull型のアーキテクチャにする
- 圧縮ファイルをクラウドストレージに上げて落として解凍してrackサーバーを上げ直すみたいな
- Mackerel: A Revolutionary New Kind of Application Performance Management
- 鯖
所感
まだまだ勉強不足だけど、意地でもコードでサーバーの状態を保存するするという意志は伝わった。
Posture for Engineers
腰痛持ちなので、長期的に働ける方法を身につけたいところ。
- 首が前に出る姿勢よくない
- 背筋を鍛えろ
- Cat/Cow運動(座って)
- 鍛えすぎ/弱った腹筋は腰痛のもと
- バランスボール使うといい
質問
- 会社で立って仕事してるけど実際体に良いの?
- 立つことと座ることのコンビネーションが大切です
- 寝っ転がって仕事するのはいいの?
- Moderation!
所感
結局一番悪いのは同じ姿勢でずっといることだってわかってるんだけど、一度集中し始めてしまうとなかなか体制を変えたり、立ち歩いたりするのって難しい。それでも姿勢が変なになったりするぐらいなら集中を解くほうがいいのかもしれないなぁ。。
あとはバランスボールが良いと言われていたことにも注目。懐疑的だったけど試してみようかな。
参加したかったセッション
HTTP2関連、2日連続で入れず!\(^o^)/
ほんとに大人気でしたね、動画上がるのが楽しみです。
まとめ
Perlの祭って謳い文句ですが、僕みたいな偏ったスキルセットの人間でも二日間ずっと楽しむことが出来ました。
普段通り暮らしていると新しい技術情報を追わなくなったり自分の興味範囲だけに目が言ってしまい自然に視野が狭くなったりするので、頻繁にじゃなくていいのでたまにはこういうイベントに出るべきだなと感じています。いざ開発を任された時に知ってると知らないとでは発想に大きな差が出そうですし、どういう人がどの技術に詳しいかまでわかっておくとストーキング的に情報を追うことや、少し勇気を出せばその人に直接質問することもできますし。
今回はセッションもそうでしたが某会長のお陰でいつも壇上にいる人たちと昼食を取ることができ、直接知見を聞いたりすることができたのも非常にいい経験でした(人見知り爆発+緊張して声が震えていましたがw)。感謝感謝。
また、何が契機ってわけでもなくただ重厚な熱量を感じてGo言語に興味が湧いている次第でございます。 来年も参加したいな。
P.S
帰りに国際鉄道模型コンベンション寄った
( ⁰⊖⁰)/< オラッオラッ