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

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

【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…

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

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

【Go言語】自作コンテナ沼。スクラッチでミニDockerを作ろう

初めまして。株式会社カミナシPMの@gtongy1です。 Dockerというツール。SRE, Backend, Frontendどの領域のエンジニアも馴染みのあるツールではないでしょうか。 コンテナを利用することにより、インフラの環境を一つの空間に梱包し、その内部で柔軟に様々な…

フロントエンドエンジニアが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…

Gatsby・Wordpress・Netlifyで開発したときの躓きと解決方法

こんにちは、株式会社カミナシのエンジニア @tomiです。 前回、「サービスサイトをGatsby×Wordpress×NetlifyでJamstackなサイトにリニューアル」という記事を書き、たくさんの反響をいただきました。ありがとうございます。 kaminashi-developer.hatenablog.…

iPhone 12 Pro(LiDAR) + ARFoundationで ARゲームことはじめ

こんにちは、カミナシ・エンジニアの浦岡です。 iPhone12 Pro に搭載されているLiDARセンサーを活用したくARゲームの作成にチャレンジしようと思います。 今回、以下のような簡易的なゲームの作成を目標にします。 ゲームの流れ ①現実世界のスキャン ゲーム…

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

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

【React Native】表示速度が遅い問題のカイゼン

はじめに こんにちは、株式会社カミナシのエンジニア @imuです。 今回は「React Nativeの表示速度が遅い問題のカイゼン」について書きたいと思います。 『カミナシ』は新しい機能を最速でリリースして、ビジネスの速度を上げる期間がありました。 そのときの…