アイリッジ開発者ブログ

アイリッジに所属するエンジニアが技術情報を発信していきます。

AIに自我を与えてみた

こんにちは、アイリッジ開発部の高田です。 オープンLLMを使って自分専用のAIを作り、自我を与えるという実験を行ってみましたので、その一部始終をブログにしたいと思います。 非常に長い記事となってしまいましたが、お時間のある方は、少しお付き合い頂け…

Android で Web ページを開く方法を比較する(WebView / Custom Tabs / 外部ブラウザ)

こんにちは。開発部第 1 グループの坪倉です。 Android アプリで Web ページを表示する手段は、大きく分けて次の 3 つがあります。 WebView:アプリ内に Web ページを埋め込む Custom Tabs:ブラウザが提供する「アプリ内ブラウザ」を呼び出す 外部ブラウザ…

【iOS】自分のPCの開発環境構築手順をシェアしてみる

はじめに こんにちは。開発部第1グループの高橋です。普段はiOSアプリ開発を担当しています。 アイリッジでは会社から貸与されているPCを定期的に交換してもらうのですが、新しいPCのセットアップって何をしてたっけ?と毎度忘れてしまいます。 皆さんもきっ…

Contextのマニアックな使い方3選

週ごとに暑さと寒さが入れ替わり、人間に優しくない令和時代を生きている開発部の小宅です。 Android開発で誰もが一度は「とりあえず this 渡して動いたからヨシ!」とやり過ごす Context。でも、こいつの裏側を知ると、実は結構マニアックで面白い使い方が…

新人研修とアプリ開発 ‐AIと共に-

こんにちは。開発部 第一グループの山田です。 2025年12月に、Androidエンジニアとして株式会社アイリッジへ入社しました。 普段、自分の考えを言語化して外部へ発信することはあまり得意ではないのですが、研修での学びや心境の変化を形に残すべく、今回筆…

もう画面下部からは出現しない!? iOS 26で変わるアクションシート

こんにちは、開発部第1グループの西岡です。 iOS 26 がリリースされて、いわゆる「Liquid Glass」と呼ばれる新しいデザインシステムの導入により、UI/UXが大きく変わりつつあります。中でもユーザーの意思決定を促す「アクションシート」は、従来のボトムア…

【Android/Kotlin】ExoPlayerをPicture in Pictureで再生してみた

