たこぶろ

エンジニアははてなでブログを書くものだそうなので作ったブログです。

2015年の振り返り

12/31だ。実家の掃除がひと段落したので振り返りブログを書かないといけない。

 

去年末に立てた目標は概ね達成できた。

今から思うとこの程度の目標とか簡単じゃんと思えるので、その分成長できたのかなぁと。

また隠れ目標であった「転職する」もできたので良かった。

それに伴って資格取るとかいう目標はどっかいった。

 

2015年にやったこと

  • LT発表5回(たぶん)

    • 東京Node学園 2回
    • NodeSchool 2回
    • 雑兵MeetUp
  • イベントスタッフ・運営側参加(HTML5 Conference、東京Node学園祭、NodeSchool)

  • OSS関連

  • いろいろあって春頃にLongest Streakが途切れてしまったのが残念。下半期はなんとか継続できたのでよかった。

  • まさかスター100を超えるようなものを作れるとは思ってなかったのでびっくりした。

2016年の目標

  • 大好きなNode.jsを広める活動を今以上に行っていきたい。
  • Longest Streakを途切れさせない。とりあえずは目指せ365日。
  • 来年もスター100を超えるような何かを作りたい。
  • 海外カンファレンスに行きたい。
    • 登壇も視野に入れて。

おわりに

  • 今年は本当にたくさんの方と知り合うことができてとても嬉しいですし、いつもみなさんから刺激を受けて頑張りたいと思っております。 お世話になりました。そして、来年もまたよろしくお願いいたします。

ISUCON5に出場して暫定2位とかなって一矢報いたが結果圏外に弾き出された!

isucon.net

 

初めて参加してきました!

 

僕が出場したくて同僚を誘ったのですが、みんな休みの日にも関わらず参加してくれて本当に嬉しかったです!一人では出場できないので。。。

まずは一緒に出場してくれたみんなに感謝。そして、参加者の何倍も大変な中運営をしてくださったみなさんに感謝です。ありがとうございました!

 

結果としては予選敗退になりました。

しかし、途中暫定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を運営した話 

www.slideshare.net

→ハッカソンの紹介と運営側としての経験。キーボードにプロジェクションマッピングしてるのカッコよすぎた。イベントの運営側に回ると、仲間ができ、イベント中の居場所ができ、段取り力(運営力?仕切り力?)がつき、達成感を味わえるとのこと。これは本当にそうだと思うし、今僕が勉強会とかカンファレンスの運営に積極的になろうとしている理由でもある。これからも継続していきたいと思った。

 

・Docker3兄弟について

speakerdeck.com

→Dockerも勉強したいと思って聞くことにしたけど、あまりにも僕の知識が無さすぎてついていけなかった。もう少し勉強してから、またこのスライドを見返したい。

 

・実践nginxモジュール開発〜CとLua〜 

speakerdeck.com

→こちらもDockerと同様。。。ただnginx使いたいと思ったし、勉強する必要がある!そのモチベになったのはよかった。

 

・サンタクロースを支えるIT技術 

www.slideshare.net

→エンジニアが集まってボランティア活動の一環としてサービスを作っていく話。仕事ではないので気楽に、でも真剣に技術を追えるのは楽しいだろうなと思った。もし僕なんかの技術でも誰かが必要としてくれるならボランティア活動してみたいと思った。

 

・HTTP2 時代の Web

www.slideshare.net

まとめ方とか、伝え方とか、内容の濃さとか、とにかくすごい発表だった。HTTP2は日本が一番進んでいるとは聞いていたけど、それに対する自信の表れなのかなと思った。今日で基礎的な知識は身についたと思うので、今後もっと深く勉強したいと思った。また分からなくなったらこの資料に戻ってこよう。

 

2日間を通して

いろんな方の発表を聞いた中でも、すでに知っている技術、全然知らない技術の洗い出しができた。知っていることはさらに深く、知らなくて勉強したいと思ったものは広く、勉強していきたい。発表の仕方、伝え方、話の持って行き方とか勉強になったので、僕も負けないようにガンガン発表していきたい。とりあえず来週Node学園で発表できる機会があるので、頑張る。今年でYAPCは最後とのことだけれども、もしまたこういったイベントがあったら手を挙げられて、採択されるように何か強い技術とか経験とかを探していきたいと思った。モチベーションが上がったので良かった。

 

そういえば今日の昼、お弁当がだだ余りしてたとのことで2つ食べた。2つ目のゴミを捨てに行ったら3つ目どうですか?と聞かれたがさすがに食べられなかった。おしまい。

YAPC::Asia Tokyo 1日目

YAPC::Asia Tokyo 2015

 

行ってきた。酔っ払ってないと萎縮して(ビビって)記事を書けないような気がするので今書く。

 

聞いたセッションは

・世界展開する大規模ウェブサービスのデプロイを支える技術

this.aereal.org

→リージョンを跨いでサービスを運用すること、Gitのリポジトリが分散してる状態でのデプロイの方法

