ブックマーク / medium.com (153)

  • How I write Go HTTP services after seven years

    UPDATE: You can watch a video of me giving this talk at Gophercon 2019:

  • Continuous Profiling of Go programs

    One of the most interesting parts of Google is our fleet-wide continuous profiling service. We can see who is accountable for CPU and memory usage, we can continuously monitor our production services for contention and blocking profiles, and we can generate analysis and reports and easily can tell what are some highly impactful optimization projects we can work on. I briefly worked on Google Cloud

    Continuous Profiling of Go programs
  • Rapid UX Research at Google

    How do you conduct impactful user research in a short space of time? As the manager of a Rapid Research team at Google, I’ve built a team around just that — delivering meaningful insights, fast. My job is to ensure our product teams get the insights they need quickly and effectively. For my team, that means getting everything done within the space of a week. In this article I’d like to share my ex

    Rapid UX Research at Google
  • 真面目な人を本気にさせる方法

    先日、他社の開発の方々が、アジャイルに関する相談ということで、弊社にいるアジャイルに詳しい髪の長いおじさんに訪ねてきた。その中で、実感駆動開発の話になって、久しぶりに「気(マジ)と真面目(マジメ)」の話を聞いた。 この話を聞いてから、人がプロダクトの価値について考えられるようになるにはどうしたらいいのか考えてみた。 TL;TRありきたりな回答だけれど、さっさとリリースして、さっさと使ってもらう。それをできるためのことを、もちろんリスクを下げつつ、できるようにするためのことを頑張ろう。 気と真面目 人はドキュメントを前にして真面目な態度を取るが、動くソフトウェアを前にして気になる。端的に言うと、人は仕様書などドキュメントを前にするとそれを徹底的に重箱の隅を突くようなレビュー(真面目)をしてしまうが、当に欲しかったことに対して考え始める(気)は実際のプロダクトを前にしてからという話だ

    真面目な人を本気にさせる方法
  • 研究者からエンジニアに転生して1年経ちました

    昨年の1月にDeNAに転職し、研究者からエンジニアに転生してから1年経ちましたので、色々振り返ってみたいと思います。ついでにMediumとやらを始めてみました。書いていて気持ち良いです。 前置き転職前は、KDDI研究所にて10年ほど画像検索・画像認識の研究をしていました。その間に、Stanford Research Instituteに共同研究で半年間滞在させてもらったり、事業部でスマホの企画開発やったり、同時期に博士課程に進学したり、育児休職を取ったりしました。その辺りについては下記に書きました。

  • 年収とシリコンバレーとソフトウェアエンジニア

    「シリコンバレーでは、ある程度の経験を積んだソフトウェアエンジニア年収は3000万円に容易に達しうる」 今回も尻馬に乗りますが、このclaimが事実であるか検証します。 シリコンバレーまず、冒頭の「シリコンバレー」について。 以前書いた通り、シリコンバレーと言われる地域の位置や範囲は、人やコンテキストによって異なるため、同定することが難しいです。具体例を出します。 この証拠によれば、楽天米国社があるところがシリコンバレーです。楽天米国社がどこにあるかというと、San Francisco Peninsulaの真ん中あたり。

    年収とシリコンバレーとソフトウェアエンジニア
  • Gyazo の Web API の設計変更 - r7kamura - Medium

    業務委託として現在 Nota 社の Gyazo のサーバサイドの開発をお手伝いさせてもらっているのですが、その中でやっていることについて幾つか紹介したいと思い、今回は開発環境で全面的に Docker を使うようにしたという話について書こ… ここでは、Web ブラウザやその他のクライアントから HTTP を介して利用し、JSON などのデータフォーマットでクライアントアプリケーションとやり取りを行うようなエンドポイントのことを Web API と呼んでいます。 Jbuilder からの移行これまでのコードでは、JSON を生成するために Jbuilder というライブラリを使っていました。これは DSL を用いて JSON を生成するライブラリで、Rails の場合は ActionView と協調して動きます。 Jbuilder からの変更の理由は幾つかあるのですが、主要な理由を挙げると、以

  • エンジニアが「明日からマネジメントして」と言われたら

    製品開発におけるマネジメントの全体感最初に結論エンジニアがマネジメント始める際には、↑のようにざっくり簡単にでいいので開発チームのマネジメントの全体像を掴んだうえで、自分がマネジメントするべき範囲を明確にして動くことをオススメしてみます。 以降、もう少し詳しく説明します。 なんで書こうと思ったかエンジニアにとってマネジメントとはなにか。突出した技術力を持った人というのがエンジニアでは花形なイメージが一般的にはあるでしょうし、マネジメントはエンジニア全員にとって必須科目ではありませんが、一定の経験、年齢、スキルになったら考えることだと思います。 しかし、エンジニアにとってマネジメントという言葉はとても曖昧。必須科目でない分、特定技術に関するものよりもずっとドキュメントや教材がすくなく、なにをやればいいかけっこうわかりにくい。 最近だとVP of Engineeringみたいなポジションがメジ

    エンジニアが「明日からマネジメントして」と言われたら
  • 子育てエンジニアの自由時間がない件について

    この記事はぼくのあどべんとかれんだー10日目の記事です。 今日はまったくコーディングの時間がとれなかったので、速攻でこの記事を書いて終わります。 うちはエンジニア夫婦で1歳半の子どもがいます。お互いフルタイムで働いています。まだ子どもにすごく手がかかるため個人の自由時間はほぼない状態が続いています。ではどうやってこれまでのアドベントカレンダーの記事を書いてきたかというと、夜子どもを寝かしつけ、それから自分が寝るまでの時間に書いていました。平日は当然昼間は仕事があるので、記事は書けません。休日はというと、むしろ平日よりも自由時間は少ないです。 例えば、今日どういう時間の使い方だったかというと、 朝7時半ごろ子どもとともに起床、おむつを変えたあと、奥さんが朝ごはんを子どもにあげて、その間にぼくはトイレ等済ませます。子どもの朝ごはんが終わったら、奥さんが朝ごはんをべるので、ぼくが子どもの面倒を

  • Rails Developers Meetup 2017 でLTした

    まず、誘っていただいた主催の hiranoさん、秒速さん、そして当日素晴らしい運営をしてくださったスタッフのみなさん、当にありがとうございました。 個人的には、設計の話が好きなのでwillnetさんの「レールの伸ばし方」が良かった。あとペパボさんのRails & Vue.js もやろうか考えてたので良い知見だった。 かくいう私も「Railsを学び、現場に入るまで」という内容で2~3年前まだ私がRailsアプリケーションを書き始めたばかりのころの体験談を話した。 特にサービスオブジェクトの話やレイヤーの違いで悩んでいたので、その悩みをそのまま書いた。当は細部まで持論を話したかったがLTという限られた時間ということもあって基的にリファレンス貼りまくってこれを読んでくれという内容にした。 反応としてはRailsをやり始めたばかりの人や、経験の浅い人に共感が得られたらしい。今回の聴衆のターゲ

  • 🚀 Announcing Parcel: A blazing fast, zero configuration web application bundler 📦

    Today I’m super excited to announce Parcel, a blazing fast, zero configuration web application bundler that I’ve been working on for the past few months. Check it out on Github! I started working on Parcel in order to solve two main problems that I have found with existing module bundlers like Browserify and Webpack: performance, and configuration experience. Features🚀 Blazing fast bundle times —

    🚀 Announcing Parcel: A blazing fast, zero configuration web application bundler 📦
  • 休日にカンファレンスがあるときに、参加者はどうするか?

    土日や祝日にフルタイムで技術カンファレンスがあるとして、例えば参加しますよね、そのときにどうするか考えようという提起です。 カンファレンスは疲れるセッションを黙って座って聴いてるだけでもそれなりに疲れるし、せっかく参加するなら登壇者の人を捕まえて話をしたり、他の参加者と議論したり、もしくはワークショップセッションに参加したりとかしますよね。聴いてるだけみたいな参加の仕方をしても「あとで資料だけみればいいや」程度の価値しかないから。なので、フルタイムで1日参加するとそれなりに疲労するわけです。楽しさとは別に。 土日2daysなカンファレンスの場合、前の週フルタイムで働き、土日に疲労し、次の週またフルタイムで働くとか、たぶん働きすぎなので、最低でも次の月曜とかは休みたくなるのが人間ってものだと思います。私はそうする。 平日カンファレンスの参加は休暇を使いますか?CROSS 2016に登壇したと

    休日にカンファレンスがあるときに、参加者はどうするか?
  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
  • Sentry で始める快適エラートラッキング on React Native

    この記事は React Native Advent Calendar 2017 の 4 日目の記事です。 TL;DRエラートラッキングサービス SentryReact Native における導入方法の紹介Sentry を使えば、 OS ・バージョン等どのような環境でどのような問題が起きたかがわかるようになるどのユーザがどのようなシチュエーションで問題に遭遇したかがわかるようになる基的な使い方を紹介 エラートラッキングの必要性とその方法一切の問題無くアプリケーションが動作するのであればそれに越したことはありませんが、十分なテストを以てしても予期せぬ障害は起きるものですよね。 そういった問題は全て解決されるべきですが、そのためには以下が不可欠でしょう。 問題が発生したことに気付ける仕組み問題が発生する原因を(容易に)知ることが出来る仕組み文字通り解釈すれば前者をエラートラッキングと呼ぶ

    Sentry で始める快適エラートラッキング on React Native
  • flow をもうちょっと使ってみる. “Facebook の TypeScript” こと flow を… | by Naohiro Oogatta | Medium

    “Facebook の TypeScript” こと flow を Firebase Cloud Functions 用の JS を出力するのに使っています。導入は簡単ですが、二歩めがめんどくさいです。半年めんどくさがっていましたが、ちゃんとやってみました。 flow の好きなところ一部だけ導入するのが簡単だし、それが推奨されている。一歩めが超楽だし、適当に入れるだけで役に立ってくれる。flow の好きじゃないところドキュメントが全部 ES Module で書いてあって、自分の用途では実際どうしたらいいか、いろいろ理解していないとわかりづらい。二歩めがめんどくさい。とくに ES Module と CommonJS の違いを意識してないとならない。以下、今回やったこと・気づいたことです。 コミュニティメンテナンスの定義ファイルを使う場合$ yarn add --dev flow-typed

  • 作業用に曲面ディスプレイを導入 - r7kamura - Medium

    主にプログラミング作業用に 34 型の曲面ディスプレイを導入したので、嬉しがって設置してみた様子を紹介する。 PC での作業用途ならアームが欲しいスタンドがしっかりとした構造になっている分、スタンドが奥行きを取る構造をしている。PC での作業用に使う場合は、少し近すぎるかもしれない。このままでもまあ良いけど、もう少し遠くても良いかな、ぐらいの感覚。 幸い標準的な規格のディスプレイアームに対応しているので、ディスプレイアームを取り付けるかどうか検討中。スタンド部分がかっこいいので微妙に惜しい。スタンドにボールベアリングが付いていて、角度調整がかなり柔軟に行えるようになっているので、机の奥側に適当な台を置いて角度を調整するだけでも良いかもしれない。 やはり曲面ディスプレイは作業に向いている以前までは作業用に 43型の 4K 平面ディスプレイを利用していたが、大画面で迫力がある一方、机の中央に座

    作業用に曲面ディスプレイを導入 - r7kamura - Medium
  • Goでサーバーレス動画変換

    概要よくGoogle App Engineに関する記事を書くのですが、今回はAWSです。 APIサーバーでGoを使うことももちろんありますが、他にもgo-apexでLambdaファンクションを書く場面というのもあると思います。 以前go-apexのdeployについての記事を書いたので、それは下記を別途ご覧ください。 今回はElastic Transcoder(動画のエンコーダ)を例にサーバーレスにGoが役立つ実例を紹介します。 やりたいことS3に動画をアップロードするアップロードの通知を元にlambdaが呼ばれるElasticTranscoderを呼ぶエンコード結果をS3に保存するというフローです。今回扱うのは、3の部分です。1,2,4の部分は別途AWSの設定が必要で、個人的にはterraformでやるべきだと思っています。 go-apexでのエンコード処理まずlambdaの中で真っ先に

  • deeplearning.ai: Announcing new Deep Learning courses on Coursera

    deeplearning.ai: Announcing new Deep Learning courses on Coursera Dear Friends, I have been working on three new AI projects, and am thrilled to announce the first one: deeplearning.ai, a project dedicated to disseminating AI knowledge, is launching a new sequence of Deep Learning courses on Coursera. These courses will help you master Deep Learning, apply it effectively, and build a career in AI.

    deeplearning.ai: Announcing new Deep Learning courses on Coursera
  • LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました

    依存ライブラリ形式は以下に対応しています。 CocoaPodsCarthageYAML設定ファイルによる指定(例はこちら)特に、3つ目の「YAML設定ファイルによる指定」があるので、例えばソースを直接入れたりGit Submodule使っている場合も、そちらに記載すればOKです。SwiftPMはiOSアプリではまだ通常使われていないので未対応ですが、普及したらCocoaPods・Carthageと同様に標準対応する予定です。 生成される結果例このように、設定アプリ上でキレイに一覧されます。 インストールの仕方Installation にいくつか書いてありますが、CocoaPodsでのインストールをお勧めします。 Podfileに次の行を追記することでインストールできます。 pod 'LicensePlist'CocoaPodsを使っていない場合、Homebrew経由で、以下のコマンドによる

    LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました
  • 一日8時間、60日間ペアプロしてみて思った日常ペアプロのコツ. 一日だいたい8時間、今日まであわせて60営業日くらい、固定ペアのペアプログラミン… | by Naohiro Oogatta | Medium

    一日だいたい8時間、今日まであわせて60営業日くらい、固定ペアのペアプログラミングで新規アプリのクライアントからサーバまで開発してみました。チームにエンジニアがちょうど二人だったので。 もはや日常がペアプロです。ペアプロ以外でやってるのは簡単なバグ修正やちょっとした環境整備で、あとはすべて二人で開発しています。ちなみにまだまだ続いています。狂気です。 いい大人が二人集まって狂気を選ぶことになったわけは、成果も出てないしまだ書けません。でも今って、ペアプロやモブプロがブームだって聞きました。それじゃあアホみたいにやってる人間としては黙ってられないです。基的なことはおいといて、とりあえずこれだけはってつくづく思ったのとか、ペアプロを有意義に長く続けるコツをまとめてみました。 (ちゃんとした話は ペアプログラミングの5W1HとFAQ / 5W1H and FAQ of Pair Program