`good first issue` で Node.js に contribute してみよう!

はじめに

この記事は

qiita.com

の 17 日目です。

good first issue とは

  • good first issue - Issues suitable for newcomers to process

node/onboarding-extras.md at master · nodejs/node · GitHub

とあるように初めての人に適した Issue としてラベリングされています。

Advent Calendar 何書こうかなーと迷っていたところ、ちょうど良い issue があったのでそれを題材にしてみました💦

Tracking issue: Migrate errors to internal/errors.js

github.com

今回はこちらの Issue に対応してみました。

古いスタイルのエラーを internal/errors.js module を使ったものに書き換えるだけです。

とりあえず他の人とかぶらないように、これをやる宣言をしておくと良いと思います。

Issue に書かれた説明をよく読んで各種 guide も一通り目を通して修正を行って、テストを通すと document が足りないとか、一行の行数が 80 文字超えてしまっているとか教えてくれるのでそれもきちんと対応しましょう。

おわりに

今回対応した pull request はこちらです。

github.com

make -j4 test が通っていないんですが master branch でも通っていなかったので reviewer の反応待ちをしています。

OSS に contribute する事に興味がある方は good first issue を見つけてみてください!

golang.tokyo #11 リンク集 + ちょいメモ

techplay.jp

闇のBashををGoに置き換える技術(nashiox)

How Go test tests(timakin)

speakerdeck.com

  • テストのテスト
  • 関数がどんな出力をするのか Example を出力する機能
  • output がないとExample が出力されないバグがあった
  • testdata
  • contribute しましょう!

Go2の世界(niconegoto)

github.com

go-sql-driver/mysqlの問題に救われて、そして更新したら死んだ話(shinofara)

  • 資料公開されていない?

  • 設定の初歩的なミスをしていたがライブラリのバグのために正常に動いていた

  • ライブラリのバグ修正によって設定ミスが顕在化
  • きちんと確認しましょう

DIコンテナを使わないDI(morikuni)

speakerdeck.com

Go開発を助けるGoツールGo選のGo紹介(haya14busa)

docs.google.com https://beta.golang.org/doc/go1.10 https://github.com/haya14busa/goverage

GoでJavaのライブラリを使う(juntaki)

speakerdeck.com

  • go - (cgo) - C - (JNI) - Java

go tool traceを使ってみよう(nametake)

go tool trace - Making Pusher trace - The Go Programming Language

Go1.10導入予定のキャッシュビルドについて(zchee)

  • 資料まだ公開されていない?

今年作ったGoツール10(?)選(Songmu)

  • 資料まだ公開されていない?

Machine Learning with Go を読んで(ysaito)

speakerdeck.com

MP3 デコーダを C から移植した話(星一)

docs.google.com

最強のDatastoreライブラリを作った(vvakame)

speakerdeck.com

Goで地図サーバを構築した話(tsukumaru)

qiita.com

Alfred Workflows by Go(仮)(enta)

speakerdeck.com

https://github.com/endotakuya/alfred-go

# golang.tokyo #6 雑メモ

golangtokyo.connpass.com

補欠繰り上がりで参加しました

ブログ枠では無かったんですが、社内で「レポート期待しています!」と言われたので雑メモを上げておきます

DeNA 宣伝枠

  • DeNA では golang を利用しています
    • OPF
    • オートモーティブ
    • 新規ゲーム
    • 新規事業
    • AI でもツールで使っている lltsv

golang.tokyo について

  • golang.tokyo は golang を推進するためのコミュニティです

gopher fest について / tenntenn さん

初めて microservices をgolang で作った時に得た教訓 / 村田さん

ゲーム開発には欠かせない?!あれをシュッと見る / Konboi

Go code Review Comment を翻訳した話

Scala から go に来た話 / James

Goにおける暗号アルゴリズムを利用する

golang.tokyo #5 にブログ参加枠で参加

golangtokyo.connpass.com

〜 GCPUG Tokyo さんとの共同開催です 〜

遅くなってすみません…

時間経ってしまった割に単なるメモ書きです

訂正箇所がありましたらご連絡いただけますと幸いです

吉海 将太 / 株式会社カブク

Node学園 24時限目で発表した

もう一ヶ月以上前の事ですが…

一応記録として

nodejs.connpass.com

f:id:TokyoIncidents:20170508020945p:plain

from https://iojs-jp.slack.com/

という事で 2 日前に決まったのでほぼぶっつけ本番で…

slides.com

実際は github の README.md とそこに記載された Demo を見ればほとんどわかります

なので内容はありません

が、動かしてみるのが大事という事で…

golang.tokyo #3 にブログ枠で参加した #golangtokyo

Intro

すみません、超雑なメモ書きです

ぶっちゃけブログ枠が空いていたので無理やり参加した感じです🙇

訂正の必要がある箇所がありましたらお知らせいただけると幸いです

Accelerating real applications in Go

Accelerating real applications in Go

久保達彦(id: cubicdaiya) / 株式会社メルカリ

遅れてしまって久保さんのトークは後半しか聞けませんでした 🙇

  • Worker の数だけ gorutine を起動する
  • ブロッキングしないための工夫

    • メトリックを取る
    • channel の使用量は len() を使うと取れる
  • APNS

    • Worker の数 + pusher pool の数だけ push を送れるようになった
  • モニタリング

既存のアプリケーションに golang で proxy server を挟んで性能を出す。golang にはマッチしている

感想

  • gaurun は以前から mercari さんで production 投入されている push 基盤なので相当ノウハウが溜まっていそうです

PERFORMANCE OPTIMIZATIONS

