サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
kaminashi-developer.hatenablog.jp
Gopherの皆さん、こんにちは! カミナシのHRでエンジニア担当している木村です。 来る2023年6月2日金曜日にGo Conference 2023が開催されますね。 カミナシはシルバースポンサーとして参加させていただきます! Go Conference 2023 今回もオンライン開催となりますが、オフィスアワーでカミナシのブースを出させていただいています! ブース内ではテーブルを2つ設けており、カミナシのソフトウェアエンジニアが常時2名以上おりますので、ぜひお気軽にお声がけください。 Golangについて雑談したい! カミナシについて聞きたい! カミナシのGolangの話を聞きたい! kaminashi-developer.hatenablog.jp などなど、なんでもOKです! ブース内の資料コーナーにはカミナシを知るためのコンテンツを用意していますので、こちらもぜひ併せてご覧くだ
こんにちは。ソフトウェアエンジニアの坂井 (@manabusakai) です。 カミナシのプロダクトは、管理者の方が使う Web アプリに React、現場の方が使う iPad / iPhone アプリに React Native を採用しています。 どちらもフロントエンドの技術スタックを採用していることもあり、先日までは Monorepo と Yarn Workspaces の構成で運用されていました。 最近では Monorepo 化を進めている事例もよく見かけるようになってきました。 engineering.mercari.com devblog.thebase.in ですが、カミナシでは Monorepo をやめてリポジトリ分割をする意思決定を行いました。 具体的には、harami_client という Monorepo を harami_web と harami_mobile とい
こんにちは!カミナシでソフトウェアエンジニアをやっているくらさわです! 今回は社内でゆるめに輪読会をやってみた話をブログにしてみました! どうぞご覧ください! 輪読会のきっかけ 読む本の選定について 輪読会の進め方 輪読会の結果と反省 まとめ 輪読会のきっかけ きっかけは僕が最近積読本が増えてきたからなんとかしたいな〜、社内で輪読会でも開いたら無理やり読むようになるかな〜みたいな軽い気持ちで Slack の個人部屋 (いわゆる times ) で呟いたのが始まりでした。 そしたら何人かリアクションくれたので、その場で本の候補を募ってみました。 そんな雑な感じで始めた輪読会ですが、僕の中では二つの目的がありました。 僕の読書習慣をつける 複数チームでまたがって技術的な議論や雑談をする場を作る 1 はかなり自分本位な目的です笑 2 はカミナシでは、少し前にチーム分割により、チームが別れ、雑にチ
ソフトウェアエンジニアの 鈴木 (@szk3) です。 先日、カミナシにおいて古くから存在する1つの機能をリアーキテクティングしました。 その結果、処理時間は4分の1以下、コストは90%程度削減 と大きな成果を出すことができました👏 本記事では、その機能が抱えていた課題に対しどのような改善のアプローチをして上記の結果に結びついたのか?について共有します。 Excel変換とは 今回、リアーキテクティングの対象となった機能は、カミナシに帳票として記録されたデータをExcel形式に変換して出力する機能です。 これを、”Excel変換” と呼んでいます。 Excel変換は、カミナシのサービスの中でも比較的古くから存在する機能です。 ここ数年での利用ユーザーの増加と共に、設計当初のシステムアーキテクチャが技術的な負債となっている状態でした。 Excel変換の課題 まず最初に、設計当初のアーキテクチ
こんにちは。ソフトウェアエンジニアの坂井 (@manabusakai) です。 カミナシは Web ブラウザ向けに React、ネイティブアプリ向けに React Native を採用しています。 2023/02/10 時点で ts, tsx のファイルは 1,468 個ありました。 一定規模を超えたプロジェクトということもあり、Prettier や Organize imports が適用されているファイルとされていないファイルが混在していました(Organize imports は未使用の import を削除したり、既存の import をファイルパスでソートする機能のことで、TypeScript 2.8 から使えるようになりました)。 Pull request を作るときはコードフォーマッターの差分だけコミットを分けたり、少しの変更であれば他のコミットに混ぜてしまっているケースも見
こんにちは、カミナシPMのGTOです。 みなさんは開発の動きはどのように確認していますか? 弊社では、PMチームが作業状況をJira上のコメントを適宜確認し、動きがないか人力ウォッチしていました。 これでは、チーム間でコミュニケーションのミスは大小限らず各所で発生しますし、何よりも非効率的ですよね。 さらにコミュニケーションのミスは関係者間で認識を再度揃え直すのにもコストがかかるし、そもそもあの人がやったやらないの議論って本質的じゃない。なんとか出来ないかと頭を悩ませていました。 この問題を解決する解決策として、GASとSlack Botを使うといい感じにできそうだったので、今回作ってみました! 作ったツール 以下のスクショのように、作業完了したJiraチケットをEpic単位でまとめてSlackへ通知してくれるBotを作成しました。(🌾は自分が所属するチームのチームアイコンです) 今回は
カミナシ・エンジニアリングマネージャーの @dmi8a です。 2022年も残すところ後わずかとなりました。 本日は2022年のカミナシ開発組織について簡単に振り返ってみたいと思います。 人数 全体的な人数は微増でしたが、この1年で正社員の割合が増えています。 おかげで、1年前と比べると運用対応(不具合や問い合わせ対応など)可能な人数が増えており、 今後の運用負荷軽減だったり、ナレッジの蓄積など、ポジティブな兆候が見え始めました。 gyazo.com 技術広報 CTOの原トリが各メディアに露出したり、登壇したりした結果、 2022年は大分採用広報活動も強化できたのではないかと個人的には感じます。 gyazo.com トレーニング 2021年は0だった社内トレーニングコンテンツも、CTO就任を境に以下のような事を実践してきました。 ・Docker勉強会 ・セキュリティー勉強会 第1回 ・セキ
カミナシのソフトウェアエンジニア @imu です。 いきなりですが、バグと聞いてどういう印象を持ったでしょうか?おそらく、ネガティブなイメージを持つ方が多いのではないかと思います。ですが、ソフトウェアエンジニアには付きものと言って過言ではないくらい、バグとは長く付き合っていくものですよね。 今回はバグを調査する勘所として、バグが発生してしまったときにどういう調査をしているのか、普段何に気をつけているのかを共有して、誰かの役に立てれば幸いです。 あくまで私個人の話であり、ソフトウェアテストプロセスの話はしないので予めご了承ください。 目次 目次 前提 バグ調査の勘所 バグ発生前の心構え リリース直後のバグ発生 既存バグ 再現性の低いバグへのアプローチ ユーザーからの問い合わせ まとめ 前提 自身が携わっているプロダクトが一つ リリース日が決まっている(24時間365日リリース出来る環境ではな
こんにちは。カミナシ ソフトウェアエンジニアの @aoman です。 つい先日、Goで有名な@tenntennさんがConnpassで募集していたGopher塾#2に参加させていただきました。 tenntenn.connpass.com 大変勉強になりおすすめです!筆者が参加したのは第一回目ですが、二回目三回目と予定されているようなので、有料講義ではありますが気になる方はぜひ参加してみてください!学生さんであれば無料の抽選枠もあります。 その際に紹介されていたコードで、エラーのラップ関数があったのですが、これが「メッチャアタマイイ!!スタイリッシュ!!」と感動しました。そのコードは、Goの公式ページである https://go.dev/ のWebサイトを実装しているリポジトリ pkgsite 内の internal/derrors パッケージで実装されています(GitHubリポジトリはミラ
こんにちは!カミナシでソフトウェアエンジニアをやっているくらさわです! 今回は、以前から触ってみたかった Remix + Cloudflare Pages + Cloudflare Workers KV で簡単に素振りしてみた話を書きたいと思います! なぜ触ってみたかったのかというと、 エッジコンピューティングはよく聞くけど実際にちゃんと使ってみたことがなく、エッジで SSRできる Remix にも元々興味があったためです。 初めに触った技術に関して軽く説明していますが、本当に軽くなので気になる方は公式サイト等をご覧ください。 Remix について Cloudflare Pages について Cloudflare Workers KV について 開発について Remix プロジェクトの作成 Cloudflare Pages にデプロイ Cloudflare Workers KV の作成 バ
前回の記事でも書かせていただいたとおり、先週アメリカのラスベガスで行われた AWS re:Invent に参加してきました。 kaminashi-developer.hatenablog.jp 筆者は海外へ行くことも2回目(米国は初)で慣れないことも多く大変だったため、反省を来年に生かすためにも、初参加してみてわかったこと、事前準備しておけば良かったと感じたことを記載させていただきます。 来年は AWS re:Invent に参加したい(けど海外はあまり行ったことがなくて不安)という方はぜひご覧いただければと思います。 ※ セッションの内容に触れる技術的なことは今回記載しておりませんので、そちらは別途ブログに記載できればと考えております。 事前準備〜移動 ホテル及び、人気のセッションの予約はすぐ埋まるのでチケット取得は早めに イベントのチケットを購入するとイベントのポータルサイトにログイン
カミナシ ソフトウェアエンジニアの中原です。 会社として AWS re:Invent 2022 に参加させていただけることになり、現在ラスベガスに来ています! 時差があるため、現在ちょうど1日目のセッションが終わる頃なのですが、現地の雰囲気をいち早くお伝えさせていただこうと思います! 前日まで ロサンゼルスには日本時間の 11/26(土) の夜に出国し、一度ホノルルを経由し現地時間の日曜朝にラスベガス(マッカラン国際空港)に到着。 イベントの会場は近くのホテルになるのですが、現地の11/27(日)はマッカラン国際空港にて Badge pickup を行っていたため、空港内でそのままイベントのパスをもらうこともできました。 reinvent.awsevents.com しかし昼頃には空港の Badge Pickup は混み始めており、ついでにSwag(お土産)ももらうべく、メイン会場となる
はじめに こんにちは、カミナシ社でソフトウェアエンジニアをやっている浦岡です。 我々は「ノーコードでユーザー独自の現場アプリを作成できる」サービスを開発しています。 そのサービスのフロントエンドの開発にはReact×Reduxを使っているのですが、 サービス特性のため「Reduxのstateがファットになりがち」であったり「コンポーネント間のデータの依存関係が多くなりがち」といった状態に陥ります。 その結果、アプリの反応速度が遅くなりがちです... この記事では、上のような状態に陥った「React×Redux」アプリの高速化の一例をサンプルアプリを用いて説明します。 サンプルアプリについて 今回、Reduxのチュートリアルにあるカウンターアプリを改良し、下のような「モンスターの捕獲記録」アプリを作ります。 サンプルアプリについて Version1(コンポーネントをブルブルさせてみる) まず
こんにちは。カミナシ ソフトウェアエンジニアのAomanです。 最近ちょこちょこアルゴリズムやデータ構造、Goのキャッチアップしています。 そんな中、go.devのブログ Go blog のとある記事でダブルポインタを使用するコードに出会いました。筆者は今まで、RubyやJavaScript/TypeScriptなどの言語を多く触っていたためか、お恥ずかしながらダブルポインタを使うコードを初めて見たので「なんなのだこれは…」と戸惑いました。本記事ではそんなダブルポインタが使われていたコードについて、簡単にご紹介したいと思います。 そもそもダブルポインタとは? その名の通りポインタのポインタのことなのですが、わからない方は下記の記事がわかりやすくまとまっており参考になると思います。 daeudaeu.com ダブルポインタと聞いて、まずはじめに思った感想は「そんなもの必要?」です。今まで使っ
カミナシのソフトウェアエンジニア @imu です。 ソフトウェアエンジニアの仕事をしていて、やりがいを感じられる瞬間はいくつかありますよね。例えば、「新規機能開発をする」「新しい技術に触れる」「モノづくりが楽しい」などが挙げられます。ここ最近、私自身が一番やりがいを感じるなと思うことがあります。 それは「ユーザーからフィードバックをもらう」ことです。 日々の開発をする中で、ユーザーからフィードバックをもらうことは少ないかも知れません。直接ユーザーと会話する機会が少ないので、作成した機能や改善したことがユーザーのためになっているかを把握することは難しいです。 今回、技術的負債を解消した結果、ユーザーフィードバックが社内に共有される良い文化の事例をご紹介したいと思います! 目次 目次 技術的負債解消のキッカケ 一括承認とは 技術的負債について 課題 原因調査 該当クエリ 何が起きているのか 解
こんにちは。ソフトウェアエンジニアの坂井 (@manabusakai) です。 10 月の終わりに、ひとつだったエンジニアリングチームを分割する形で 2 チームが生まれました。社内では骨 🦴 と稲 🌾 という愛称で呼ばれています。 ちなみに、骨 🦴 の由来はこちらです。 今週から新しいチームが始動するのですが、チーム名は「骨」になりました🦴 英語の "hone" は「磨きをかける」という意味があるので、骨太でしっかりしたシステムを作り磨きをかけるという願を懸けました✨ pic.twitter.com/Gvf2VBYk7d— Manabu Sakai (@manabusakai) 2022年10月25日 前職でチームの立ち上げやスクラムを経験していたこともあり、CTO から骨 🦴 チームのスクラムマスターを任されました(専任ではなくエンジニアと兼任です)。 チームの立ち上げから 1
こんにちは!カミナシでソフトウェアエンジニアをやっているくらさわです! 今回は元々、サーバサイドをメインに開発していた私が、カミナシでモバイルアプリの開発に取り組んでみた話を書きたいと思います! カミナシのチームについて React Native について Expo について 超入門 やってみた感想 終わりに カミナシのチームについて カミナシのプロダクト開発では「単一のチームで顧客への価値提供が可能な体制をとる」という思想のもと、フロントエンド、バックエンド、インフラストラクチャーなどの技術的スタックでチームを分けることはしておりません。 参考記事: type.jp そのため、各個人では得意、不得意はありつつも、チームとしては全ての領域を担当しています。 フロントもサーバもインフラも手を出したいタイプの人にとってはめっちゃいい環境だと思います!おすすめです! そんな環境なので、私もずっと
カミナシ・ソフトウェアエンジニアの @Taku です。 先日行われた Sansan株式会社様主催の BtoB SaaSにおける技術課題との向き合い方 にて「デスクレスSaaSが向き合う、現場DXのための技術課題」というタイトルで発表してきました。 sansan.connpass.com 登壇概要 カミナシでは日本の就業人口の約60%を占める「ノンデスクワーカーの才能を解き放つ」をMissonに、現場のDXに取り組んでいます。 デスクレスSaaSという日本ではまだあまり例のないサービスのため、特有の技術課題がありました。 そのような技術課題にどう向き合っているのか、約2年半の間に急成長していく中で直面した課題を含め、お話しさせていただきます。 speakerdeck.com 「カミナシ」のサービス説明 「カミナシ」はノンデスクワーカー向けのノーコードツールです。 従来「紙」で記載していたチェ
カミナシのトリ (@toricls) です。みんな大好き Google Apps Script (GAS) の小ネタです。 TL;DR 業務で使っている Google カレンダーの 外部の方がいそうな予定 オフィスとかに出社が必要そうな(≒大好きな家から出なきゃいけなさそうな)予定 あたりに、自動で「色ラベル」を付けてくれるスクリプトを GAS で書きました。 以下のような感じで、いかにも他のと違って目立つよね!という感じに色を自動で付けてくれます。例えば僕のカレンダーだと、緑色のラベルを外部の方がいそうな予定(下のスクショだと「一次面接」)に、オレンジ色のラベルを家の外にでなきゃいけなさそうな予定(下のスクショは単なる飲み会)に設定するようにしています。 便利〜 いかにも便利そうですね。 (余談:「外部の方がいそうな予定」をハイライトしたかった理由はシンプルに遅刻やすっぽかしといった事故
カミナシ・エンジニアリングマネージャーの @dmi8a と、 エンジニアの @imu です。 現場DXプラットフォーム「カミナシ」は、WebのアプリケーションとMobileのアプリケーションを1セットで提供する形を採用しているサービスです。 今日はExpoのOTAアップデートを介した、カミナシMobileアプリのリリースでぶつかった壁とそれを突破した方法について共有させてください。 本記事における前提 「カミナシ」は、Mobileのアプリケーション開発に、React Nativeを採用しております。 ※ご周知の通り、React Nativeは、iOS/iPadOS系アプリとAndroid系アプリの双方を開発できるクロスプラットフォームのアプリ開発用フレームワークです。 本記事では、iOS/iPadOS系アプリに絞った話となっております旨ご了承ください。 React Native + Exp
目次 目次 はじめに この記事の対象読者 reflectパッケージとは? 基本的な使い方 reflect.Type reflect.Value 実装 reflect注意点 参考させていただいた文献 終わりに はじめに こんにちは、そしてはじめまして!カミナシエンジニアのAomanです。 カミナシでは現在、サーバーサイドの開発をGo言語で行っています。 社内用管理画面のAPIを実装をしていたところ、とある処理の中で「構造体の指定したフィールドをゼロ値にして処理をしたいな🤔」という場面に遭遇しました。利用している OR マッパーが SQL クエリを構築する際、構造体のフィールドがゼロ値ではないと自動的にそれらがクエリに組み込まれるという仕様であり、その仕様を回避したかったためです。もちろん、オプションでこの仕様を回避する方法は提供されていますが、既存のモデル構造体を変更することは出来ない状況
カミナシ・エンジニアリングマネージャーの @dmi8a です。 先日行われた 弁護士ドットコム様 × カミナシ共催イベント「憧れのマイクロサービスと愛すべきモノリスの話」 にて「カミナシの開発組織の現在地 〜個人集団からチーム化へ〜」というタイトルで発表してきました。 概要 「カミナシ」というサービスは、その名の通り、様々な紙の帳票を無くす効果がある(デジタル化する)サービスですが、 それだけではなく、紙の帳票を使って行われる様々な業務フローまでをもデジタル化するサービスです。 Webアプリケーションとmobileアプリケーションの双方をアプリケーション群とし、1つのサービスとして提供しています。 本LTでは、そんな「カミナシ」を開発している開発組織の約1年くらいの変遷について発表して参りました。 speakerdeck.com 「カミナシ」の基本的な使われ方 「カミナシ」はノンデスクワー
カミナシのソフトウェアエンジニアの天野です。 カミナシは、現場DXプラットフォーム「カミナシ」の開発をしています。 今日はフロントエンドの小ネタを紹介しようと思います。 よろしくお願いします。 TL;DR 経緯 結論 実際に見てみると TL;DR Reduxで管理しているstateにコメントを入れておくと useSelector(https://react-redux.js.org/api/hooks#useselector)で値を取り出す時に コメントを表示してくれるようになって安心だよ。 経緯 カミナシのフロントエンドでは、全面的にReduxを採用しています。 まず、前提として「カミナシ」はかなり短期間で開発された経緯があります。 また、mobileとwebでサービスを提供する必要があったため、ReactとReact Native (Expo)を採用し、ローンチまでのスピードを上げる狙
7月に株式会社カミナシに入社したくらさわです! カミナシでは、現場DXプラットフォーム「カミナシ」の開発をしています! よろしくお願いします!!! きっかけ 検証バージョン 結論 コード書いて確認してみた ドキュメント読んでみた コード読んでみた go-sql-driver/mysql のコード GORM のコード まとめ きっかけ 現在、カミナシの開発では、サーバサイドの言語は Go 、ORマッパーとして 「GORM」 を使い、DB には Amazon Aurora MySQL を使っています。 ある日、開発中に GORM が吐いてくれるログで query を調べていると、アプリケーションの実行中は結果が取れていないのに、その query をコピーして、手動で MySQL に投げると結果が取得できるということがありました。 パッとわからなかったので、それについて調べたことを記事にしてみま
カミナシ・エンジニアリングマネージャーの @dmi8a です。 先日行われた レガシー現場をテクノロジーで切り拓く 〜保育・教育・建設・製造・医療現場で活躍する管理画面づくりとは〜 にて「紙にまつわる苦しみを機能化してきたカミナシの歴史」というタイトルで発表してきました。 概要 「カミナシ」というサービスは、その名の通り、様々な紙の帳票を無くす効果がある(デジタル化する)サービスですが、 それだけではなく、紙の帳票を使って行われる様々な業務フローまでをもデジタル化するサービスです。 Webアプリケーションとmobileアプリケーションの双方をアプリケーション群とし、1つのサービスとして提供しています。 本登壇では、そんな「カミナシ」のWebアプリケーション部分(管理画面)に焦点を当てて、 紙の帳票を使った運用における苦しみを実例でお伝えするとともに、「カミナシ」の機能について発表して参りま
こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 我々のサービス『カミナシ』をローンチしてから、今年の夏で丸2年を迎えます。 私は『カミナシ』のプロダクト開発初期メンバーの1人でした。当時会社の残りランウェイ(残資金で運営できる期間)が極端に短いという厳しい時間的制約のなかで高速にプロダクトを作り上げたことを誇りに思う一方、その代償としての技術的負債は今も解消しきれずに残っています。 継続的に寄せられるお客様からの機能開発要望や、ユーザー数が増えた結果発生しはじめた不具合への対処に時間をとられ、それら技術的負債の根本的な解消には、これまで会社として注力することができていませんでした。今年に入ってから既存ユーザーにも影響が出てしまうような問題の発生が徐々に目立ちはじめています。 この状況をカイゼンすべく、私たちはバックエンドの技術的負債を解消する第一歩を踏み出しました。
エンジニアのTakuです。 カミナシではデータ保全のため、RDSのスナップショットを1時間おきに取得し、万が一のデータ破損に備えております。 今回はそのECSタスクで定期的にバッチ処理を実行する方法について共有させていただきたいと思います。 取得理由 カミナシでは150社以上の企業様にご利用いただいており、毎日膨大なレポートが作成されております。(2022年4月現在) ご参考)↓の14ページ speakerdeck.com 日々膨大な量のデータが増えており、中には監査などの保管が必要なデータもあり、データやDBの破損が発生するとお客様への影響が大きいです。 そのため、万が一の際の障害発生時の影響を少しでも抑えるため、1時間に1回フルバックアップを取得しそれらを最大24時間保持することとしました。 ※ポイントタイムリカバリを利用した特定の時点への復元も可能ですが、そちらが破損する事態にも備え
こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 2021年11月に以下の開発者ブログを公開しました。 kaminashi-developer.hatenablog.jp α版として構築したインフラですが、2022年1月にインフラ移行の話が突如検討されました。 なぜ最終的にAWSへ移行になったのかと私が何を感じたのかをお話します! 補足 完全移行したのはAPIサーバーです。クライアントアプリはCloudBuild + Firebase Hostingの環境が残った状態です。 移行後のAWS構成図はここでは共有していません。また別の機会に。 GCPを否定する記事ではありません。 本記事で様々なコメントを頂いておりますが、追加で補足をさせてください。 記事内の「私がGCPを選択した理由」で、私個人が勝手な意思決定をしてGCPを選択したように受け止められてしまう書き方でした。
こんにちは、株式会社カミナシのエンジニア @imu です。 はじめに 突然ですがファイルアップロードに失敗することってありますよね? カミナシレポートのプロダクトはオフライン機能を実装しており、オフラインで記録したデータをアップロードしたときに失敗するケースが、特定の条件下で起きるようになりました。そのため一部のお客様のデータが端末に残り続け、なんとかしてほしいとサポート依頼が発生しておりました。 私自身、半年ぶりにカミナシレポートのプロダクトに戻ってきたばかりで、リハビリのissueとなりました(笑) 今回は問題を解決するまでの仮説や、調査から解決までお話したいと思います! ※オフライン対応をなぜしているのかは以前書いたこちらを参照いただければと思います。 kaminashi-developer.hatenablog.jp 結論 何が問題だったか結論だけ知りたい方はこちらへ 開発環境 g
次のページ
このページを最初にブックマークしてみませんか?
『カミナシ エンジニアブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く