App Engineでマルチテナントなアプリを作る

Google App Engine上でマルチテナントなアプリを作る方法について調査したのでブログにまとめてみます。 マルチテナントとは? IT用語辞典には以下のように記載されています。 マルチテナントとは、SaaSやクラウドコンピューティングなどで、機材やソフトウ…

初めて技術発表をした話

社内向けではありましたが、エンジニアキャリアの中で初めて大勢の前で技術発表をするという機会を貰い、本日発表をしてきたので、そこで感じた内容をまとめます。 発表する前の自分 キャリアの中で規模の大小に関わらず発表経験なし。もっぱら聞く専。 自分…

Intellij IDEA をCLIから起動する

Intellij IDEAをコマンドラインから起動する設定について記載します。 手順 メニューバーのTools > Create Command-line Launcher ... を選択 コマンドの作成先を指定する(必要に応じてpathを通す。) コマンド確認 $ which idea /usr/local/bin/idea 使い方…

『静的解析をはじめよう - Gopherをさがせ!』をやった

go

golang.tokyoが公開しているCodeLabをやってみました。 golangtokyo.github.io 普段からあまりコードの静的解析をやっているわけではありませんが、Goで静的解析をする場合にはどうするのか、というのを学ぶにはとてもいい教材でした。 特に「構文解析」の章…

Intellij で goappコマンドを動かす

※ 作業ログです。自分の環境で動作させたので再現性があるかは不明です。 事前準備 使用しているshell(bash, zsh, fish..etc)でgoappコマンドにpathが通ってる状態であること。 Intellij上の設定 $ which goapp # ここでpathが通っていれば問題ない。 pathが…

TypeScript の Optional Property

TypeScriptにはObjectのもつpropertyに Optional Property という機能があります。 propertyに ? をつけることでそのpropertyがない場合もあるよということを表現することができます。 公式のドキュメントには以下のように記載されています。 Not all proper…

VSCodeでUMLを書く

VSCodeでUMLを書くための設定記録です。 Macの設定 $ brew cask install java $ brew install graphviz $ brew install plantuml VSCodeの設定 PlantUMLのプラグインを入れます。 おしまい

『ファクトフルネス』を読んだ

『ファクトフルネス』を読んでとても面白い書籍だったので、学んだことの整理もかねて備忘録として書録を記載します。 ファクトフルネスに世界を捉えること 分断本能 ファクトフルネスに考える ネガティブ本能 ファクトフルネスに考える 直線本能 ファクトフ…

Intellijでlspを使う

lsp(Language Server Protocol) とは? The Language Server protocol is used between a tool (the client) and a language smartness provider (the server) to integrate features like auto complete, go to definition, find all references and alike …

NuxtでTodoアプリを作成する

はじめに 気になっていたNuxtを触ってみました。 軽く触れて、ドキュメントを読んだだけでしたが今回は簡単なtodoアプリの作成をしてみます。 Nuxtは日本語のドキュメントがとても充実していて インストール - Nuxt.js を見ればほぼ誰でもNuxtを簡単に始める…

VuexにおけるGettersのメソッドスタイルアクセス

gettersでstateから任意の値を取り出すときにVuexではGettersのプロパティの返り値にfunctionを指定することで、Gettersのプロパティに関数の引数という形で直接値を渡す(アクセスできる)手法があります。これを メソッドスタイルアクセス と言います。 メソ…

fishで &&、||、! がようやく使えるようになった

