2015年の振り返り
12/31だ。実家の掃除がひと段落したので振り返りブログを書かないといけない。
去年末に立てた目標は概ね達成できた。
今から思うとこの程度の目標とか簡単じゃんと思えるので、その分成長できたのかなぁと。
また隠れ目標であった「転職する」もできたので良かった。
それに伴って資格取るとかいう目標はどっかいった。
2015年にやったこと
LT発表5回(たぶん)
- 東京Node学園 2回
- NodeSchool 2回
- 雑兵MeetUp
イベントスタッフ・運営側参加(HTML5 Conference、東京Node学園祭、NodeSchool)
OSS関連
- Contributions
- learnyoureact github.com
いろいろあって春頃にLongest Streakが途切れてしまったのが残念。下半期はなんとか継続できたのでよかった。
- まさかスター100を超えるようなものを作れるとは思ってなかったのでびっくりした。
2016年の目標
- 大好きなNode.jsを広める活動を今以上に行っていきたい。
- Longest Streakを途切れさせない。とりあえずは目指せ365日。
- 来年もスター100を超えるような何かを作りたい。
- 海外カンファレンスに行きたい。
- 登壇も視野に入れて。
おわりに
- 今年は本当にたくさんの方と知り合うことができてとても嬉しいですし、いつもみなさんから刺激を受けて頑張りたいと思っております。 お世話になりました。そして、来年もまたよろしくお願いいたします。
ISUCON5に出場して暫定2位とかなって一矢報いたが結果圏外に弾き出された!
初めて参加してきました!
僕が出場したくて同僚を誘ったのですが、みんな休みの日にも関わらず参加してくれて本当に嬉しかったです!一人では出場できないので。。。
まずは一緒に出場してくれたみんなに感謝。そして、参加者の何倍も大変な中運営をしてくださったみなさんに感謝です。ありがとうございました!
結果としては予選敗退になりました。
しかし、途中暫定2位の点数を叩き出すなど確か17時ぐらいまでは20位に入っており、一矢報いられたかなと思います。
何より、自分の知識がまだまだであること、まだまだ勉強できることがたくさんあることが知れて本当に良かったです。明日からまた頑張ります!
サーバの設定やシステムを試行錯誤しながら必死に考えながらいじる機会はめったにないので、すごく楽しみながら8時間を過ごすことができました!
負けて悔しい気持ちはあるけれども、それよりももっと頑張るぞという気持ちになれたのが良かったです。
心地よい疲れを感じております。
何をやったかとかは最初の方は残そうと思っていたのですが途中からいっぱいいっぱいいになってメモを取ってませんでした!笑
なので少しだけですが内容を
初期スコア 207
goに変えた 11:30:59 742
nginxの設定を変えた 11:45:03 764
mysqlの設定を変えた 12:18:06 757
インデックス貼った 13:50:42 1489
LIMIT 1000でとってきてフレンドを判定して最終的に10行しか見ないとこのソースを†魔改造†した 14:26:22 8882 ←暫定2位
最終結果 確か7000前後
魔改造というのは、ベンチは通りはするのですが、実際の画面を見るとデータが表示されておらず、こりゃやばいとなってそこを直すのに結局18時までかかってしまいました。もう少しgolangをやっておけばよかった。直せるところは他にもいろいろありそうでした。
良かった事
・アクセスの多い箇所や遅い箇所をちゃんと計測して、修正できました。そのおかげで早い段階で高得点を出せたのかと思いました。チームメンバーに感謝です。
反省点
・あんまりきっちりと役割を分けない方がよかったと思いました。これ!という得意分野がそれぞれあるようなチームならいいと思いますが、僕たちのようなみんなどっこいどっこいのチームではそれぞれがそれぞれにできることをやるというのがいいのかなと思いました。実際、僕は今回インフラ側に回るということでgolangの勉強を全くやってなかったのですが、蓋を開けたらインフラ側の調整よりもコードの修正のほうが大切そうな出題で、すごく手間取りました。やっとけばよかった!
・でかいモニタがあったほうがいい。
復習やるぞー!
おわり
YAPC::Asia Tokyo 2日目
2日目も行ったー
寝坊したので11時からのセッションしか聞けなかったぜ。
聞いたセッション
・NASA主催の世界最大級ハッカソンSpaceAppsを運営した話
→ハッカソンの紹介と運営側としての経験。キーボードにプロジェクションマッピングしてるのカッコよすぎた。イベントの運営側に回ると、仲間ができ、イベント中の居場所ができ、段取り力(運営力?仕切り力?)がつき、達成感を味わえるとのこと。これは本当にそうだと思うし、今僕が勉強会とかカンファレンスの運営に積極的になろうとしている理由でもある。これからも継続していきたいと思った。
・Docker3兄弟について
→Dockerも勉強したいと思って聞くことにしたけど、あまりにも僕の知識が無さすぎてついていけなかった。もう少し勉強してから、またこのスライドを見返したい。
・実践nginxモジュール開発〜CとLua〜
→こちらもDockerと同様。。。ただnginx使いたいと思ったし、勉強する必要がある!そのモチベになったのはよかった。
・サンタクロースを支えるIT技術
→エンジニアが集まってボランティア活動の一環としてサービスを作っていく話。仕事ではないので気楽に、でも真剣に技術を追えるのは楽しいだろうなと思った。もし僕なんかの技術でも誰かが必要としてくれるならボランティア活動してみたいと思った。
・HTTP2 時代の Web
まとめ方とか、伝え方とか、内容の濃さとか、とにかくすごい発表だった。HTTP2は日本が一番進んでいるとは聞いていたけど、それに対する自信の表れなのかなと思った。今日で基礎的な知識は身についたと思うので、今後もっと深く勉強したいと思った。また分からなくなったらこの資料に戻ってこよう。
2日間を通して
いろんな方の発表を聞いた中でも、すでに知っている技術、全然知らない技術の洗い出しができた。知っていることはさらに深く、知らなくて勉強したいと思ったものは広く、勉強していきたい。発表の仕方、伝え方、話の持って行き方とか勉強になったので、僕も負けないようにガンガン発表していきたい。とりあえず来週Node学園で発表できる機会があるので、頑張る。今年でYAPCは最後とのことだけれども、もしまたこういったイベントがあったら手を挙げられて、採択されるように何か強い技術とか経験とかを探していきたいと思った。モチベーションが上がったので良かった。
そういえば今日の昼、お弁当がだだ余りしてたとのことで2つ食べた。2つ目のゴミを捨てに行ったら3つ目どうですか?と聞かれたがさすがに食べられなかった。おしまい。
YAPC::Asia Tokyo 1日目
行ってきた。酔っ払ってないと萎縮して(ビビって)記事を書けないような気がするので今書く。
聞いたセッションは
・世界展開する大規模ウェブサービスのデプロイを支える技術
→リージョンを跨いでサービスを運用すること、Gitのリポジトリが分散してる状態でのデプロイの方法
すごい辛そうだった(こなみかん
国際的なサービスや大規模なサービスに携わる際には参考になると思った。ただ僕の現状からは遠い話かもしれない。。。
・今フロントエンドで何が起こっているのか
Webの古き良き時代から今までの技術や考え方の移り変わり。だいたい知ってる技術とか話だったりした。
でも知ってるということはそういった知識が身についているということの認識にもなって良かった。これからも遅れずキャッチアップしていきたい。
本当はもっとスライドが長かったみたいなので、ぜひ完全版も見たいと思った。
・【sponsored contents】若手エンジニア達の生存戦略
→登壇者が同世代くらいの方ばかりで面白かった。結構考えさせられた。登壇者の方は仕事でPerl、業務外でもPerlを書いていらっしゃる方々だったと思う(違ったらごめんなさい)。僕みたいに仕事と業務外で書いているものが違う人とは、主に業務外の活動に対する考え方が違うのかなぁと思った。この業界、自分より年上の人はだいたい自分より経験が長くて長い間勉強してるので、あまりいわゆる老害と言われるような人はいないのかなと思った。多くの方が将来お金が欲しいとおっしゃっていたのが意外だった。僕はお金はそこそこに技術を身につけたい派なので。
・Electron: Building desktop apps with web technologies
→Electronは先日ちょっと触ってアプリを作ってみたので気になっていた。こういったセッションを聞くとまた何か作ってやろうという気になれるのでよかった。
もっといろんな技術を組み合わせたら色々できそう。アイディアを出そう。
・esa.io - 趣味から育てたWebサービスで生きていく
→一発当てたいと思った。サービスが当たる確率は10個に1個みたいな話があった。逆に考えると、10個出せば1個当たるなら決して確率は低くないのかなと思った。頑張ろう。
あんまりまとまってない気がして申し訳ない。
明日も参加する。
転職し、株式会社ビズリーチに入社しました。
タイトルの通りです。
先月末に、新卒から働かせていただいた会社を退職し、6/1に株式会社ビズリーチに入社しました。
前職に関しては特に良かったとも悪かったとも書くつもりはございませんが、ただ「特定派遣の」会社であったと書けば分かる方は分かっていただけるのかなと思います。
まぁそちらで色々とあったのですが、そのあたりのことをもし詳しく聞きたいという方がいらっしゃいましたら、是非飲みに行きましょう。ここにはとても書けません。
ビズリーチでもエンジニアとして働きます。言語としては主にJavaになるのかなと思っておりますが、面接の際に、サーバサイドのNode.jsや、フロントエンドJSなどJS系にも興味があり、OSSにもコミットしていると話したところ、そちらのほうの業務もさせていただけるっぽいです。今から非常に楽しみです。
まだまだ技術的に足りない部分も多々あると思いますが、これまで以上に積極的に技術を吸収して、OSSにも貢献して、技術者として成長していけたらなと思います。
また、今まさに大きく成長する途中の企業に入ったということで、ベンチャー企業が成長していく過程をこの目で見ることができ、それも大切な経験になると思っています。
何か大きいことができそうで、ワクワクしているというのが今の気持ちです。
歌舞伎座.tech#7「Reactive Extensions」に参加してきました!
以下、メモ程度ですがメモったものを記しておきます。
Reactive Extensions はじめました @okazukiさん
オブザーバーパターン
監視対象⇄監視者
IObservable⇄Observer
変わった時に通知する
監視される人は状態が変化したら値を発行する
そしたら、監視者が値を受け取って処理をする
IObservable<T>とは→
Push型のコレクション
・イベント
クリック(時系列でイベントが起きる)
・非同期処理(単一処理)
・普通のコレクションも0秒間に一気に値が発行される
コレクションでできること
・フィルタ
・射影(変換)
・合成
↓
マウスイベントを組み合わせる
mousemoveをPush型のコレクションにして
1つ前のコレクションの要素と合成して
mousedownまでスキップする(フィルタ)
mouseupまで拾う
とお絵描きアプリ
Observable Everywhere -Rxの原則とUniRxにみるデータソースの見つけ方 @neueccさん
onnextが0回以上発生した後に
oncompletedかonerrorが発生する
一見無関係のイテレータパターンとオブザーバーパターンに深い関連性がある
Observableの源流が必要
DOM、DBのRowはシーケンスになる
→シーケンスを見出す
Rxをつかうとネストを1段に抑えることができる
→callback地獄の回避
直列処理や並列処理やタイムアウト付与などをメソッドを足すだけで簡単にできる
UIEventもいろんなメソッドを流し込むことができる
ボタン
インプットフィールド
トグル
スライダー
衝突もIObservable<Collection>
ゲームループは毎フレームごとにメソッドが呼び出される
Rx = Observable + LINQ + scheduler
schedulerは時空魔法の、時と空間(実行スレッド...)をコントロール
PollingはIObservableと「見なせる」
ログはInProcessにおいてもStreamとして扱えるべき
nicocasのwebフロントで使ってみた @crexistaさん
http://www.slideshare.net/kaorashibacaki/kabuki-rx2
RxJSの中を追う @wilfremさん
http://www.slideshare.net/wilfrem/tech-rxjs
RxのHot/Cold
Rxが中で何をやっているかがわかればハマりどころを回避できる?
言語ごとの実装に大きな違いはない
「doはColdなObservableだ」
RxはonNextが0個以上
そのあとにonCompleted or onError
オペレーターはObservableを返す
オーペーレータは繋げられる
メッセージはオペーレータに加工されて伝達する
オペレーターがオペレーターをsubscribeする方法とは?
オペレーターはObserverを「生成」する
AnnonimousObservable
Hot=Observerのチェーンを作ること
チェーンを作るからメッセージが流れる
Hotとはsubscribeしてチェーンを作ること
一番先頭まで
タイプ1”非保持型”
Observerを保持しない
何回subscribeしても同じ結果となる
例
大抵のオペレータ
Cold Observable
タイプ2”保持型”
observableをキャプチャする
必要になった時にメッセージを流す
流す対象をリストとして持ち、分配機能を持つ
例
publish, fromEvent, Subject
Hot Observable Hotな性質
SubjectはObserverをリストとして持つ
Observerとしてメッセージを受け取る
Observableとしてメッセージを配信する
すBジェcTを挟むと”保持型”になる
Cold→Hot変換
Rxは中で
(乱暴目に言うと)5つの要素で構成されている
Observableとオペレータ→手前の参照を持つ→Cold
subscribe差し替え
filter
map
Subscribeによって後ろのObserverを知る→Hot
disposeを呼ぶかストリームが終了で消滅
Schedular
実行する関数をイベントキューに積む機構
メッセージの送信タイミングを変えられる
実装方法は言語によって違いはない
RxJSはイベントループに積む/積まないのみ
Schedular.defaultが使える
積む関数は適切に選ばれる
使い所
重たい処理
処理を一息つかせたい時
スレッド切り替え/同期したい時
testing RxJS @erukitiさん
http://www.slideshare.net/erukiti/testing-rxjs
Clean Architectureで設計してRxJSを使った話 @_kondeiさん
http://www.slideshare.net/_kondei/clean-architecturerxjs
iOS+SwiftでFRP @shun_fuさん
Swiftは一番愛されている言語
HotかColdか、完全に無限か潜在的に有限か、を型で表現できるようにしたい
UniRxを使ってみた話 @toRisouPさん
話が頭に入ってこない
UnityでRxが使えるのは本当に素晴らしい
・感想
Rxに関してはざっくりとした理解しかしてなかったんですが、今回でしっかりと理解できたと思います。
概念的な話も、実際に使ってみた話もどれもとても分かりやすく、ためになりました。