カラビナテクノロジー デベロッパーブログのフィード
https://zenn.dev/p/karabiner_inc
株式会社 カラビナテクノロジーは「命綱や支点を素早く確実に繋ぐカラビナ。そんなカラビナのような役割をテクノロジーで実現したい」という想いのもと、福岡で設立。 主にシステム開発・アプリ開発・ Webサイト制作を行っています。採用情報→https://karabiner.tech/c
フィード

CloudRunでhttp/2とwebsocket起動を両立した話
カラビナテクノロジー デベロッパーブログのフィード
経緯ある日、開発中のシステムの検証環境を触っている時、websocket通信に失敗しているログが流れているのに気づきました。慌ててローカル環境でも確認しましたが、ローカルは普通に動いています。おかしいなと思ってあれこれ調べたところ、どうやら後から追加したCloudRunのhttp/2を有効にする設定がwebsocketと噛み合いが悪いことが発覚しました。ということで、この状況を無事解決することができたので、どうやって解決したかを記事にまとめてみます。 対象者http/2有効化とwebsocket起動の両方が必須の欲張り仕様を実現したい方GoogleCloudの基本的...
7時間前

Androidアプリの段階的リリースを自動化するカスタムアクションをAIに爆速で作らせた
1
カラビナテクノロジー デベロッパーブログのフィード
課題現在開発に携わっているアプリでは段階的リリースを採用しています。またiOSアプリのリリースフローと合わせる形で、1日おきに公開率を上げていく運用をしています。App Storeであれば自動的に段階的リリースを行う機能があるのですが、Google Playにはそのような機能がないため、手動で公開率を上げる必要があります。リリースのたびに手動で操作するのは面倒なので、Google Play ConsoleのAPIを使って段階的リリースを自動化することにしました。 作ったもの段階的リリースの公開率を上げるためのGitHub Actionsのカスタムアクション、およびそれ...
3日前

terraform importするときにちょっと便利なスクリプトを作ってみた
カラビナテクノロジー デベロッパーブログのフィード
経緯最近インフラ周りを触る機会が増えて、とうとうterraformまで触るようになりました。見よう見まねでterraformコマンドを実行している時に「これって頻繁に使う割に実行するのめんどくさいし、スクリプトにしちゃえばいいのでは?」と思って作ったやつを、せっかくなので公開してみようというコンセプトの記事になります。めちゃくちゃterraform初学者が書いてるので、もっといいやり方をご存知の方がいたら是非コメントで教えてください🙏 対象者terraform importの書式を毎回忘れちゃう方terraform import済みかどうかわからなくなってモヤモヤした...
24日前

DroidKaigiに現地参加してきた(2日目)
カラビナテクノロジー デベロッパーブログのフィード
DroidKaigiに初現地参加しましたこの記事では私が2日目のConference Dayに参加したセッションの内容をまとめました特に続き物ではないですが、1日目が読みたい方はこちらからご覧いただけますメモを取って整理した箇所、知らなかったけれど理解できた箇所が中心なので、私がすでに知っていたり、頑張って理解しようとしたけれど難しかった箇所は飛ばしてます誤解してそうな箇所があれば、優しくコメントしてもらえると幸いです・・・スライドは見つけたら掲載しています Flutterからネイティブへの挑戦と学び - 評価1.6から4.0への道のり最初はFlutterでアプリを開発...
1ヶ月前

DroidKaigiに現地参加してきた(1日目)
カラビナテクノロジー デベロッパーブログのフィード
DroidKaigiに初現地参加しましたこの記事では私が1日目のConference Dayに参加したセッションの内容をまとめましたメモを取って整理した箇所、知らなかったけれど理解できた箇所が中心なので、私がすでに知っていたり、頑張って理解しようとしたけれど難しかった箇所は飛ばしてます誤解してそうな箇所がもし見つけたら、優しくコメントしてもらえると幸いです・・・スライドは見つけたら掲載しています KotlinでのAI活用による開発 AI支援コーディングがどう役立つのかAIを使ってコーディングの支援を受けられるが、主に以下のように分けられます上に来れば来るほどミニマム...
1ヶ月前

Nginx+PHPの環境でサイズの大きいファイルをアップロードする ~CloudRun編~
カラビナテクノロジー デベロッパーブログのフィード
経緯https://zenn.dev/karabiner_inc/articles/b411b73fe81f24こちらの記事の続きです。続きと言っても、やってることは前回と全然別の内容になるので、読まなくても大丈夫です。 動作環境・前提CloudRunのマルチコンテナ(サイドカー)で、NginxとPHPの2つのコンテナを立てています。バージョンPHP8.3.6Nginx1.29.0 対象者サイズの大きいファイルをアップロードしようとした時、ローカル環境だと成功するのに本番環境だと失敗する方CloudRunの設定の仕方がわからな...
2ヶ月前

