俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

YAPC::Asia Tokyo 2015に行ってきたよ

f:id:ie-kau:20150822181812j:plain:w400

YAPC::Asiaとは

世界最大のYAPCが最後の大花火をぶちあげにもどってきました!YAPCはYet Another Perl Conferenceの略で、Perlに関するカンファレンス・・・いや、お祭りです!Perlだけに限らず、様々な分野のギーク達が集まり技術の話と楽しさに満ちた三日間のお祭りが開かれます。Perlに関連する事に興味がなくとも心配する必要は全くありません、YAPC::Asia Tokyo 2015は技術者であれば誰でも楽しめるカンファレンスです。

yapcasia.org

僕自身Perlを書けないのですが普段使っているJavaScript、Ruby、Swiftなど他言語の話からサービスや働き方についての話など多くのセッションが用意されており、いつか行ってみたいと思っていたところ、今回機会を頂いので参加してきました。

せっかく参加したんだし、

blogを書くところまでがYAPC

と運営の方が口酸っぱく(笑)仰っていたので、忘れないように気になったとこや、後で調べようと思ったとことを箇条書き程度にまとめようと思います。

参加したセッション

1日目

2日目

1日目

Effective ES6

ES6の話。この間jspmでアーキテクチャを組もうとして苦汁をなめたので学び直し。

www.slideshare.net

  • 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
  • どうするか
  • 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) {
}

所感

  • さようなら愛しのCoffeeScript
  • 大きめのアプリケーションを作りやすくなった。ここまでくると型が欲しくなるつらみ。
  • Map/Set調べる。

Conway's Law of Distributed Work

リモートワークってどうやったらいいのよ?って話。昨今働き方が多様化しているし、自分も最近結婚したりしていい働き方を考えたい年頃なので聞いてみた。

speakerdeck.com

  • task管理
  • 週一で会う理由は共感
    • 一堂に会することは大切
    • オフィスではコミュニケーションをメインにして家では仕事
    • お互いのことを知ること
  • Over communicateに注意
    • いいアイディアでも相手のタイミング考えずに話すとだめ
    • 相手のタイミングが悪い時は書き起こそう
  • Share your personality
    • プロフィールを開示していこう。
      • 何に興味があるか
      • どんな曲がすきか
      • どこのコーヒーが美味しかったとか
  • メインのタイムゾーンを決めよう
  • Sociotechnical system
  • 組織のクオリティと健康はダイレクトにプロダクトのクオリティと健康に反映される
  • リモートワークだと働き過ぎない?
    • 家族がいい感じに邪魔してくれる

所感

  • 飲みニュケーションが苦手なんだけどお互いを知ることの必要性は痛いほどわかる
    • 隣の人との雑談とか、朝会での小ネタで埋め合わせられないものか
  • リモートワークに関しては賛成だし実践したいのだが、その理由を突き詰めていくと満員電車に乗りたくない一心なので実は時間ずらして出社したら解決なのではと気付きかけている。

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)でデスクトップアプリつくろうぜって話。

speakerdeck.com

所感

特にslackなんだけど、ブラウザでも動いててデスクトップアプリでも動いてるアプリケーションってフロントのソースコードの同期をどうしてるのかが非常に気になる。なんとなくブラウザ版がアップデートされたらデスクトップ版も変わってるので同期させているのだろうけど、その辺の実装について聞いてみたい。

esa.io - 趣味から育てたWebサービスで生きていく

すいません、ずっと「イサ」だと思ってたら「エサ」でした。
サービスづくりが好きなので参加。

speakerdeck.com

  • 某サービスの無料利用期間が終わったので作った
  • いろいろやるの大事
    • 10個に1個ぐらいはうまい具合にいく
    • 公開するのが大事
    • チャンスが増える
  • 大量に申請がきたので少しずつ承認していったのはミス
  • 楽しさやモチベーションは直接コントロールできない
    • やれることを、やる
      • 毎日Bundle Updateする→やることが決まる
      • bug fixタイムアタック
  • フィードバック駆動開発
    • メールは5分以内に返信
  • よく寝る
    • 睡眠不足による損失はおおきい
      • イライラするとか
    • 決済処理があると寝れないのでまとめてやる
  • Herokuを使う
    • アクセスが増えたらすぐにお金で解決できる
  • 開発スケジュールを決めない
    • モチベーション駆動開発
  • かわいみ
    • かわいいは正義
    • リリース前から公式グッズを作る

所感

  • 鳥のキャラクターが可愛いので十分サービスを育てるモチベーションになりそう。

2日目

どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?

Nodeはバックエンドや開発環境でよく使うけど、この分裂の話に関して恐ろしかったのであえて追わないようにしていました 笑 だいぶ収束しそうな話だったのでこの機会に追ってみよう。

speakerdeck.com

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だすぜ〜」
  • 今の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の互換が崩れる
    • オープンガバナンスモデル
  • 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
      • 参照されるまで実行されないらしい。こんなのあったんだ。。。
  • 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

所感

まだまだ勉強不足だけど、意地でもコードでサーバーの状態を保存するするという意志は伝わった。

Posture for Engineers

腰痛持ちなので、長期的に働ける方法を身につけたいところ。

  • 首が前に出る姿勢よくない
  • 背筋を鍛えろ
  • 鍛えすぎ/弱った腹筋は腰痛のもと
  • バランスボール使うといい

質問

  • 会社で立って仕事してるけど実際体に良いの?
    • 立つことと座ることのコンビネーションが大切です
  • 寝っ転がって仕事するのはいいの?
    • Moderation!

所感

結局一番悪いのは同じ姿勢でずっといることだってわかってるんだけど、一度集中し始めてしまうとなかなか体制を変えたり、立ち歩いたりするのって難しい。それでも姿勢が変なになったりするぐらいなら集中を解くほうがいいのかもしれないなぁ。。
あとはバランスボールが良いと言われていたことにも注目。懐疑的だったけど試してみようかな。

参加したかったセッション

HTTP2関連、2日連続で入れず!\(^o^)/
ほんとに大人気でしたね、動画上がるのが楽しみです。

まとめ

Perlの祭って謳い文句ですが、僕みたいな偏ったスキルセットの人間でも二日間ずっと楽しむことが出来ました。

普段通り暮らしていると新しい技術情報を追わなくなったり自分の興味範囲だけに目が言ってしまい自然に視野が狭くなったりするので、頻繁にじゃなくていいのでたまにはこういうイベントに出るべきだなと感じています。いざ開発を任された時に知ってると知らないとでは発想に大きな差が出そうですし、どういう人がどの技術に詳しいかまでわかっておくとストーキング的に情報を追うことや、少し勇気を出せばその人に直接質問することもできますし。

今回はセッションもそうでしたが某会長のお陰でいつも壇上にいる人たちと昼食を取ることができ、直接知見を聞いたりすることができたのも非常にいい経験でした(人見知り爆発+緊張して声が震えていましたがw)。感謝感謝。

また、何が契機ってわけでもなくただ重厚な熱量を感じてGo言語に興味が湧いている次第でございます。 来年も参加したいな。

P.S

帰りに国際鉄道模型コンベンション寄った

f:id:ie-kau:20150822183254j:plain

( ⁰⊖⁰)/< オラッオラッ