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

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

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

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

PMの自分が如何にユーザーの声をエンジニアの共通言語へ変えたか

初めまして。株式会社カミナシでPMをやっているGTOです。 先日6/30に、マネーフォワードさんと合同で勉強会を実施しました!当日お集まりいただいた皆様、ありがとうございます。 登壇者として出席させていただき、「PMの自分が如何にユーザーの声をエンジニ…

GolangでのAPI GatewayとLambdaを利用した認可設定をやってみる

こんにちは。エンジニアの @Taku です。 期間が空いてしまいましたが、過去にLambda オーソライザーを使った認証を作成した続きで、今回は認可の設定を行っていきたいと思います。 ※本記事の内容はプロダクトと関係なく、個人的にやってみたものになります。…

【登壇資料】製造現場を変えろ。ソフトウェアエンジニアが挑む爆速DX

カミナシ・エンジニアの浦岡です。 先日、CADDiさんと共催で勉強会を開催しました。その際のカミナシ側の登壇資料を紹介します。 勉強会の概要 製造現場向けのサービスを開発しているCADDiさんと弊社カミナシが共催でオンライン勉強会を開催しました。 今回…

サービスの開発途中から、厳しめのESLintのルールを導入するためにしたこと

こんにちは、株式会社カミナシのエンジニア@tomiです。 今回は、開発途中からESLintのルールを見直す際にどうやって行ったかを書こうと思います。 開発途中からESLintを見直すとなると、膨大にあるコードがあるので一気に直すとなると、恐ろしい量の修正が必…

テスト駆動開発で文字列が日付か正規表現で調べる関数を実装してみた

こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに テスト駆動開発(以下、TDD)は知っているけど、業務でTDD使ってみようと思ってもリリースに追われてしまい、時間が取れなかったりしてチャレンジ出来ていませんでした。今回は時間に余裕があ…

品質と新規開発のバランスというタイトルで登壇してきました

こんにちはカミナシでアプリケーションエンジニアをやっている沼田( @keinuma15 )です。 先日行われた Startup Issue Gym #1【開発プロセスのIssue】 にて「品質と新規開発のバランス」というタイトルで発表してきました。 概要 スタートアップのプロダクト…

react-native-svgで手書きアプリを作ろう

カミナシの浦岡です。弊社が開発している「カミナシ」には、 以下のような用途を想定して、手書きメモ機能を組み込んでいます。 カメラで撮影した写真の上に矢印マークやメモを追加したい キーボード入力に不慣れなユーザーでも素早く簡単にメモを録りたい …

【Expo Go】アプリケーションがクラッシュして解決するまでの話

こんにちは、株式会社カミナシのエンジニア @imuです。 はじめに アプリケーションが急にクラッシュすることありますよね? 昨日まで動いていたのに何故かクラッシュ…。 アプリケーションがOSSの場合、特に切り分けが大変ですよね。 カミナシでは『Expo Go』…

StoryShotsの可能性を探る

こんにちは、カミナシの@tomiです。 前回は、Expo ReactNativeにStorybookの導入を行いました。 今回は、StoryShotsを入れてみたいと思います。 StoryShotsとは、自動スナップショットテストができるStorybookのアドオンです。 内部的には、JestのSnapshotが…

ABDでSCRUM BOOT CAMPの輪読会を開催しました

カミナシのエンジニア@Takuです。 先日エンジニアチームにてABD(アクティブ・ブック・ダイアローグ)という形式で輪読会を開催したところ、とても良かったので共有させていただこうと思います。 はじめに ABD(アクティブ・ブック・ダイアローグ)とは 私もこの…

Expo ReactNativeのStorybookを0から入れ直す

Expo ReactNativeにStorybookの導入をしてみました。StorybookのサイトにReactNativeでの導入方法が記載されていますが、それ通りだけでは上手く動かなかったので、ExpoでStorybookを使いたい人の参考になればと思います。

React3Dチュートリアル

カミナシの浦岡です。 この記事ではreact-three-fiberというライブラリを使って、reactで3Dアプリケーションを作成してみます。 github.com このライブラリを使うことでアプリの開発者からすると、 通常のreactアプリ(DOMにレンダリングするもの)を作るの…

【React Native + Expo】Push通知を試してみた

こんにちは、株式会社カミナシのエンジニア @imuです。 はじめに と、いうことでPush通知の話です! カミナシではReact Native(Expo)でアプリケーションを開発しています。 Push通知の実装って意外と難しいイメージありませんか? アプリケーション側での監…