Nginx+PHPの環境でサイズの大きいファイルをアップロードする ~ローカル環境編~
カラビナテクノロジー デベロッパーブログのフィード
経緯サイズの大きいファイルをPHPのアプリケーションにアップロードしようとしたところ弾かれたので、設定を色々修正して解決しました。その時の備忘録になります。 動作環境・前提Dockerで、NginxとPHPのコンテナを立てています。バージョンPHP8.3.6Nginx1.29.0 対象者サイズの大きいファイルをアップロードしようとして失敗する方調べて設定の変更を試したけど、上手くいかない方(少なくとも、僕と同じ動作環境であればこの記事の通りの設定でいけると思います) 本題結論、php.iniとnginxのnginx.co...
2ヶ月前

Cloud StorageのCORSエラーを解決し、オブジェクトを署名付きURLでDLする
カラビナテクノロジー デベロッパーブログのフィード
経緯開発中のWebアプリで、バックエンドでCloud Storageオブジェクトの署名付きURLを取得し、それをフロントエンドで表示とダウンロード用のリンクとして使うような実装にしたところ、ダウンロードの時にCORSエラーが出てしまいました。表示は問題なくできていたので「何故???」と悩むことになりましたが、解決方法さえわかればそんなに難しくなかったので、同じく困っている方がいれば参考にしてください。 対象者同じくCORSエラーで悩んでいる方CORSって何?なんで表示はできるのにダウンロードできないの?って方 動作環境バージョンMac(Appl...
3ヶ月前

MVIフレームワーク試し打ち#1: yumemi-inc/Tart
カラビナテクノロジー デベロッパーブログのフィード
はじめにyumemi-inc/Tartを使ってAndroidアプリを作ってみました。対象読者MVIフレームワークを試してみたい人yumemi-inc/Tartの使い心地が知りたい人 MVIとはMVI (Model-View-Intent) は、アプリケーションの状態管理とUIの更新を効率的に行うためのアーキテクチャパターンです。MVIは、以下の3つの主要なコンポーネントで構成されています。Model: アプリケーションの状態を表現します。状態は不変であり、変更がある場合は新しい状態を生成します。View: ユーザーインターフェースを表現します。Vie...
5ヶ月前

チーム全体の生産性を加速する!開発ナレッジを活かした自動化の実践
カラビナテクノロジー デベロッパーブログのフィード
開発現場では、日々の作業の中で手作業による負担が蓄積し、チーム全体の生産性が低下することがあります。そこで重要になるのが「自動化」です。本記事では、開発ナレッジを活かしてチーム全体の生産性を向上させるための自動化の具体的な実践例を紹介します。 対象読者GitHub Actionsを使って手作業を自動化したい方開発チームの生産性向上に関心があるマネージャーやリーダー継続的インテグレーション/デリバリー(CI/CD)の導入を検討しているエンジニア 自動化はチーム全体の生産性を向上させる自動化の導入は、個人の作業効率を向上させるだけでなく、チーム全体の生産性向上にも貢献しま...
7ヶ月前

エンジニアのための「めんどくさい」タスク攻略法
カラビナテクノロジー デベロッパーブログのフィード
そろそろ年度が変わるので、毎年目標設定を課されている会社であれば、憂鬱な目標設定の時期が迫っているのではないでしょうか?目標設定をしたのはいいものの、半年後や1年後の振り返り面談の際に、こうなってしまうことはありませんか?目標は設定した瞬間がやる気のピークで、その後は減少していく一方なので、達成するのは難しいものです。本記事では、私が実践している「めんどくさい」タスクへの対処法を紹介します。来年度の目標達成に役立てていただければ幸いです。 なぜ「めんどくさい」と感じるのか? やることが漠然としていて取り掛かりにくい「やりたいこと」や「やるべきこと」が「めんどくさい」と...
7ヶ月前

共有ドライブに対してGoogle Drive APIを実行する際のオプション指定について
カラビナテクノロジー デベロッパーブログのフィード
この記事について共有ドライブを操作する場合はsupportsAllDrivesというオプションを有効化したりしなかったりする必要があるようなんですが、それに関する情報がなかなか見つからなかったので自分でまとめてみます。GoogleDriveAPIを有効化するところから書き始めるので、オプションの話だけ読みたい方はこちらまで飛ばしてください。使用言語はPHPですが、他の言語でも必要なオプション自体は変わらないので、応用は効くと思います。僕は最初このことを知らず、「設定は大丈夫そうなのに何故ファイルの作成も取得もできないんだ???」と小一時間悩むことになったので、そういう人が1人...
8ヶ月前

DrupalでHeadless Chromeを実行する
カラビナテクノロジー デベロッパーブログのフィード
目標Headless Chromeが使えるDocke環境を構築するDrupa10でHeadless Chromを利用するカスタムモジュールを作成する 対象者DrupalでHeadless Chromを利用するカスタムモジュールを作りたい方PHPでHeadless Chromeが使えるDocker環境を構築したい人 動作環境・前提!実は、Drupalのコントリビュートモジュールの中に、Headless Chromeを使ってPDFを発行できるものがいくつかあります。それらの中に、ご自身がやりたい事やシステムの要件にマッチしたものがあればそちらを使うようにして...
9ヶ月前

Gsonにレスポンスを殺された日
カラビナテクノロジー デベロッパーブログのフィード
API通信周りの実装をリファクタリングしたらバグを埋め込んでしまったのでそこから得られた知見を共有したいと思います。 この記事で得られる教訓使っているJava製ライブラリについてKotlin製の代替があるならそちらに移行したほうがよいKotlinはJavaにはない機能があるため、Kotlinの実装は悪くなさそうに見えても予期しない振る舞いをとるケースがあるとくにデフォルトパラメータとかnon-null周り レスポンスを格納するdata classをリファクタリングしたとあるエンドポイントのレスポンスを格納しているクラスをリファクタリングしました。そのエンドポイントは...
1年前

[調査記録] roborazziが自動生成したPreviewテストが失敗する
カラビナテクノロジー デベロッパーブログのフィード
諸注意業務で得た知見なので、記事のなかで示すコードは改変しています ./gradlew recordRoborazzi が正常終了しない!!https://zenn.dev/karabiner_inc/articles/4d939b478c5f40前回、roborazziを導入してはまった点についての記事を書きました。実はその裏でもっとはまっていたことがありました。それは、./gradlew recordRoborazziでスクリーンショットを撮ろうとしてもタスクが正常終了せずに、画像が出力されないというものです。 経緯とりあえず、roborazziが導入できるか...
1年前

[備忘録] roborazzi導入してみた
カラビナテクノロジー デベロッパーブログのフィード
案件のアプリケーションにroborazziを導入しようとして、いろいろはまったところがあったので備忘録的な記録をします ゴールjunit5を使って単体テストを書いているプロジェクトにroborazziを導入できるようになるプレビューテストの妨げになるComposable関数が分かるようになる 依存を追加 // root-level build.gradle.kts plugin { // ...+ id("io.github.takahirom.roborazzi") version "1.29.0" apply false } //...
1年前

正規化について勉強したことをまとめてみる 〜その2〜
カラビナテクノロジー デベロッパーブログのフィード
経緯こちらの記事の続きです。1つの記事にするには文章量が多すぎたため、2つに分けています。 対象者DB設計を勉強している、または興味がある人第1〜3正規形までを勉強済みの人(まだの方は、前回の記事を先に読んでみてください)ボイス-コッド〜第5正規形を勉強したい人達人に学ぶDB設計を読んだことがある、または興味がある人 記事の内容 この記事で書くことボイス-コッド〜第5正規形について(順番に章を分けてまとめます)また、以下はこの記事で扱うキーワードです。(前回の記事と同じなので飛ばしても大丈夫です)キーワードの定義以下のような表のことを「テー...
1年前

Java SDKで作られたRealmのデータをKotlin SDKでマイグレーションする
カラビナテクノロジー デベロッパーブログのフィード
元々、アプリ内にデータを保存するためにJava SDKでRealmを使っていたのですが、アプリのアップデートでKotlin SDKに乗り換えることになりましたテーブルの内容も併せて変わるのでRealmのデータのマイグレーションが必要なのですが、いい感じにまとめられた記事が見かけられず、地味に詰まってしまったので、同志がいることを信じて残すことにしますちなみに、公式には上記のような感じのものはなかった様な気がしますJava SDKからKotlin SDKに乗り換えるときのコードの書き換えみたいなのはありました 環境 RealmJava SDK(ver:10.15.1)からK...
1年前

正規化について勉強したことをまとめてみる 〜その1〜
カラビナテクノロジー デベロッパーブログのフィード
経緯最近、達人に学ぶDB設計という本を読みました。大変読みやすく、仕事中もすぐ手に取れる場所に置くぐらいには気に入っています。で、せっかく読んだのでアウトプットしたいと思まして、手始めに「正規化」について自分の言葉でまとめてみようと思います。もし筆が乗ったら他のトピックについても記事にするかもしれません。予定は未定。 対象者DB設計を勉強している、または興味がある人第1〜3正規形までを勉強したい人(これ以降は、長くなったので別の記事にします)達人に学ぶDB設計を読んだことがある、または興味がある人 記事の内容 この記事で書くこと正規化・正規形について...
2年前

ライブラリをインストールせずにGoogle Sheets APIを使いたい
カラビナテクノロジー デベロッパーブログのフィード
タイトルの通り、ライブラリをインストールせずに、エンドポイントのみを使ってスプレッドシートの生成や編集をやってみようと思います。これをやることになった経緯とあるローコードプラットフォームで開発することになったスプレッドシートの生成や編集をしたい。エクスポートなんかもできると◎(エクスポートはGoogle Sheets APIだけでは不可能でした)Google Sheets APIというのがあるらしい!早速使おうとしたが、なんと使用していたプラットフォームではライブラリのインストールどころかファイルのアップロードすら不可能だったGoogle Sheets APIなら、エンドポ...
2年前