keitaro_1020のブックマーク (16)

  • Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ

    春の入門祭り2024の1記事目です。 はじめにTIG真野です。 Testcontainers を用いて、単体テスト実行前に docker compose up -d 無しで、PostgreSQLにアクセスする単体テストを行う、入門記事です。 恩恵は次のような開発者体感の向上が個人的にあります。 テストを実行するうえで、別プロセスのサービスを起動しておく必要があるといった前提条件を考えなくても済むため、テストを行うビジネスロジックに集中できるdocker compose up -d 打たないだけだが、テストに必要なコンテナを考慮しなくても済む停止し忘れて、別のリポジトリの開発するときに混乱しなくても済む並列テストしやすくなるので、テストの実行速度が向上するGoにおいて、複数のパッケージを同時にテストするとき、 -p 1 で絞らずに済むTestcontainers とはhttps://test

    Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ
  • 「Ask What, not Why」 失敗したときに自信を失いかけたら実行しているメンタル転落回避術 - Money Forward Developers Blog

    半年ぶりのカキコ……ども……。気づいたらHRソリューション部からMFBC-CTO室に異動していたVTRyoです。兼任で引き続きHR系のマネーフォワード クラウドシリーズも担当しています。 ソフトウェアエンジニアとしての経験値が増えてくると、次第にレビュー担当者になることが増えてくるでしょう。私が所属するSREチームでもTerraformの相互レビューが頻繁に実施されています。そこで、事件は起きたのです。 自信を持ってApproveしたPull Requestで次々に事故が起きてしまった 現在HR内のマネーフォワード クラウドシリーズは、モダンな開発基盤へとリプレイス作業を多く行っています。これまで動いていた基盤に感謝しつつ、新しいPlatformへと移行し、最終的に元あったリソースを削除します。 事件はこの リソース削除 で起きました。 チーム内レビュー OK リポジトリ管理者レビュー

    「Ask What, not Why」 失敗したときに自信を失いかけたら実行しているメンタル転落回避術 - Money Forward Developers Blog
  • 3ヶ月間の英語研修でTOEICスコア 665 → 890 になった話 - Money Forward Developers Blog

    エンジニアリング戦略室の高井です。先頃からお伝えしているように、マネーフォワードではエンジニア組織の公用語を英語にすることを計画しています。世界中から優秀なエンジニア人材を集め、プロダクトをさらに成長させることが目的です。 エンジニア組織の英語化に向けて、組織的な英語研修のトライアルも始まりました。英語習熟度に応じたプログラムを策定し、そのための研修を行なっています。まずは直近で必要となる人からということで、第一弾となる英語研修プログラムに参加しました。 今回の記事は、そのときの個人的な経験の記録です。私自身、大学卒業後に、これといって積極的に英語を勉強したことがありませんでした。もちろん、ソフトウェアエンジニアとして、英語ドキュメントを読む必要があったり、カンファレンスで英語スピーカーの発表を聞いたり、英語学習方法のブログをブックマークしたり、英語学習の書籍を購入だけしたり、ということは

    3ヶ月間の英語研修でTOEICスコア 665 → 890 になった話 - Money Forward Developers Blog
  • 「帰りの会」というリモート雑談の形 - maru source

    こんにちは丸山@h13i32maruです。コロナの影響により、昨年からリモートで働き始めました。最近転職して新しい職場になりましたが、こちらもリモートで働いています。同僚もリモートで働く人がほとんどです。 そんなリモートワーク、基的には最高なのですが、現状「雑談」はオフィスワークより明らかに劣っていると思います。そこで、前職では「帰りの会」という雑談タイムを自分のチームで運用していました。これが結構楽しく満足度も高くて大変良かったです(僕が退職したあとも続いてるらしい)。 残った3名で今もやってます!(笑) いい相談&雑談時間です— 堀犬 (@horiinu) March 7, 2021 今回はこの「帰りの会」という雑談タイムが何故良かったのか振り返ってみます。結論としては「仕事の話をメインのネタにした」「画面共有や開始時間などの小さな工夫を積み重ねた」という感じです。 ちなみに、今回の

    「帰りの会」というリモート雑談の形 - maru source
    keitaro_1020
    keitaro_1020 2021/03/15
    良さそう
  • 技術的負債とステークホルダと説明責任と / The Debt

    Talked at CloudNative Days Spring 2021 Online #CNDO2021. https://event.cloudnativedays.jp/cndo2021/talks/801

    技術的負債とステークホルダと説明責任と / The Debt
  • 軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 - inductor's blog

    はじめに やめろ、ではなく、やめたほうがいい。です。自分のユースケースに合ってるか今一度確認することを推奨します。基的にはAlpineは避けたほうが良い、というのが2021年時点での私の認識です。 なんで? libcに一般的な互換性が不足しているからです。RubyPython、Node.jsなどでNativeモジュールをバンドルしているアプリケーションの場合、パフォーマンスの劣化や互換性の問題にぶち当たる場合があります。 superuser.com あとは他のベースイメージの軽量化もそれなりに進んできていて、Alpineが定番軽量イメージと言う認識は2018年頃には消えつつあったかなという認識でいます。 どうすりゃええねん ※Debian Slimがあるやんってツッコミ結構もらったんですが、Slimは当たり前過ぎてもう紹介しなくていいかなっていう甘えで省略していました。よろしくおねがい

    軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 - inductor's blog
  • セキュアにGoを書くための「ガードレール」を置こう - 安全なGoプロダクト開発に向けた持続可能なアプローチ - Flatt Security Blog

    The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/) The design is licensed under the Creative Commons 3.0 Attributions license. 種々の linter が様々なプロダクトの品質を高めてきた、というのは疑う余地のない事実です。実装の初歩的な問題をエディタ内や CI/CD パイプライン中で機械的に検出できる環境を作れば、開発者はコーディングやコードレビューの邪魔になる些末な問題を早期に頭から追い出し、質的な問題に集中できます。 また、そのような環境づくり(e.g. linter のルールセットの定義、組織独自のルールの作成、…)は、まさに開発組織のベースラインを定義する作業として捉えることができます。一度誰かが定義

    セキュアにGoを書くための「ガードレール」を置こう - 安全なGoプロダクト開発に向けた持続可能なアプローチ - Flatt Security Blog
  • マネージメントに必要なことは全てゲームから学んだ

    この投稿は毎年恒例、pyspa Advent Calendar 2020の1日目の投稿になります。 どうもご無沙汰しております、akisuteです。すっかり年に1回アドベントカレンダーのときにだけ顔を見せる人になっておりますが、おかげさまで無事平穏に過ごしております。 さて突然ですが私はプログラマーを引退しました。 なぜなら今年で36歳だからです。プログラマーは35歳になったら定年ですね。 実際のところ、このぐらいの年になると、よほど何らかの意志が働かない限り、技術に対する情熱みたいなものが失われてくると思います。もちろん当に技術とプログラミングが好きな人は間違いなく35歳なんかで情熱を失ったりはしないと断言しますが、残念ながら私はそうではなく、もはやiPhoneには大した興味が湧いておりませんし、最近はJavaだのGoだのTypescriptだのVue.jsだのといったものを必要に応じ

    keitaro_1020
    keitaro_1020 2020/12/01
    良かった
  • KyashでのZapierによる自動化を紹介する - Kyash Product Blog

    Kyashの@konifarです。 Kyashでは2019年4月頃からZapierを使って定型的な業務を自動化しています。Zapierはプログラミングの知識や経験がなくてもポチポチしていくだけで様々な自動化ができるのがとてもよいですね。今回はKyashで実際に動いているZapをいくつか紹介したいと思います。 内容の簡単な紹介にとどめるので、もし詳しく中身を知りたい人がいたらDMなどで気軽に聞いてください。 1. Slackコマンドで休暇予定を勤怠カレンダーに登録して勤怠チャネルに通知 /休む 2020-08-01 夏休みとります のようにSlackコマンドを打つと、勤怠カレンダーに登録した上でSlackの勤怠チャネルに周知されます。 Triggerを Webhook by Zapier にしてSlackコマンドで発火するようにし、SlackのActionを使ってメールアドレスを抽出してカレ

    KyashでのZapierによる自動化を紹介する - Kyash Product Blog
    keitaro_1020
    keitaro_1020 2020/07/31
    これ良いなぁ
  • Goのソースコード内のトリビア - YAMAGUCHI::weblog

    はじめに こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。Google Cloud Operationsもさることながら、Go Conferenceの運営など、長らくGoコミュニティに関わってきましたが、まだまだ知らないことがあったということを昨日今日で知ったので共有します。 time.minWall time.minWall という値があります。 src/time/time.go - go - Git at Google const ( hasMonotonic = 1 << 63 maxWall = wallToInternal + (1<<33 - 1) // year 2157 minWall = wallToInternal // year 1885 nsecMask = 1<<30 - 1 nsecShift = 30 ) こ

    Goのソースコード内のトリビア - YAMAGUCHI::weblog
    keitaro_1020
    keitaro_1020 2020/07/17
    おもしろい!
  • GoのORM、SQLBoilerのススメ - suusan2号の戯れ

    この記事は suusan2go Advent Calendar 2019 - Adventar の4日目の記事です。 フリーランス始めてから、エムスリーでお世話になった @maeharin さんがCTOをしてる ANNONE という会社をお手伝いしています。自分はその中で、Goによるアプリ向けのAPIReactによる管理画面、Flutterアプリ、CloudSQL=> BQの同期、新規事業のRails newなどと幅広く色々とやらせてもらっているのですが、今回はあのね というアプリ向けに作られたGoAPIDBアクセスをSQLBoilerに切り替えた話をします。 Go APIの構成 特定のフレームワークは使っておらずルーティングには gorilla/muxDBアクセスには sqlxを使っていて、シンプルなレイヤードアーキテクチャを採用した以下のような構成になっています。 api ├─

    GoのORM、SQLBoilerのススメ - suusan2号の戯れ
    keitaro_1020
    keitaro_1020 2019/12/05
    Gorm使ってて辛みが多いのでSQLBoiler使ってみたいと思ってた
  • エンジニアの「できない」という言葉の裏側 - Konifar's WIP

    「ここ、こんな感じにできませんかね?」と言われたエンジニアが、「うーん、それはちょっと厳しいですね。できないです」と返すみたいなやりとりは結構見かけます。 この「できますか?」⇒「できない」というやりとりなんですが、「できない」という言葉にはいくつか裏が考えられます。言葉足らずだっただけでちょっとした調整をすればできるよね、というケースもあるので、「できない」という言葉の裏側をまとめておこうと思います。 先に補足しておくと、「エンジニアの人の言葉が足りなすぎるでしょ」という意見ももちろんあると思います。こういうコミュニケーションは、お互いの信頼度によっても変わってくるので難しいところです。お互いが相手に伝わるように意識すべきだと思うんですが、 エンジニアから「できない」と言われた時にどういう意味で言ってるのか想像しやすくなればいいなという思いで書いておきます。 ちなみに、「(できるけどやり

    エンジニアの「できない」という言葉の裏側 - Konifar's WIP
    keitaro_1020
    keitaro_1020 2018/06/19
    凄いよく分かる
  • #roppongijs でgRPC-WebについてLTしてきた - suusan2号の戯れ

    speakerdeck.com gRPC-WebについてLTしてきた。 仕事では結局使わなかったんだけどgRPCをブラウザで使うにはということを色々と調べていたので、それについて話した。 suzan2go.hatenablog.com suzan2go.hatenablog.com スライドでも触れたけど、公式?のgrpc/grpc-webはまだまだ色々と辛い感じなので、今後の発展に期待という感じである。 当はTODOくらいVueReactで作っておこうと思ったんだけど、公式のdockerイメージが全然ビルドできなくて断念。 github.com gRPC-Webがまだ早いと思った人もいたみたいだけど、こっちのgRPC-Webはツールもこなれてるし全然問題ないんじゃなかろうか。 github.com 今回はフォントの話とか、Nodeの話とか、幅広く色んな話が聞けてよかった。相変わらずメ

    #roppongijs でgRPC-WebについてLTしてきた - suusan2号の戯れ
  • SmartHR が定期メンテナンスを始めた理由とやめる理由 - SmartHR Tech Blog

    SmartHR のソフトウェアエンジニア ぷりんたい です。SmartHR には2017年2月に入社しました。 この記事は SmartHR 長時間のサービス停止を伴うシステムメンテナンスのお知らせ によせて書かれたものです。 ご挨拶 SmartHR では、昨年の6月より週2日という頻度で夜間のサービス停止を行ってきました。まずは、この運用形態を選択したことによりご利用中のお客様にはご不便をおかけしたことをお詫び申し上げます。 今日のクラウドサービスでは、無停止運用が当たり前といった風潮もありますが、なぜ SmartHR が停止メンテナンス運用を選択したのか、今後のサービス提供においてどのようなことを重視していくのかを技術者としての立場からご説明させて頂きます。 SmartHR の開発初期とマルチテナント問題 SmartHR は2015年2月に開発が始まり、同年11月にサービスインしました。

    SmartHR が定期メンテナンスを始めた理由とやめる理由 - SmartHR Tech Blog
  • Kubernetes上でgRPCサービスを動かす

    Kubernetes上でgRPCサービスを動かすことが多くなってきている.が適切にロードバランスをする,リクエストを落とさずサービスをデプロイするためにいくつか注意することがあるので簡単にまとめておく. 以下の2つを意識する. Kubernetes ServiceはL4のLoad balancer(LB)であること gRPCはコネクションを使いまわすこと KubernetesのPodは死んだり作られたりを繰り返す.KubernetesのPodにはそれぞれ内部IPがアサインされるが,このIPはPodが新しく作成される度に変わる.IPが変わってもPodにアクセスするためにKubernetesではServiceをつくる.ServiceはPodを抽象化しVirtual IP(VIP)を提供する.VIPを使うことでPodのIPが変わってもPodにアクセスすることができる. VIPはNetwork i

  • GAE/Go の urlfetch のタイムアウトを設定する - pospomeのプログラミング日記

    ググると、旧 appgneine パッケージに対する設定方法しか引っかからないので、 google.golang.org/appengine に対する設定方法をメモとして残しておく。 結論から言うと、 context.WithTimeout() or context.WithDeadline() を利用して設定する。 以下は context.WithTimeout() の例。 c, _ := context.WithTimeout(ctx, 30*time.Second) fetch := urlfetch.Client(c) *今回は WithTimeout() の2つ目の戻り値の CancelFunc は使わないので、 _ にしています。 ちなみに、旧 appgneine パッケージは以下のように指定する。 client := &http.Client{ Transport: &url

    GAE/Go の urlfetch のタイムアウトを設定する - pospomeのプログラミング日記
  • 1