Carlo Alberto Ferraris / 楽天株式会社

https://slides.com/cafxx/perf-opts-devops/live

performance / Optimization

Theory /= practice

価値を共有しよう

最適化には最初に計測

あなた (開発者) のコストはサーバーより高い

12factor.net 日本語もあるよ

冗長化すれば安定する

しかし冗長化は簡単じゃない

自動的にリカバーしよう

全部を自動化しようとは言わない

基本は挑戦すること

KISS (Keep It Simple, Stupid)

コードを読む時間は書く時間の10倍にもなる

可読性とメンテナンス性を最適化するべき

読みにくい早いコードより読みやすい遅いコードの方が良い。コンピューターリソースの方が開発者より安いのだから

単一の目的

循環参照はダメ

分離しよう

可視化しよう

メトリックス、ログを見る

アラートは最後の結果を出すべき

まとめ

シンプルに、すべてを計測し、問題を最適化する

Q: Slack が好きで使ってるんだけど、どんなインターフェースを推奨します?

A: 状態を監視するのにチャットを使ったりする (的な…?その後聞き取れませんでした…)

感想

  • golang に限らず全ての開発現場に当てはまるようなお話。back to basic な感じで身の引き締まる想いでした

LT

Streamの扱い方

Streamの扱い方: Slides

辻 純平 / AWA株式会社

  • 一度 []bytes に変換して decode するコードをよく見かける

  • これは不要

  • Stream を使うメリット

    • メモリの効率化
    • 標準パッケージの多くがサポート
  • 実際に計測してもメリットを表している

  • 実装例

    • json.Unmarshal -> json.NewDecorder
    • io.Copy
    • bytes.Buffer -> io.Pipe
    • io.Reader

感想

  • 実際の経験からの有用な Tips

  • deeeet さんの tweet も有用

Database migration

speakerdeck.com

konboi カヤック

Github ランキング上位の db migration tool は Rails style

Rails 方式

メリット

アプリケーションと同じ言語

デメリット

DSL を覚えるコスト コンフリクトしやすい

git-schemalex Schema lex を使った migration tool GitHub - soh335/git-schemalex: database migration tool for mysql schema is managed via git

差分を見て SQL を吐いてくれる。その際にハッシュ値が更新される

感想

  • 某所 Slack にてこの話題を小耳に挟んでいたので、ちょっと聞き流してしまいました💦

database/sql と connecton

www.slideshare.net

Talos208

database/sql

ドキュメントに connection を Close することは滅多にない、使いまわすというような事が書いてある

connection pool の話

接続数制限の API

  • 現場で起こった問題
    • connection が死んでいても気づけなかった
    • 1.6 で導入された DB.SetConnMaxLifetime() で解決した

感想

  • この辺の問題でしょうかね? github.com

懇親会

サイバーエージェント様ありがとうございました! (dictav さんの tweet を拝借 🙏 )

2016 年の振り返り

はじめに

今年はとても忙しい一年だった印象があります

そして新しいことにチャレンジ出来た一年でもありました

embulk, BigQuery, Java

今年は部署異動がありまして年始から分析基盤の業務を手伝っていました

自分の力不足もありご迷惑をおかけすることも多かったと思いますが、当たり前に OSS に pull request を出し、github 上で英語でコミュニケーションするのが普通になりました

以前 OSS に対して pull request を出した時には英語の壁を感じていて、説明しきれないからと途中であきらめてしまった事もありました

説得するために、拙いながらも必死で英語でコミュニケーションを取る機会を持てた事は本当に良かったです

プラグインを量産する優秀なお二人と、自分に不足している部分をきちんと指摘してくれたマネージャーには本当に感謝しております

イベントスタッフ

細かいものもありましたが、大きいもので言うと以下になります

7/2 〜 7/3 YAPC::Asia Hachioji 2016 mid in Shinagawa

9/3 HTML5 Conference 2016

9/8 〜 9/10 RubyKaigi 2016

11/12 〜 11/13 東京Node学園祭2016

いろいろと忙殺されて東京Node学園祭以外参加報告を書けませんでした…

関係者のみなさま本当に申し訳ございません

転職

優秀なエンジニアの圧倒的な生産性を目の当たりにし、圧倒的な経験値の差を感じた年でもありました

学ぶことも多く、違う環境に身を投じてスキルアップを目指すのか、踏みとどまりもっと多くを吸収すべきかを本当に真剣に悩みました

軽い気持ちから始めた転職活動でしたが、自分で思っているより評価していただき違う環境に身を投じる事にしました

何よりも僕の知っている優秀な人達は会社という枠に留まる事なく github という広い場所で切磋琢磨している印象が強く、今現在自分もそう有りたいと思っています

転職活動の時期が 8 〜 10 月とイベントスタッフとしての忙しさや、業務上の忙しさと重なってかなりきつかった

海外カンファレンス登壇

kysnm.hatenablog.com

以前から周りの人達が海外勢とコミュニケーションしているのを羨ましく感じており、自分でも一歩踏み出してみました

ダメ元で出した CFP が通ってしまって、正直言うと本当に逃げ出したくなりました

登壇後にいただいたフィードバックにより、もっと丁寧に前提を共有する時間が必要だった事を感じました。

おそらくそうする事で自分自身ももう少し落ち着いて発表できたのかもしれません

また普段から準備していないとやっぱりつらいなとも思いました

今後は意識的にいつそういう機会が来ても良いように材料を探しておきたいなとも感じました

まとめ

本年お世話になったみなさまありがとうございました

より深くコミュニティの恩恵を感じ、また多くの人とも出会えた一年でした

来年もよろしくお願いいたします