サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
inside.luchegroup.com
はじめに こんにちは。GiftmallのEC機能の開発やインフラの運用を担当している藤原(@fujishochan)と申します。本年の1月、Aurora MySQL V1のEOLを受けて、GiftmallのProduction環境の一部で使っていたAurora MySQL V1のDBをAWS RDS Blue/Green Deployment (以下、RDS Blue/Green Deployment)を用いてAurora MySQL V2に移行しました。今回、その移行プロジェクトの内容を紹介します。本記事がRDS Blue/Green Deploymentを使われる方の参考になればと思うと同時に、エンジニアリングが主導して行うプロジェクトの進め方の一つの例としても参考になればとも考えております。 背景 対象システムのDB構成 DB移行対象のシステムの概略を以下の図に示します。 図を説明し
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 スマホアプリで一般的な UI のパターンのひとつに Bottom Navigation (いわゆる下タブ)があります。Android においては、Jetpack ライブラリにある BottomNavigationView を使うことでかんたんに Bottom Navigation の UI を構築できます。Bottom Navigation の UI は画面遷移の実装もセットになっており、Jetpack Navigation と Fragment、BottomNavigationView を組み合わせて画面遷移を実装します。 この記事では、BottomNavigationView と Jetpack Navigation を組み合わせた Fragment ベースの画面遷移の実装にけおる勘所
Kotlinは表現力が豊かな言語で標準ライブラリも充実しており、モダンな機能を多数備えています。現在も活発に開発が進んでいて他の言語から様々な概念を取り入れることも頻繁にあります。そんなKotlinですが、他の言語にあってKotlinにはないものも少なからずあります。今回はEitherを例にあげ、KotlinでEitherを表現する方法について考えてみます。 異なる2つの型のいずれかの型を返り値とする関数を作りたい はじめに、次のような2つの異なる型のいずれかを返す関数を考えてみます。 data class Foo(val name: String) data class Bar(val description: String) fun getSomething() = if (flag) { Foo("foo") } else { Bar("bar") } この getSomething
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 前回の記事ではアプリの UI の進化に合わせた設計の見直しについて解説しました。今回も UI の設計について解説しますが、特に View レイヤーに相当する部分の設計について Groupie や Jetpack Compose といった仕組みを使った画面実装の改善について解説します。 素のままの RecyclerView を使った実装の複雑化 ギフトモールのアプリは様々な種類のコンテンツを一覧形式でスクロールしながら閲覧する UI を持っています。ひとつの List の中で様々な表示を実現するため、RecyclerView の実装も複雑になりがちです。 アプリ開発開始時点ではユーザインタラクションが少なく、ほぼ表示のみに徹することができたため素のままの RecyclerView で十分に実
こんにちは。@KeithYokoma です。今回はこれまでの投稿からは少し話題を変え、AndroidX Fragment ライブラリに関する問題の発見と解決にまつわることを解説しようと思います。 画面の状態を保存する時に TransactionTooLargeException が多発し始める 以前の記事でも紹介しましたが、ギフトモールアプリでは次のような構成で画面を実装しています。この構成で Unidirectional なデータフローを作ることが第一の目的ですが、SavedStateHandle を組み合わせることによって ViewModel の状態の保存と復帰も実現しています。ギフトモールアプリでは ViewState で ViewModel の状態を表現しているため、ViewState の保存と復帰を共通化しています。 // 共通のベースとなるインタフェースと ViewModel
TL;DR 表記揺れがふくまれる検索クエリにマッチしたコンテンツを表示するための手法として、スミス・ウォーターマン法に基づくあいまい検索を実装して検索精度を向上しました。この手法は機械学習システムを使わないためメンテナンスコストが低く、その一方で速度面でも実用的な性能を持ちチューニングしやすいのが特長です。 はじめに こんにちは、ギフトモールで検索エンジンなどを開発している @samayotta です。 私たちギフトモールはプレゼントに特化したECサービスを提供しています。ギフトECにおいても、ユーザのニーズにマッチする商品を探すための検索機能は重要となります。例えば、弊社が運用しているギフトECサービスの一つであるギフトモールは、ユーザが入力する文字列の検索クエリから関連するキーワードを検出し、そのキーワードに紐づいているコンテンツ(商品、記事、etc.)を提示する検索機能を持っています
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 前回の記事では最初の技術選定や設計にあった課題のうち、ViewModel の肥大化についてどのように解決したかを解説しました。今回は次の課題として浮上した Fragment と Activity の連携について解説します。 ギフトモールアプリにおける Fragment と Activity の役割 ギフトモールアプリでは Jetpack Navigation を用いて Fragment ベースの画面遷移を実装しています。このため、様々な画面のレイアウトや UI の振る舞いは Fragment 単位で分離され、Activity は BottomNavigationView のタブに対応する画面を切り替える設定を持つ構成になります。 開発開始当初は Toolbar も Activity に持た
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 前回の記事では新規アプリ開発にあたってひとりチーム体制でどのような技術を選び設計に落とし込んだか、またその体制で開発をスタートしリリースを続けていく中で見えてきた初期の技術選定と設計にある課題について解説しました。 今回はその課題をもとにどのような取り組みを実施したかについて解説します。 初期リリース後の振り返り アプリ開発の初期段階では Android で標準的な技術である Android Jetpack を最大限活用したり、Google が示しているガイドに沿った設計にするなど Android アプリ開発における共通の概念をベースに、これまでの自分自身の経験をかけ合わせた設計を導入しました。これにより開発に必要な知見が得やすくなり、困っても解決のヒントを探しやすい状況になりましたが、初
こんにちは。ギフトモール Engineering Managerをやっている @nori0620 です。 はじめに Giftmallではサーバ監視、アラート送信の仕組みに Datadog を導入しています。 Datadogの各種インテグレーションを利用することでEC2, ECS, RDS, ALBといった様々なインフラリソースの監視に利用しており、何か問題の予兆があった際にはSlackに通知を送ってチームが把握できる体制を作っています。 ただ、システムを運用していく上で、インフラ/サーバだけでなく、アプリケーションに近いレイヤーでも監視を行いたいようなニーズがでてきました。例えば「ユーザがログインに失敗した総回数」をモニタリングしておいて不正なログインの試行などが行われていないかを監視するなどです。 このようなアプリケーションレイヤーにおけるモニタリングも既存のDatadogで監視している
ギフトモールで働くメンバーに「今ギフトモールにいる理由」を聞く入社インタビューシリーズ。 初回は2022年4月に入社したアプリケーションエンジニアの佐藤太一さん(@syarihu)のインタビューをご紹介します。 佐藤太一(@syarihu)/Androidアプリケーションエンジニア/2022年4月入社 新卒でGMOメディア株式会社に入社し、ポイントサイトの保守運用開発に従事。 主にサーバーサイドJavaのアプリ開発を行いつつ、同サイトのAndroidアプリのネイティブ化を推進。 その後、株式会社マネーフォワードでお金の見える化サービスのAndroidアプリの開発に4年半携わる。 2022年4月よりギフトモールに入社。 Androidアプリケーションエンジニア 佐藤太一 Q.現在の仕事内容について教えてください。 ギフトモールのAndroidアプリの保守や機能開発を主として開発業務を行ってい
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 はじめに ギフトモールの Android アプリは開発開始から1年半以上が経過しています。Web サービスとしてのギフトモールと比べると歴史が浅く、今も活発に機能開発を進めています。ユーザーの規模も Web サービスとアプリではまだまだ Web サービスのほうが大きいのですが、ユーザー規模が小さい分アプリの施策では様々なチャレンジを積極的に実施しています。 現在は Android アプリを開発するメンバーが増えチームとして開発を進める体制を整えてきていますが、Android アプリの開発を開始した当初は自分ひとりしか Android アプリ開発者がいませんでした。ひとりでの開発は自分自身の裁量で決断できる部分しかないので自由度は高いように見えますが、一方で別の視点・意見を持つことが難しくな
ギフトモール でEngeering Managerをやっている @nori0620 です。 ギフトモール のアプリケーションは7年以上運用しておりコードの肥大化、認知負荷の増大などの課題が出てきています。対応として機能ごとのサービス分割などの対応も進めていますが、この記事ではあえて「モノリシックな部分の不要なコードを減らしていく取り組み」にフォーカスした話をしてみます! この記事の概要の3行まとめ 不要なコードが増えると開発効率/開発体験にネガティブな影響が出る ギフトモールのコードベースは非常に大きく成長しており、その分不要そうなコードや機能が本当に使われていないことを確認するコストも高いことが課題だと感じた 不要そうなコードが実際に使われていないか検知する仕組みを作って、安全に18万行のコードを消せた 不要なコード・機能の存在は、なにが問題なのか 不要なコードはアプリケーションの挙動に
こんにちは。 ギフトモール の藤原です。 弊社は日本とシンガポールに拠点があり、私は現在シンガポールで勤務しています。 シンガポールにて9月26日から9月29日までPHP Conference Asiaという PHPコミュニティのカンファレンスがあり、参加してきました。 今回のエントリでは主にカンファレンスの様子をご紹介させていただきます。 海外のPHPコミュニティの様子等何かの参考になれば幸いです。 概要 会場の様子 全体的な印象 カンファレンス内容 Opening Keynote - PHP IN 2018 PHP - The journey so far (and what's ahead) Keynote 2 / How PHPUnit works, why it works like that, why I wish it did not work like that, and
みなさん、はじめまして。ギフトモールの@nori0620です。 ギフトモールはギフト領域にフォーカスしたベンチャー企業で、日本とシンガポールに拠点があります。 今まであまり情報を発信できていなかったのですが、今後積極的に情報を発信していく一環として、このブロクを開始しました。 会社の詳細については、↓のサイトをご覧ください! https://careers.lucheholdings.com ※現在はサイトリニューアルしております。 ちなみに上記のサイトはS3,CloudFrontな構成でTerraformで構築 、 CircleCIで自動デプロイといった仕組みで管理しています。 本ブログの最初の記事として、このような構成の組み方を解説する記事にしたいと思います。 最近だと単純な静的サイトであればNetlity のようなホスティングサービスを使う選択肢もあると思いますが、弊社ではTerra
このページを最初にブックマークしてみませんか?
『Giftmall Inside Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く