Raspberry PiでKubernetesクラスタを作る〜準備編〜

株式会社カミナシのエンジニア(まぁ当たり前か)の@nasum(id:Tomato-360)です。 以前個人でやってた活動で、Raspberry Pi 4でKubernetesクラスタを立てました。そのときは3台で、master 1台 worker 2台で構築しました。このときはKubernetesクラスタをただ…

AWS SAMを利用してAPI GatewayとLambda Authorizer(Golang)の構築をやってみた

こんにちは、株式会社カミナシのエンジニア @Taku です。 前回、GolangでLambda Authorizer用関数をやってみましたが、 Golangはコードエディタが使えず、テストするには毎回zipで固めてアップするという一手間がありました。 kaminashi-developer.hatenablo…

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

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

ScrapboxからNotionへの移行

概要 カミナシはこれまでドキュメント管理ツールにScrapboxを使っていました。 手軽にかけ、リアルタイムに複数人で編集できるのでチームで議論しやすかったです。一方でドキュメント管理ツール以外に使ってるツールが増えたり、ストックしたい情報が探しに…

エンジニア転職でのポートフォリオ・ネタに困ったら

カミナシの浦岡です。 みなさん、ポートフォリオの成果物や学習目的でプログラムを作る場合に 課題や題材を設定していますか? これの有無で、最初の一歩を踏み出す動機づけ、モチベーションの持続に影響します。 この記事では、以下のような人に向けてネタ…

【Expo SQLite + TypeORM】Jestでexpo-sqliteの接続テストが書けなかった話

こんにちは、株式会社カミナシのエンジニア @imuです。 はじめに みなさんのプロダクトでテスト書いてますか? 『カミナシ』はオフライン機能を提供しており、ローカルデータベースはSQLite(expo-sqlite)を利用しています。 オフライン機能って何?という…

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

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

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

Go

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

【Golang】で【Amazon API Gateway Lambda オーソライザー】と【FirebaseAuth】を利用しての認証をやってみた

初めに 初めまして。2021年3月より株式会社カミナシにジョインすることとなりました、エンジニアの@Takuと申します。 業務とは直接関係ないのですが、API Gateway Lambda オーソライザーとFirebaseAuthを組み合わせた認証をやってみたので記載させていただき…

NoSQLで悩ましいインデックスとアクセス権限管理を、Firestoreのサブコレクションで実装する

概要 FirestoreはNoSQLの中でもデータ構造に特徴があります。 本記事では私自身が実際に設計したデータ構造がサブコレクションでどう変わったかをみていくことで、サブコレクションでできることを書いていきたいと思います。 開発環境 Node (14.15.4) Fireba…

React Native Debuggerを使った、React Native+Expo開発の流れ

こんにちは、カミナシの@tomiです。 React Native + Expoで開発する上で、React Native Debuggerが自分にとって必須のものとなっています。 このツールを使って日々どういった感じで開発しているかをまとめました。 他にもReactotronやReact Native Toolsな…

UIが嘘をつく? UXデザインにおける「楽観的な更新」とSPAでの作り方

こんにちは、デザインエンジニアのショウです。 突然ですが、UI/UX デザインにおいて、「楽観的な更新」という言葉を聞いたことがありますか?あまり聞いたことがなくても、実は日常にたくさん存在しています。 例えば、 twitter や facebook のいいねボタン…

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

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

ヌルヌル動くReactコンポーネントの作り方【入門】

こんにちは、カミナシの浦岡です。 最近、弊社のメンバーとしてUIデザイナーが新たに加わり、プロダクトのUI改善を進めています。 以前は、AntDesignなどUIライブラリーのコンポーネントをそのままプロダクトで使用する機会が多かったのですが、UI改善を行う…

TypeScriptで負荷シナリオテストを作りたくなった話

はじめに 初めまして。株式会社カミナシPMの@gtongy1です。 負荷量の増加。どの企業にとっても悩みの種じゃないでしょうか? そんな時にこそ、負荷シナリオテストツールを導入したい!となると、負荷シナリオテストだとLocustとかが有名所。 ただPythonを知…

Goでの自動化が唸るカッコいいworkflow画面を作りたい

これはGo 4 Advent Calendar 2020 18日目の記事です こんにちは株式会社カミナシのエンジニアの浦岡です。 個人的に、Goが一番輝きを放つのはworkflowの自動化だと思っています。 k8sなど自動化分野でGoはなくてはならない存在ですよね! ただ、そのworkflow…