爆速でGo!

GoGo!

2019年は「柔よく剛を制す」

2019年ももう12分の1が終わってしまったので、ひっそりとメモ程度に記す。 北風と太陽で言えば、去年はほとんど北風だったので今年は太陽を取り入れていくという話。 タイトルの通り今年のテーマは「柔よく剛を制す」と決めているが、この"柔"には大きく3つ…

モジュールの深さについて

Click here for English version この記事は、スタンフォード大学のJohn Ousterhout教授の著書「A Philosophy of Software Design」にて説明されているdeep moduleという概念について、本人の許可を得てまとめたものです。ただし本書の内容を詳しく紹介する…

2018年良かった〇〇

2018年の様々な「良かった」をまとめました。 良かった買物 良かったPodcast トータルテンボスのぬきさしならナイト バイリンガルニュース Turing Complete FM Kubernetes Podcast from Google 良かった飲食店 和門 おく山 寿司大 ローストホース JINDARI エ…

Envoyによる分散トレーシングの実現と、未来

Click here for English version この記事はMicroservices Advent Calendarの9日目の記事です。前回は@moomooyaさんのマイクロサービス化にあたって、gRPCを導入しようとしている話でした。 この記事のタイトルは、先日のGoCon2018 Autumnにて発表された「Op…

Service Meshをスモールスタートするという選択

Click here for English version 今記事は、CyberAgent Developers Advent Calendar 2018 7日目の記事です。 こんにちは、20卒内定者で現在AWAでアルバイトをしている中尾涼(@nakabonne)です。 現在マイクロサービス界隈でService Meshというアーキテクチャ…

isucon8本戦で惨敗したからせめて良いブログを書く

ISUCON8の本戦に、メルカリで一緒だった@zaq1tomoと@inatonixとzin-gonicというチーム名で出場しました。 結果は学生9位、全体で19位だったので、やったこととかまとめます。 予選エントリはこちらです↓ nakawatch.hatenablog.com やったこと チューニング対…

gRPCは何故誕生したのか

Click here for English version gRPCという言葉はすっかり有名になり、日本でも「社内でgRPCを導入した」「gRPCサーバーを構築する方法」といったような記事が溢れかえるようになりました。 これにより、gRPCの導入ハードルは下がり、比較的簡単にプロダク…

ISUCON8予選は学生枠6位で本戦出場が決まりました

Go

isucon.net ISUCON8の予選に、メルカリで一緒だった@zaq1tomoと@inatonixとzin-gonicというチーム名で出場しました。 結果は学生枠6位だったので、やったこととかまとめます。 事前準備 二度のisucon合宿を行った(どちらも環境構築で頓挫) 何回か集まってi…

Go × Clean Architectureのサンプル実装

Click here for English version *追記:Student Goで発表しました。 speakerdeck.com クリーンアーキテクチャとは 以下を実現することで、関心の分離をするアーキテクチャパターンです。 ドメインロジックを独立させる フレームワークを独立させる UIを独…

csvをGoの構造体にマッピングする

Go

Goでcsvを扱う際は、標準パッケージのendording/csvで対応できますが、いちいちスライスを扱うのは少しつらいものがあります。 大抵の場合構造体にマッピングした方が扱いやすいため、その方法を紹介していこうと思います。 csvマッピングライブラリはjszwec…

【Go】エディタ操作用簡易ライブラリを作った

Go

はじめに しっかりエディタでファイルオープンするとなると意外に煩雑になることに気づきました。 そこでedindというライブラリに切り出したので、今回はその紹介をしたいと思います。 github.com 使い方 クイックスタート Factoryを生成し、エンドユーザー…

5分でElasticsearch+Kibanaの環境を作る

動機 とりあえずローカルで一刻も早く動かしたい場合にサクッと構築する手順をまとめます。 手順 1, Dockerのインストール 2, dokcer-compose.ymlを作成し、以下をコピペする version: "3.0" services: elasticsearch: image: docker.elastic.co/elasticsear…

GAE/Goからelasticsearchへ接続する

クライアントライブラリの選定 elastic/go-elasticsearch(公式) olivere/elastic 以上の2つが候補としてあげられます。どちらかというとGoらしく書ける印象だった2つ目のolivere/elasticを今回は使用します。 クライアントの生成 olivere/elasticは使用し…

Feature Flagを用いたA/B TestingツールをGCPで設計する

先日、AbemaTVが開催する「AbemaTV x A/B Testing」にてFeature Flagを用いたA/B Testingツールのインフラアーキテクチャ設計を行いました。 その時の学びをまとめていきます。 要件 Feature Flagを用いてA/Bテストできれば良いのですが、以下は守る必要があ…

GoでDDD設計する際のrepositoryをどう定義するか

GoDDDでrepositoryを設計する際に色々考えたのでメモ アーキテクチャ この記事では、レイヤードアーキテクチャを使用します。 しかし正式なレイヤードでなく、以下のようにinfra層がdomain層に依存する形で設計します。 ディレクトリ構成 . ├── app ├── doma…

2018年のテーマは「持ちつ持たれつ」

2017年は4皮くらい剥けた年でした。 まずはそんな2017年のテーマを振り返ります。 2017年は決める年 nakawatch.hatenablog.com 去年正月に書いたとおり、2017年は決める年でした。 人生哲学を決める 決まりました。 どんどん見える世界が変わっているので確…

GAE/Goで位置情報マッチングAPIの設計を考える

先日、サイバーエージェントさんの学生版ガレスタというインターンに参加しました。 6週間で企画からサービス完成までを4人(ビジネス1人, デザイナー1人, エンジニア2人)で行うというものでした。 今記事ではこのインターンで得た技術的なことを、つらつら書…

Goで軽量なスクレイピングライブラリを作ってみた

Go

リポジトリ github.com はじめに GoでWebクローラーを開発する際、皆さんどうされてますか?? フルスクラッチで作るのは少し面倒だし、asciimoo/collyのようなフルスタックなのはいらない、、という時に丁度いいライブラリがなかったので作りました! 本当…

GoのcliツールUIライブラリを試す ~ 今日のGithub Trending ~

Go

今日のGithub Trending カリスマエンジニアになりたい!! そう願う大学二年生の私は新たな企画を始めます\(^o^)/ 題して、 >>今日のGithub Trending<< Github Trendingを眺めて、面白そうなリポジトリがあったらガンガン試していきます。 Github Tren…

オレ流学習フレームワーク

はじめに 今記事では、大学生の私が独学でコンピュータサイエンスを学習する際に使用している独自の学習フレームワークを紹介していきます。 あくまで持論なので、すべての人に最適であるとは限りません。 これから紹介するのは、いかに楽して知識を得られる…

CyberAgentのアドテクチャレンジで正確なDMPを作る

先日株式会社サイバーエージェントの2dayインターン、アドテクチャレンジに参加させて頂きました。 そしてなんと優勝させて頂きました! 私はインフラ設計の経験がなく、常に手探り状態でした 今記事では、優勝に至るまでの技術的苦悩をまとめていきます。 d…

2017年は「決める年」

今週のお題「2017年にやりたいこと」 タイトルに書いたように、2017年は「決める年」にします。 以下に記す中期的な目標のために具体的な3つの目標を定める。 中期的な目標:時間密度を濃くする(人生哲学は定まっていないが、どんな人生哲学でもおそらくこ…