カミナシ エンジニアブログ

株式会社カミナシのエンジニアが色々書くブログです

Go

カミナシはGo Conference 2023にスポンサー参加します!

Gopherの皆さん、こんにちは! カミナシのHRでエンジニア担当している木村です。 来る2023年6月2日金曜日にGo Conference 2023が開催されますね。 カミナシはシルバースポンサーとして参加させていただきます! Go Conference 2023 今回もオンライン開催とな…

技術的負債になりかけていた機能をリアーキテクティングしたら、めちゃくちゃ改善した話

ソフトウェアエンジニアの 鈴木 (@szk3) です。 先日、カミナシにおいて古くから存在する1つの機能をリアーキテクティングしました。 その結果、処理時間は4分の1以下、コストは90%程度削減 と大きな成果を出すことができました 本記事では、その機能が抱え…

Goでスタイリッシュにエラーをラップする方法を学んだ

Go

こんにちは。カミナシ ソフトウェアエンジニアの @aoman です。 つい先日、Goで有名な@tenntennさんがConnpassで募集していたGopher塾#2に参加させていただきました。 tenntenn.connpass.com 大変勉強になりおすすめです!筆者が参加したのは第一回目ですが…

Goでダブルポインタを知った話

Go

こんにちは。カミナシ ソフトウェアエンジニアのAomanです。 最近ちょこちょこアルゴリズムやデータ構造、Goのキャッチアップしています。 そんな中、go.devのブログ Go blog のとある記事でダブルポインタを使用するコードに出会いました。筆者は今まで、Ru…

Goのreflectパッケージを使って構造体の指定フィールドをゼロ値にしてみた

Go

目次 目次 はじめに この記事の対象読者 reflectパッケージとは? 基本的な使い方 reflect.Type reflect.Value 実装 reflect注意点 参考させていただいた文献 終わりに はじめに こんにちは、そしてはじめまして!カミナシエンジニアのAomanです。 カミナシ…

GORM で出力されるログの SQL と実行される SQL が違った話

7月に株式会社カミナシに入社したくらさわです! カミナシでは、現場DXプラットフォーム「カミナシ」の開発をしています! よろしくお願いします!!! きっかけ 検証バージョン 結論 コード書いて確認してみた ドキュメント読んでみた コード読んでみた go-…

0=>1フェーズの技術的負債を解消する第一歩@バックエンド編

Go

こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 我々のサービス『カミナシ』をローンチしてから、今年の夏で丸2年を迎えます。 私は『カミナシ』のプロダクト開発初期メンバーの1人でした。当時会社の残りランウェイ(残資金で運営できる期…

multipart/form-data形式のファイルが突然アップロードに失敗する問題を仮説を立てながら解決する話

こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 突然ですがファイルアップロードに失敗することってありますよね? カミナシレポートのプロダクトはオフライン機能を実装しており、オフラインで記録したデータをアップロードしたときに失敗…

【登壇資料】Go Conference 2021 Autumn に登壇してきました

カミナシ・エンジニアの@issei です。 先日行われたGo conference にてgoldスポンサー枠にて登壇してきました。 gocon.jp kaminashi-developer.hatenablog.jp 本日は、その際のカミナシ側の登壇資料を紹介します。 発表趣旨 カミナシではバックエンドのAPIサ…

【GORM】V1からV2へアップグレードにチャレンジした話

こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 弊社のアプリケーションのバックエンドはGoでDBアクセスライブラリはGORMを使っています。 サービスリリース時からGORMを使っており、V1からV2にすることでパフォーマンス改善につながると思…

BtoB SaaSスタートアップのインフラの失敗と選択の歴史を登壇の中で暴露してきました

初めまして。株式会社カミナシPMの@gtongy1です。 先日行われた BtoB Startup Engineers Meetup 〜BtoB SaaSを支えるインフラ〜 - connpass にて「失敗しても前に倒れる。高速検証のための壊しやすいインフラ」というタイトルで登壇してきました。 登壇資料 …

RDBMSの先を行く?NewSQLを支えるアルゴリズムRaftをGoで紐解く

初めまして。株式会社カミナシPMの@gtongy1です。 みなさんはNewSQLをご存知ですか? 強い整合性を持つ分散型のSQLデータベースサービスのことをNewSQLと呼びます。 RDBMSではなし得なかった分散アーキテクチャを、またNoSQLではなし得なかった強い整合性を…

開発環境で送信したメールを確認するためにMailHogを導入しました(勝手に)

Go

こんにちは、カミナシの@tomiです。 開発環境で送信したメールを確認するためにMailHogを導入してみました。 MailHogとは送信したメールをブラウザで確認できるツールです。 導入のきっかけ 以前、Ruby on Railsで開発している際に、letter_openerという送信…

【Golang + Excelize】Excelファイルを操作してみよう

こんにちは、株式会社カミナシのエンジニア @imuです。 はじめに MicrosoftExcelファイル(以後、Excelという)は、切っても切れない関係ですよね。 OpenOffice、Google スプレッドシート、Numbers は、いずれもExcelとの互換性を保っています。 互換性を保…

【Golang + echo】S3のファイルをバイナリデータでレスポンスする

はじめに この記事はGo 4 Advent Calendar 2020 17日目の記事です。 こんにちは、株式会社カミナシのエンジニア @imuです。 早速ですが、S3にあるファイルをバイナリデータで取得してレスポンスに含めたいと思ったことはありませんか? 『カミナシ』ではバッ…

フロントエンドエンジニアがGoの書き方を理解する

Go

本記事は Go3 Advent Calendar 2020 15日目の記事になります。 こんにちは、株式会社カミナシのエンジニア @tomiです。 JavaScript, Node.jsをメインに扱ってきたエンジニアがGoに触れるときにどう解釈したかを、JavaScriptとGolangを比較しながら、理解を深…

GoでGraphQL Subscriptionsを実装する

はじめに この記事はGo3 Advent Calendar 2020の11日目の記事です。gqlgenを使ってGraphQL Subscriptionsを実装する方法とハマったポイントを紹介したいと思います。 利用技術 gqlgen GraphQL SchemaからGoのコードを出力するコードファーストなライブラリ R…

スタートアップが取組むコンテナ化。EC2からECS Fargate移行の道のり

初めまして。株式会社カミナシPMの@gtongy1です。 みなさんは、インフラのコンテナ化はお済みでしょうか? 弊社は今年6月頃にサービスを正式にリリースしたのですが、それ以前はEC2 + ELBでインフラを構築しており、それまでになかなかコンテナ化をしたくて…

【LT参加レポート】GoによるGraphQL実装

はじめまして。株式会社カミナシでアプリケーションエンジニアをやってる keinuma です。 カミナシではAPIの開発にGo言語を使用しています。自分はGraphQLが好きなのですがこれまでGoのライブラリを利用してGraphQLランタイムを実装したことがありませんでし…