体はドクペで出来ている

インフラ、Goの割合が多い技術ブログ

リモートワークのITエンジニアが地方移住して1年が経ちました

はじめに 2020年初頭、新型コロナウィルスが世界に拡散しました。日本でも続々と感染者が増えていき緊急事態宣言等の発令が行われたことは記憶に新しいことかと思います。感染防止のためリモートワークに移行する会社が続々と出始め、弊社も比較的早い時期か…

書評 マイクロサービスパターン [実践的システムデザインのためのコード解説]

はじめに この本はマイクロサービスアーキテクチャーで開発・運用していく中で普遍的に存在する課題とその解決法の選択肢を紹介する書籍です。 book.impress.co.jp Food to Go, inc. (FTGO)という架空のフードデリバリー会社(既に日本でもお馴染みになって…

書評 アジャイルサムライ――達人開発者への道

はじめに この本はアジャイル開発の実践的な考え方・プラクティスを紹介していくもので、親しみやすい口語と豊富なイラストを中心にしているのが特徴です。 shop.ohmsha.co.jp そもそもアジャイル開発とは、という入門編から始まりツールの紹介や計画作り、…

書評 カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

はじめに この本は開発の現場で実際にありそうな問題・困難を題材にアジャイル開発を解説する本です。 www.shoeisha.co.jp 主人公である江島さんが問題を抱えたプロジェクトの中で七転八倒しつつも自らの努力と周囲の協力を得て解決、成長していくというのが…

書評 O'Reilly マイクロサービスアーキテクチャ

はじめに この本の原書は2015年に発売された Building Microservices で、その翌年に 日本語版 が発売されました。原著者であるSam Newman氏は米ThoughtWorks社に務めるエンジニア *1 で、同社に在籍するMartin Fowler、Jim Highsmith両氏 *2 が提唱したアー…

VS Code Remote のWSL接続を試した

wsl

はじめに 5/2にリリースされたInsiders版でVS Code Remoteなる機能が搭載されました *1 。これはVS CodeからSSH等で外部の端末に接続しVS Codeそのものの実行環境とは別の環境を統合して扱うことができる、というものになります。 公式の手順にWSL版があった…

GolangのContext入門

Contextとは何か? Golangには context という標準パッケージがあります(以前は実験パッケージ golang.org/x/net/context でしたがGolang1.7から標準採用されました)。これは「コールグラフの下流をまとめてキャンセルさせたい」「リクエストスコープな値…

sync.Poolの使い方

はじめに Golangには平行処理でよく使う機能がまとめられたパッケージ sync があります。この中には Pool という構造体がありその名の通り何らかの使うものを貯めておけ、必要なタイミングでそれを取り出し不要になったらまたしまう、という仕組みを簡単に作…

GolangでMutexを使いRace Conditionを回避する

Race Conditionとは 日本語に訳すと「競合状態」でプログラミングの文脈においては「ある処理が並行に動作している別の処理に影響を及ぼし予測不能な結果を引き起こす」ことをいいます(以下RC)。

Golangでデッドロックを発生させる

はじめに 最近Go言語による並行処理を使ってお勉強を始めたので学んだことを自分なりの言葉にしてアウトプットしようと思います。

RouterOSでループバックインターフェースを設定する

始めに MikroTik社製のRouterBOARDでループバックインターフェースを設定しようとしたところ戸惑うところがあったので備忘を残します。なお今回の対象はRB2011 UiAS-RMですが、他の機種でも恐らく同じだと思います。

Golangでインターフェースを使いコードを疎結合にする

はじめに Golangにはインターフェース ( interface ) という型があり、これを使ってコードの抽象化・実装の隠蔽を行うことができます。上手く使うと単体テストや実装の分離でとても便利なのですが、私もそうだったように初学者にとっては中々理解しづらい概…

Go言語によるWebアプリケーション開発 第4章で得られたことと感想

Go言語によるWebアプリケーション開発 第4章「ドメイン名を検索するコマンドラインツール」が終わったので得られた事と感想をまとめます。

Go言語によるWebアプリケーション開発 第3章で得られたことと感想

Go言語によるWebアプリケーション開発 第3章「プロフィール画像を追加する3つの方法」が終わったので得られた事と感想をまとめます。

Go言語によるWebアプリケーション開発 第2章で得られたことと感想

Go言語によるWebアプリケーション開発 第2章「認証機能の追加」が終わったので得られた事と感想をまとめます。

Go言語によるWebアプリケーション開発 第1章でやったことと感想

始めに Go言語によるWebアプリケーション開発 第1章「WebSocketを使ったチャットアプリケーション」が終わったので得られた事と感想をまとめます。

AWS CodeCommitでSSH認証するための手順

始めに 最近社内でCodeCommitを使う機会があったのですが、SSH認証の手順について何度か聞かれたので手順を残します。 環境は Windows Subsystem for Linux (Ubuntu) が前提ですがLinux, Macであれば基本的に同じ操作でできると思います。

AWS CodeCommitのREADME.mdでなるべく簡便且つセキュアに画像を表示する

AWS

始めに AWS CodeCommitはGitHub風味(?)のマネージドGitリポジトリを提供してくれますが、GitHubに比べいくつか痒いところに手が届かないポイントがあります。今回題材としたREADME.md内での画像埋め込み表示もその一つで、リポジトリ内に画像を含め相対パ…

Webチャットで最低限必要な要素を実装する

前回に続きオライリーのGo言語によるWebアプリケーション開発勉強記です。 今回はチャットルームのモデル化について。

書籍勉強記を始めます & Golangの sync.Once についてメモ

始めに オライリーの Go言語によるWebアプリケーション開発 を購入したので今日から少しずつ進め、そのレポートを連載したいと思います。 始めは1章ごとにメモや感想を書いて行こうかと思ったのですが、やってみたらそこそこのボリュームになりそうだったの…

Slackにメッセージを投げるだけのGolangライブラリ "easygoing" を作りました

タイトルの通りです。 easygoing という名前は会社の後輩から貰ったもので「あくせくしない」「のんきな」といった意味合いです。頭文字を取って eg (easy) とかけています。 https://github.com/ryo-yamaoka/easygoing Lambdaで遊んだりちょっとした自動化…

go-playground/validatorでバリデーションを行う時のメモ

入門 Go言語で構造体のメンバーに対してバリデーションを行いたいというのはよくあるケースかと思います。 これを正規表現でチマチマやるのは中々に面倒だと思いますが、go-playground/validatorを使えば下記のように所定のルールに沿ったタグを付けることで…

Amazon Linux 2 (Candidate 2)でdocker0のネットワークアドレスを変更する

始めに Amazon Linux 2にDockerをインストールして遊んでいた際、特段深く考えず設定したRDS用のネットワークがDockerのネットワークと衝突してしまい変更する必要に迫られましたので、備忘がてら記事にします。 Dockerはデフォルトの場合docker0というブリ…

学生になったのでGitHubの学割を申請してきました

前座(私の過去と現況) 私は凡そ2年前から都内IT系企業の新規事業チームで企画・開発・運用(要するに全部)に携わっています。細かいところは省きますが、元々実質的に技術の仕事を始めたのが30歳を過ぎてからと随分なスロースタートだったことと、業務に…

Kubernetesのオブジェクト管理手法に関する公式ドキュメントを読解

始めに 本記事はKubernetes Object Managementから読み取ったことをなるべく自分の言葉として書き下し最後に所感を加えたものです。原文に書かれていない意訳的表現が多数含まれ、少なくとも翻訳記事ではありません。

WindowsでminikubeをインストールしてWSLからkubectlできるようになるまで

前座 minikubeはローカルでシングルノードのKubernetesを一発で起動することができるツールで、主に開発・検証で使うことになるかと思います。これはWindowsにも対応しておりコマンドラインから制御することができますがクラスターの制御コマンドであるkubec…

大量に登録されているDatastoreのEntityをElasticsearchに投入する

背景 とあるWebアプリがAppEngine (Golang)で稼働しており、Datastoreに大量の記事(約500,000件)が蓄積されている。 これはRSS Feedから取得した記事でOGPのタイトルや概要が含まれている。 記事のタイトルと概要に対し全文検索を行う要件が新たに発生した…