やっとか!という思いが強くてエントリを書いてしまいました。 表題の通りですが fishが2018年末に3.0.0にメジャーバージョンアップされていました。 github.com その中で特に嬉しかったのがこれ fish now supports && (like and), || (like or), and ! (lik…

2019年 ~抱負~

エンジニアとして あれこれ目標立てても達成できなくて振り返りで凹むので最低限これは続けたいことをピックアップしました。 現在使ってる技術のベースの知識を深化 今の自分のベースとなる技術スタックが Go/GAE Vue/JavaScript/TypeScript なので今年一年…

2018年振り返り

今年の振り返りです。 新年に立てた目標はこちら。 ema-hiro.hatenablog.com エンジニアとしてコミットしたと言えるプロダクトをつくる 評価: ‍♂️ 普段で業務で開発しているプロダクトは AndApp | スマホアプリがPCで遊べる | アンドアップ と言いますが、今…

社内isuconに参加して惨敗した話

先日(12/10)社内でisucon8の問題を解くイベントが開催されたので参加してきました。 詳しい内容は DeNA Techブログ イベント概要は後ほどUPされるっぽいのでそしたら更新します。 ISUCON8予選問題においてPerl実装で25万点を突破する方法 - Technology of De…

IntellijでRailsを開発する準備をする

仕事でRailsを書かないといけないことになったのでIntellijでRails開発する準備をした手順をまとめました。 やりたいことは以下の2つです。 - IntellijでRubyの補完が効くようにしたい - IntellijでRailsの補完が効くようにしたい IntellijでRubyの補完が効…

JSのSetTimeoutを解除する

js

.clearTimeout() | JavaScript 日本語リファレンス | js STUDIO に記載されてる通りなんですけど、実装時にちょっとハマったので備忘録。 // timer起動 const timer = setTimeout(() => { /* hogehoge */ }, "1000"); timer(); // timer解除 clearTimeout(ti…

GCSのObjectをCopyするときの挙動について調べたこと

業務でGoogle Cloud Strage にObjectをコピーするときの挙動について調べたのでまとめておきます。 GCSでのコピーは cloud.google.com/go/storage 配下にある copy.go に処理の中身が書いてあります。 github.com 実際にGCSでコピーをするときには以下のよう…

GCPの認証設定が切れた時の対処法

GCP

いつからかわかりませんが、localのコンソールからGCPの各サービスのAPIを叩くときに以下のエラーが出てAPIが叩けないと言うことがありました。 err: dialing: google: could not find default credentials. See https://developers.google.com/accounts/doc…

AppEngineで静的ファイルをサーブする設定について

ふとした拍子に忘れてしまうappengineでの静的ファイルをサーブする設定についてのメモです。 内容はほぼ Serving Static Content | App Engine standard environment for Go | Google Cloud に載ってる内容です。 例えば以下のようなディレクトリ構成を考え…

AppEngineのGo1.11のランタイムを簡単に試してみた

GAE/Go1.11のランタイムを実際にデプロイまでしてみましたよっていう内容です。 準備 ディレクトリ構成 以下のようなディレクトリ構成でプロジェクトを作成しました。 $GOPATH └── src ├── app │ ├── app.yaml │ └── main.go └── handler ├── index.go └── i…

AppEngineのGo1.11.0のランタイムについて浅く調べてみた

GAE/GoでGo1.11のランタイムがBetaになっていたので調べた内容をまとめてみます。 なお、基本的にはドキュメントに書いてあることを舐めてるだけの内容になります。 参考 先に参考を明示しておきます。ここだけ見れば、GAE/Goを現在使ってる人ならその差分が…

net/http だけでRESTなサーバーを作りたい

go

やりたいこと 当初の想定は以下のような感じでRESTFullなwebサーバーを標準の net/http パッケージだけで書こうと思います。 package main import ( "fmt" "handler" "net/http" ) var port = 8000 type methodHandler map[string]http.Handler func (m meth…

Goので外部パッケージをimportする

go

以下のようなパッケージ構成のGoのプロジェクトを考えます。 $GOPATH ├── handler │ └── index.go ├── main.go └── middleware └── log.go これだと main.go で localに作成した handler や middleware を import しようとするときに、 Unresolved reference…

iTerm2で goapp test の実行結果を見やすくする

goapp test で単体テストを走らせた時に RUN/PASS/FAIL が見づらいので iTerm2 で goapp test を見やすくする設定を追加します。 設定方法 Preference > Profile > Advanced > Triggers で特定の文字列だった時にハイライトさせるTriggerを設定します。 例え…

引数で指定した型で出力する型を変更するTips part2

go

昨日以下のエントリを書きましたが json.Unmarshal versionで書いていたので stream でレスポンスを扱う方も追加で記載します。 ema-hiro.hatenablog.com streamを使うパターン func HogeSetter(url string, out interface{}) error { resp, err := http.Get…

引数で指定した型で出力する型を変更するTips

go

課題感 goは静的型付き言語でfuncの返り値に指定した型は厳格に守る必要があります。 一方で返り値のみ異なるケースで内部の実装の詳細が型以外ほぼ同じような関数を定義したいときは結構あります。 goだと特に同じようなコードを書くことになりがちでこれを…

AppEngineについて考えてること

AppEngine大好きっ子で1年近くAppEngineをPaaSに採用した環境で開発を行ってきた人間としてちょっと考えたことをつらつら書いてみます。 ※1 このエントリは今日(2018/09/21)同僚の人と色々話してた内容をベースにしてます。 ※2 あくまで個人の感想、というか…

Intellijで古いversionのpluginをinstallする

Intellij をはじめとした jetbrains 系のIDEで現在installしているpluginよりも古いversionのpluginを入れようと思ったのでそのメモです。 背景 そもそもなぜわざわざ古いversionのpluginを入れようかと思ったかというと、jetbrains系のIDEでUIをカスタマイ…

『ファイナンス思考』を読んだ

『ファイナンス思考』を読み終えました。 会計というか事業に置けるファイナンスの考え方に興味があるのでとても面白い内容が詰まっていました。 ファイナンスを実際にすることはなくても、どういう考え方を持っておけばいいのか知りたい人にはいい書籍にな…