こんにちは。開発部第一グループの岡田です。 今回は、動画をピクチャーインピクチャー(PiP)で再生できるAndroidアプリの実装方法についてご紹介します。 使用技術 Kotlin 2.0.21 ExoPlayerライブラリ 主な機能 動画の再生 PiPモードへの切り替え(動画を…

Feature FlagとiOS/Swiftでの実装

こんにちは。開発部第一グループの吉田です。 未完成の機能をブランチにマージしながら安全にリリースを進めるために、Feature Flagを使用しています。Feature Flagを活用することで、開発中の機能を本番環境に含めたままリリースし、適切なタイミングで公開…

入社後3ヶ月研修を終えて🌈

こんにちは。開発部第一グループの田村です。 私は2025年7月にiOSエンジニアとして中途入社でアイリッジに入社しました。3ヶ月間の研修が終わりブログを執筆する機会をいただきましたので、3ヶ月間の研修期間で行ったことを交えつつ、アイリッジに入社して研…

iPhone 端末の暦法設定に注意されたし

こんにちは。開発部第1グループの涌井です。 今回は「iPhone 端末の暦法設定に注意されたし」と題しまして、普段何気なく書いているコードでも思わぬ落とし穴があるので、注意したいですよね。という内容でお送りいたします。 注 : 以降の文章では、「端末…

iOS/Swiftで端末ストレージ残量低下を検知して判定を出すにはどうしたら良いか

こんにちは。 開発部 第一グループ の杉田です。 今回はiOS端末において「端末ストレージ残量低下を検知して判定を出す」にはどうしたら良いか、という興味が湧きましたので実装してみました。 前提: 本稿は端末ストレージの残量を取得し、 “低下したか”を…

plistをシェルスクリプトの設定ファイルとして使う試み

こんにちは。プロダクト開発グループの斉藤です。 普段は iOS アプリの開発をしている立場ですが、運用やビルドのためにシェルスクリプトを書くことがあります。 その際に、スクリプトのための設定ファイルを作りたい場面などもよくあり、いつもであればJSON…

SwiftUI でアニメーション GIF を動かす

はじめに こんにちは。プロダクト開発グループの于です。 今回は、UIViewRepresentable で UIKit を活用し、SwiftUI でアニメーション GIF を動かす方法のご紹介になります。 Swift や SwiftUI では、標準で GIF アニメーションを再生できません。たとえば S…

Android 歩数計の実装方法を比較する

こんにちは。開発部第 1 グループの坪倉です。 Google Fit API は 2026 年に非推奨(廃止予定)となります。 また、2024 年 5 月 1 日以降は新規アプリで Google Fit API を登録できなくなりました。 これを踏まえ、代替となる 2 つの歩数記録方法 と、参考…

【Android16】大画面デバイスでscreenOrientationが無効になる!?

Android16リリース 2025年6月10日に Android 16(API レベル 36)がリリースされました。 これまでの慣例に従えば、新しいOSのリリースから約1年後には、Google Play ストアでの公開・更新において、targetSdk のアップデートが必要となります。 Google Play…

便利になった!? Background Tasks のデバッグについて

はじめに こんにちは。開発部第1グループの西岡です。 WWDC 2025 と猛暑で寝不足がちな6月に入りました。 今回は Background Tasks フレームワークを使ったバックグラウンド処理の実装に対するデバッグ方法について触れたいと思います。 なぜ今さらデバッグ…

AndroidのJetpackComposeで歩数計を実装してみた

こんにちは。 開発部第一グループの若松です。 Android アプリで歩数計を開発する機会があったので実装してみました。 歩数を取得する実装は SensorManagaer、ヘルスコネクト、Recording API などいくつかありますが、今回は SensorManagaer を使って、歩数…

【SwiftUI】UIViewControllerで設定されたナビゲーションバーのボタンを使う方法

はじめに こんにちは。開発部第1グループの高橋です。 SwiftUIは年々機能が拡充されていますが、まだUIKitと混在することもあると思います。 私は先日UIViewControllerの画面をSwiftUIのアプリに組み込む際、UIViewController側で設定されたnavigationItemを…

Swift CombineでのRunLoop.mainとDispatchQueue.main

こんにちは。開発部第一グループの吉田です。 SwiftのCombineでreceive(on:options:)メソッドはPublisherから要素を受け取るSchedulerを指定するために使用されますが、コードレビューやブログ記事のサンプルでRunLoop.mainとDispatchQueue.mainがScheduler…

定期社内勉強会を1年間主催してみた

こんにちは。プロダクト開発グループの中野です。 2024年3月から2025年3月まで、エンジニア向けの社内勉強会を隔週で主催しました。 勉強会で扱ったトピック、運営者として感じたことなどを共有します。 2024年3月~9月: 個人主催 開催の経緯 勉強会は私の個…

Network Link Conditionerで遅い環境をシミュレートする

こんにちは、開発部第一グループ、iOSエンジニアの西岡です。 今回はネットワーク環境をシミュレートするためのツールをご紹介します。 はじめに Network Link Conditioner とは なぜ低速の通信環境でもテストすべきか iOSで Network Link Conditioner を使…

【Android】久しぶりにAndroidアプリを実装してみた

こんにちは! 開発部第一グループの若松です。 Android/Flutterエンジニアとして働いていますが、最近はFlutterの開発が中心だったので、 研修の一環として久しぶりにAndroidアプリを開発してみました! 電車が好きなので、列車の位置情報をリアルタイムで表…

kotlinでバックグラウンドからフォアグラウンド復帰時に処理をする

こんにちは、開発部第1グループの岡田です。 1つのActivityに対して複数のFragmentを持つプロジェクトでバックグラウンドからフォアグラウンドへ復帰してきた際に処理を行いたい時に利用できる方法を紹介します。 今回は DefaultLifecycleObserver を利用し…

フリーランスエンジニアから正社員になってみた

2024年9月僕は7年間やってきたフリーランスエンジニアを辞め株式会社アイリッジに正社員として入社しました。 3ヶ月間の研修期間も終わり、ブログを執筆する機会をいただきましたので 自分がフリーランスから正社員となった理由、アイリッジを選んだ理由、ア…

SwiftUIのsheetの中身が動的に変えられない(と思ったら変えられた)

こんにちは。開発部第1グループの高橋です。 最近私が担当している案件では、SwiftUIを使って開発しております。私個人としてはSwiftUIを使った大きなプロジェクトは初めてなので、新たな気付きがありました。 今回は、SwiftUIのsheetを使おうとしてハマった…

【Android】Navigation コンポーネントのディープリンク課題と解決策

こんにちは、開発部第1グループの坪倉です。 今回は、Androidの公式ドキュメントで紹介されている Navigation コンポーネントのディープリンクについて、推奨される launchMode が特定の要件に対応できなかった問題と、明示的ディープリンクおよび暗黙的ディ…

当社SDKのiOS18対応のご紹介

こんにちは。プロダクト開発グループの于です。 今回は、当社SDKの iOS18 対応のご紹介になります。 当社では、新しいOSへの対応ポリシーに基づき、OSのベータ版公開時から検証を行い、その後、正式版に対して対応を進めています。 今回の Xcode16.0 および …

SDK を利用して色々なアプリを作成できるようにしてみる

こんにちは、プロダクト開発グループ SDK チームの山田です。 弊社では APPBOX SDK を利用してパッケージアプリというものを作成しております。 パッケージアプリとは、アプリとしては比較的シンプルなものとなりますが APPBOX SDK の機能を活用し、安価且つ…

【知らなきゃヤバい】Xcode16対応 - iOSアプリ開発

1. 概要 SDKサポート内容 Xcode16 動作環境 この記事の検証環境 2. 既存プロジェクトの対応方法 Xcode16.x をダウンロードし、プロジェクトのビルドを行う エラー対応 ライブラリ調査・更新 サードパーティSDK調査・更新 非推奨のAPIなど Privacy Reportの更…

Dateで年末付近の日付が1年ずれてしまう件について

こんにちは。開発部第1グループの涌井です。 今回は、Dateで年末付近の日付が1年ずれてしまう件についてになります。 環境 Xcodeのバージョン : 15.4 症状 年末の表示だけが1年ずれてしまう。とのことで「HAHA!まさか!」とprintでまるっと現在から1年表示…