エキサイト株式会社の@mthiroshiです。 FlutterKaigi 2023に参加してきましたので、その内容をレポートします。 FlutterKaigi 2023の概要 聴講したセッション 基調講演「Flutter's 8 years journey」 「Flutter アプリにおけるテスト戦略の見直しと自動テス…
エキサイト株式会社の@mthiroshiです。 Flutterのアプリ内課金の実装には、 in_app_purchase パッケージを使います。 Androidで実装する際に、少し躓いた問題があったのでご紹介します。 動作環境は、下記のpubspec.ymlの内容です。 dependencies: in_app_pu…
エキサイト株式会社の@mthiroshiです。 Dockerコンテナのログ出力設定について、調べた内容を紹介します。 Dockerコンテナのログ出力設定 Dockerコンテナのログについて、公式ドキュメントに詳細が記載されてあります。 docs.docker.jp docker logsコマンド…
エキサイト株式会社の@mthiroshiです。 Terraformを運用していると、ディレクトリ構造を整理したいケースがあります。 コード上での変更は容易ですが、それだけではStateファイル(tfstate)に差分が生まれてしまい、予期しないリソースの削除を招く危険があり…
エキサイト株式会社の@mthiroshiです。 FlutterでRawAutocompleteを使って、テキストの入力に応じて検索候補のワードを表示する、検索フォームを実装してみました。検索候補ワードは、APIから取得します。 下記が公式ドキュメントです。公式ドキュメントには…
エキサイト株式会社の武藤です。 GA3(ユニバーサルアナリティクス、UA)の終了が2023年7月1日となっており、いよいよ期日が迫ってきました。 引き続きGAを利用するためには、GA4への変更が必要になります。 私が担当しているサービスでは、バッチ処理をPHPで…
エキサイトの武藤です。 FlutterにおけるWidgetのフェードイン・アウトアニメーションUIについて簡単に紹介します。 Visibilityの表示・非表示の場合 AnimatedSwitcherを使ったフェードイン・アウトのアニメーションUI FadeTransitionを使ったフェードイン・…
エキサイト株式会社の武藤です。 2023年2月17日(金)にエキサイトで第二回TechConが開催されました。 tech.excite.co.jp 私は「AWS移行を通して得られた知見と教訓」というタイトルで発表しました。 speakerdeck.com 発表の概要 2022年6月に E・レシピのAWS…
エキサイト株式会社の武藤です。 FlutterでViewを構築するときに、Text Widgetのサイズが欲しいときがあります。今回は、Text WidgetのWidth、Heightの取得について紹介します。 また、求めたサイズを使ってアニメーションをつけたUIのサンプルを紹介します…
エキサイトの武藤です。 Flutterで多言語対応をする際、基本的にはWidget内でBuildContextからAppLocalizationsを呼び出して利用します。 しかし、複雑なロジックが必要な表示テキストの場合、Viewでそのロジックを書いてしまうとViewのコードが肥大化してし…
エキサイトの武藤です。 IntelliJ でシェルスクリプトを開くと、構文に警告を見かけることがあります。 IntelliJのシェルスクリプトの構文警告 SC2006 のリンクは下記のページに遷移します。 github.com ShellCheckは、シェルスクリプトの静的解析ツールです…
エキサイトの武藤です。 FlutterのRippleエフェクトの挙動について紹介します。 Rippleの種類 ListViewのRipple表示 ListTile, 独自レイアウトの場合 Imageの上にTextを重ねたレイアウト まとめ 採用情報 参考記事 Rippleの種類 Button Widgetを例にRippleを…
エキサイトの武藤です。 エキサイトホールディングス Advent Calendar 2022の14日目の記事です。 https://qiita.com/advent-calendar/2022/excite-hd 担当しているサービスのランキング機能のリビルドを行いました。 実現するにあたって、考慮したところを紹…
エキサイトの武藤です。 Flutter 開発を通して、freezed でのJSONの扱いに慣れてきました。 今回は freezed, json_annotation パッケージの基本的な使い方やTIPSをまとめていきます。 @JsonKey アノテーション name プロパティー defalutValue プロパティー …
エキサイトの武藤です。 GitHubのプルリクエスト(PR)のマージ機能の一つである Squash and mergeの使い方と注意点について紹介します。 マージの種類 PRのマージには3つの種類があります。 Create a merge commit Squash and merge Rebase and merge デフ…
エキサイトの武藤です。 オンプレ環境のサーバをAWS EC2へ移行する際に、サーバ時刻の同期について注意点があります。 サーバ時刻を扱うアプリケーション アプリケーションによっては、サーバ時刻をアプリケーションの実装に利用するケースがあります。 例え…
エキサイトの武藤です。 Firebaseのロール設定について、細かく付与する手順を説明します。 Firebaseから基本的なロール設定 歯車のメニューアイコンから「ユーザと権限」ページを開きます。 Firebaseの「ユーザと権限」ページ ユーザに対して、オーナーや閲…
エキサイト株式会社の武藤です。 Flutterを使ったアプリ開発のプロジェクトにジョインしました。 Dartを触ってみて、コンストラクタにいくつか種類があることがわかったので、整理してみたいと思います。 コンストラクタ デフォルトコンストラクタ 名前付き…
エキサイト株式会社の武藤です。 以前VPCのサイジングに失敗し、VPCを再構築したお話を紹介しました。 VPC再構築判断の結果、既にAWSで本番稼働していたDBも移行することになりました。 tech.excite.co.jp DBをAWSに移行した際に、DMSを使った事例も以前に紹…
エキサイト株式会社の武藤です。 AWSのVPCのサイジングについて失敗談がありますので、それについて説明します。 オンプレからAWSへシステム移行 internet-facing ALBのIPに関する仕様 VPCの再構築 終わりに 参考記事 オンプレからAWSへシステム移行 担当サ…
エキサイト株式会社の武藤です。 オンプレにあるサーバをAWSへ移行する際に、AWS Application Migration Service (AWS MGN)を使いました。 その際に、オンプレ特有のサーバの設定もそのまま引き継がれるため、修正すべき箇所がいくつか出てきます。 EC2に…
エキサイト株式会社の武藤です。 エキサイトではAWSの構成管理にTerraformを採用しているサービスがいくつかあります。 Terraformのディレクトリ構造について検索してみると、様々なパターンが出てきます。 どのパターンが最適なのか、選択に迷ってしまう方…
エキサイト株式会社の武藤です。 エキサイトホールディングス Advent Calendar 2021の18日目の記事です。 qiita.com 今回は、Spring Boot プロジェクトでSolrJを使ってSolr検索を実装する手順について説明します。 SolrJ SolrのJava用のAPIです。 solr.apach…
エキサイト株式会社の武藤です。 現在は担当サービスであるE・レシピのリビルドを進めており、技術負債の解消も行ってきました。 レシピデータを管理するテーブルには、現在の仕様で使われていないカラムが50個ほどあり、それらを削除しました。 今まで、仕…
エキサイト株式会社の武藤です。 オンプレのDBをAWSのRDSに移行する際に、AWSのDatabase Migration Service (DMS) を利用しました。 サービスの特性上読み込みが多く、書き込みが少なかったので、無停止での切り替えができました。 その手順について説明しま…
エキサイト株式会社の武藤です。 PHP の可変関数 PHP には可変関数という機能があります。 www.php.net 関数名を変数にすることで、動的に呼び出したい関数を変更できます。 $functionName(); 使い方によっては有用な機能かもしれません。 しかし、intelliJ …
エキサイト株式会社の武藤です。 オンプレにあるDBを稼働中のRDSに統合する際に、mysqlslapを使った負荷エミュレーションをしたので、使い方を紹介します。 mysqlslapとは mysqlslapとは、負荷エミュレーションをするコマンドです。クライアントの接続数やク…
エキサイト株式会社メディア事業部エンジニアの武藤です。 Android の ConstraintLayout を使ってレイアウトを実装する際に、レンダリングパフォーマンスに問題があるケースがあったので紹介します。 問題が起きたケース 開発が進んでレイアウトが複雑になっ…