すごい辛そうだった(こなみかん

国際的なサービスや大規模なサービスに携わる際には参考になると思った。ただ僕の現状からは遠い話かもしれない。。。

 

・今フロントエンドで何が起こっているのか

t.co

Webの古き良き時代から今までの技術や考え方の移り変わり。だいたい知ってる技術とか話だったりした。

でも知ってるということはそういった知識が身についているということの認識にもなって良かった。これからも遅れずキャッチアップしていきたい。

本当はもっとスライドが長かったみたいなので、ぜひ完全版も見たいと思った。

 

・【sponsored contents】若手エンジニア達の生存戦略 

→登壇者が同世代くらいの方ばかりで面白かった。結構考えさせられた。登壇者の方は仕事でPerl、業務外でもPerlを書いていらっしゃる方々だったと思う(違ったらごめんなさい)。僕みたいに仕事と業務外で書いているものが違う人とは、主に業務外の活動に対する考え方が違うのかなぁと思った。この業界、自分より年上の人はだいたい自分より経験が長くて長い間勉強してるので、あまりいわゆる老害と言われるような人はいないのかなと思った。多くの方が将来お金が欲しいとおっしゃっていたのが意外だった。僕はお金はそこそこに技術を身につけたい派なので。

 

・Electron: Building desktop apps with web technologies

→Electronは先日ちょっと触ってアプリを作ってみたので気になっていた。こういったセッションを聞くとまた何か作ってやろうという気になれるのでよかった。

もっといろんな技術を組み合わせたら色々できそう。アイディアを出そう。

 

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

speakerdeck.com

→一発当てたいと思った。サービスが当たる確率は10個に1個みたいな話があった。逆に考えると、10個出せば1個当たるなら決して確率は低くないのかなと思った。頑張ろう。

 

あんまりまとまってない気がして申し訳ない。

明日も参加する。

 

Electronを使ってtextをimageに変換する「Aramin」というやつを作った

Electronを触ってみたいと思っていたので練習みたいな感じで作ってみました。 本当に簡単に作成/配布ができるので、また何か思いついたら作ってみたいです。

f:id:tako_black:20150803180340p:plain

上の入力欄に入力したら下に画像が出ます。 ドラッグ&ドロップtwitterに気軽に140字以上の文(画像なので)を投稿できるし便利

リポジトリこちら IssueやPR welcomeです!

転職し、株式会社ビズリーチに入社しました。

タイトルの通りです。

 

先月末に、新卒から働かせていただいた会社を退職し、6/1に株式会社ビズリーチに入社しました。

 

前職に関しては特に良かったとも悪かったとも書くつもりはございませんが、ただ「特定派遣の」会社であったと書けば分かる方は分かっていただけるのかなと思います。

まぁそちらで色々とあったのですが、そのあたりのことをもし詳しく聞きたいという方がいらっしゃいましたら、是非飲みに行きましょう。ここにはとても書けません。

 

ビズリーチでもエンジニアとして働きます。言語としては主にJavaになるのかなと思っておりますが、面接の際に、サーバサイドのNode.jsや、フロントエンドJSなどJS系にも興味があり、OSSにもコミットしていると話したところ、そちらのほうの業務もさせていただけるっぽいです。今から非常に楽しみです。

 

まだまだ技術的に足りない部分も多々あると思いますが、これまで以上に積極的に技術を吸収して、OSSにも貢献して、技術者として成長していけたらなと思います。

 

また、今まさに大きく成長する途中の企業に入ったということで、ベンチャー企業が成長していく過程をこの目で見ることができ、それも大切な経験になると思っています。

何か大きいことができそうで、ワクワクしているというのが今の気持ちです。

 

歌舞伎座.tech#7「Reactive Extensions」に参加してきました!

kbkz.connpass.com

 

以下、メモ程度ですがメモったものを記しておきます。

 

 

Reactive Extensions はじめました @okazukiさん

オブザーバーパターン

 監視対象⇄監視者

 IObservable⇄Observer

変わった時に通知する

監視される人は状態が変化したら値を発行する

そしたら、監視者が値を受け取って処理をする

IObservable<T>とは→

Push型のコレクション

・イベント

クリック(時系列でイベントが起きる)

・非同期処理(単一処理)

・普通のコレクションも0秒間に一気に値が発行される

 

コレクションでできること

 ・フィルタ

 ・射影(変換)

 ・合成

マウスイベントを組み合わせる

mousemoveをPush型のコレクションにして

1つ前のコレクションの要素と合成して

mousedownまでスキップする(フィルタ)

mouseupまで拾う

とお絵描きアプリ

 

Observable Everywhere -Rxの原則とUniRxにみるデータソースの見つけ方 @neueccさん

http://t.co/EXNwy5POUD

onnextが0回以上発生した後に

oncompletedかonerrorが発生する

一見無関係のイテレータパターンとオブザーバーパターンに深い関連性がある

イテレータのためのLINQがオブザーバーにもできる

 

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+SwiftFRP @shun_fuさん

Swiftは一番愛されている言語

HotかColdか、完全に無限か潜在的に有限か、を型で表現できるようにしたい

 

UniRxを使ってみた話 @toRisouPさん

話が頭に入ってこない

UnityでRxが使えるのは本当に素晴らしい

 

・感想

Rxに関してはざっくりとした理解しかしてなかったんですが、今回でしっかりと理解できたと思います。

概念的な話も、実際に使ってみた話もどれもとても分かりやすく、ためになりました。