ENECHANGEのフィード
https://zenn.dev/p/enechange_blog
ENECHANGEグループは、「エネルギー革命」を技術革新により推進し、より良い世界を創出することをミッションとするエネルギーベンチャー企業です。 https://enechange.co.jp/
フィード

Sphinx と GithubAction による開発ドキュメントの継続的デリバリー
ENECHANGEのフィード
やりたいことGithubで開発ドキュメントの変更管理をしたいSphinx(reStructuredText)でドキュメントを書きたいreStructuredText形式で記載したテキストをいい感じにHTMLやPDFにビルドしたいドキュメント内に画面遷移図やシーケンス図を組み込みたいOpenAPI仕様書を組み込みたいSphinxによってビルドしたHTMLをWebサーバにデプロイして共有したいCloudFront + S3GithubPage Sphinxの紹介Sphinx は、主に Python プロジェクト向けに開発されたドキュメント生成...
2ヶ月前

【Flutter】DeepLinkでアプリを往復するには
ENECHANGEのフィード
二つのアプリ間で情報の連携を行うために、DeepLinkを使いたいと思ったのですが、意外とアプリ間を往復する動きが紹介されている記事があまりなかったので実験してみました。 実装のイメージアプリA、アプリBが存在するときに以下のような挙動を想定してますアプリAがアプリBに情報を問い合わせるDeepLinkをコールアプリBが立ち上がり、アプリBの中でアプリAに渡すための情報を準備するアプリBでアプリAに情報を渡すDeepLinkをコールアプリAが立ち上がり、アプリBの情報を受け取るアプリAでアプリBから受け取った情報をもとに処理を行う色々なアプリを調べてみましたが、Am...
2ヶ月前

AWS OpenSeach Serviceで全文検索を試す
ENECHANGEのフィード
OpenSeachで全文検索を試す はじめに以前、AWS OpenSeach Serviceを用いてサイトの検索機能を実装したことがあり、その時のことを思い出しつつ知識の整理のために使い方、当時使った機能についてまとめてみました。 試した環境AWS OpenSeach ServiceAmazon OpenSearch Serverless があるため環境構築が容易以下の内容は、OpenSearch ダッシュボードで実施 検索の前準備コネクションを作成するコネクションに対してインデックスを作成するコネクションに対して検索に用いるデータを投入しインデ...
2ヶ月前

Djangoでテストデータを用意する
ENECHANGEのフィード
概要半年前に転職して、現職でがっつり Python x Django を使用した開発を行っている。これまで趣味で使うことや仕事で隙を見て使用することがあったが、これを期にしっかり学んでいきたい。本記事では、Djangoをでユニットテストを行う上で、テストデータを用意する複数の方法についてそれぞれの特徴を簡単にではあるが整理していきたい。テストデータを用意する3つの方法として以下を取り上げる。モデル.objects.create を使用するフィクスチャ を使用するFactoryBoy を使用する 環境Python : 3.13.0Django : 5.1.6...
3ヶ月前

[Flutter]go_routerで「現在表示されている画面」を確認するためには
ENECHANGEのフィード
Flutterのgo_routerライブラリを使用しているときに、「現在画面上に表示されている画面」のルーティングを確認したくなったので、その実現方法を記録します 調べるきっかけ確認したくなったきっかけを具体例を交えて説明したいと思います。特定のGoRouterを下記のような階層構造で定義したとします。 app_router.dartfinal GoRouter _router = GoRouter( routes: [ GoRoute( path: '/', builder: (context, state) => con...
5ヶ月前

[Flutter]google_maps_flutter2.9.0で追加されたクラスタリング機能を触ってみる
ENECHANGEのフィード
Flutterのgoogle_maps_flutter で、今までライブラリ単独では実装が難しかったクラスタリング機能が追加されたらしいので試してみました!ChangeLog関連PR👇https://github.com/flutter/packages/pull/4319 対象の読者google_maps_flutterで何ができるのか調べている人google_maps_flutter2.9.0から追加されたクラスタリング機能について知りたい方 この記事で書かないことgoogle_maps_flutterの使い方マーカーのクラスタリングとは何かにつ...
5ヶ月前

現場で使えるライブラリアップデートの進め方
ENECHANGEのフィード
ライブラリアップデートってついつい後回しになってしまいますよね。私たちのチームのプロダクトは運用が始まって10年程なのですが、ライブラリアップデートは後回しにされがちで、普段開発していても、「ライブラリが古すぎてある日急にコードが動かなくなる」ということが定期的に起こってました。 ライブラリアップデートはなぜ必要なのか? ライブラリアップデートが必要な理由今の開発チームの状況をなんとかして変えたいという思いがあったので、それを実現するために、ライブラリアップデートがなぜ必要なのかを言語化してみました。開発が止まるリスクを避けるため脆弱性に対応するため迅速に脆弱性に対応...
5ヶ月前

Buildkite で実行される RSpec のカバレッジを SimpleCov で計測してレポートを見る
ENECHANGEのフィード
今回やったことSimpleCov による RSpec カバレッジの計測Buildkite で並列にテストを実行してレポートをまとめる(PR への push の場合)レポートページのリンクを PR にコメント 実装 カバレッジ計測SimpleCov を Gemfile に追加し spec_helper.rb に以下のコードを追加します。SimpleCov.start に 'rails' 引数を渡さないと後々並列テストのレポートをマージする時にうまくいきませんでした。require 'simplecov'SimpleCov.start 'rails' テス...
6ヶ月前

prepend_before_action, before_action, append_before_action の実行順
ENECHANGEのフィード
はじめにRuby on Rails のコントローラーにはアクションが実行される前に特定のメソッドを実行するためのコールバックとして prepend_before_action、before_action、append_before_action が用意されています。クラスを継承した場合などの順番がなかなかまとまっていない気がしたので検証してみました。 実行順 before_actionbefore_action はアクションの実行前に実行されるコールバックで、複数の before_action が設定された場合は設定した順番(before_action :method ...
7ヶ月前

Pythonでプロファイリングする
ENECHANGEのフィード
はじめにとある処理の実行速度を計測したいと思った時に、いつもprint文を仕込むだけだったのですが、ハイパフォーマンスPython 第2版 に載っていた方法が便利だったので下記にまとめます。 環境・M1Mac・OS:Ventura13.5 事前準備sample.py というファイルに下記のsample_funcという関数を定義しました。def sample_func(): # 計測したい処理 1. print文import timefrom sample import sample_funcstart_time = time.time()sa...
1年前

FlutterでAIアプリを作ってみた(google_generative_ai)
ENECHANGEのフィード
Google I/Oを視聴して、遅ればせながらFlutterでAIアプリを作ってみました!https://www.youtube.com/watch?v=ddcZnW1HKUY どうやったかhttps://pub.dev/packages/google_generative_aiを使用しました。API_KEYの取得などの初期設定方法方法は公式チュートリアルを見れば一通り記載されているため割愛します🙏 まずは動かすリポジトリ内部にFlutter用サンプルがあったので使ってみました。https://github.com/google-gemini/generative-a...
1年前

ECSのApplication Auto Scalingまとめ
ENECHANGEのフィード
はじめに本番環境にて、ECSのオートスケール設定が適切でなかったために、スパイクアクセスに耐えられずサイトがダウンするというやらかしをしました。自戒を込めて記事にまとめます。 前提ECS on FargateTerraform Application Auto ScalingECS on Fargateで利用可能なApplication Auto Scalingでは、CloudWatchアラームで定めたメトリクスの閾値で、スケールアウトやスケールインを実行します。 1. ステップスケーリングポリシーステップスケーリングポリシーは、段階的にスケールアクション...
1年前

【自分用メモ】たまにしか使わなくて忘れがちなgitコマンド
ENECHANGEのフィード
はじめにたまにしか使わないgitコマンドは忘れがちなので、自分用メモとして記事にします。 今いるブランチだけを表示したいgit branch --contains ローカルのブランチをまとめて削除したいgit branch | grep 'feature/' | xargs git branch -d'feature/'部分を変えれば、releaseブランチなども同様に消せます。 ブランチの名前を変更したいgit checkout before-branchgit branch -m after-branch 指定のタグ(ブランチ)からブランチを切りたい...
1年前

ECSのCPUとメモリ割当の早見表
ENECHANGEのフィード
TerraformでECSにCPUとメモリを割り当てる際にこの表を見に行って単位換算するのが面倒なので、早見表を作ります。ちなみに、対応していない値を割り当てると、下記のエラーが出ます。Error: ClientException: No Fargate configuration exists for given values. 前提条件ECS FargateLinux プラットフォーム 1.4.0 以降 早見表CPU の値メモリの値256 (.25 vCPU)1024 (1 GB)256 (.25 vCPU)2048 (2 GB)...
1年前

Visibility ウィジェットを深掘りしてみる(Flutter)
ENECHANGEのフィード
はじめにFlutterの Visibility ウィジェットのリファレンスを見てみると、結構使ったことのないプロパティがあったので以下について実際に触りながら調べてみましたいつ使うのか、それぞれの役割Visibilityを使うタイミングhttps://api.flutter.dev/flutter/widgets/Visibility-class.html Visibility とは?公式には以下のように記載されています。Whether to show or hide a child.By default, the visible property cont...
1年前

AWS SAM CIL で PostgreSQL を利用する Lambda ローカル開発環境
ENECHANGEのフィード
はじめにAWS Lambda は手軽に関数を実装、公開できて便利なサービスですが、ちょっと手の込んだことをしようとすると Lambda の特殊な環境の影響で面倒になってしまうことがあったりします。例えば PostgreSQL を使おうとした場合、通常の Lambda 環境には PostgreSQL 用のパッケージが入っていないので Lambda Layer というミドルウェア層が必要になります。今回は AWS SAM CLI を用いて PostgreSQL を利用する関数をローカルで開発するための環境構築を行ったので、その方法を共有します。 今回話すことローカル開発環境...
1年前

定数が原因で Rspec が突然失敗するようになってしまった
ENECHANGEのフィード
はじめに先日既存プロダクトへの機能追加と一緒に新機能に対する Rspec を追加したところ、その時追加したのとは全く関係ない既存機能の Rspec が失敗するようになってしまいました。単純な原因ではあったものの原因特定までにそこそこ時間がかかってしまったので解決までの過程を残しておきます。 原因最初に原因を言うと、タイトルの通り Rspec 内の定数が原因でした。テストが失敗するようになってしまった Rspec では以下のようにグローバルな定数を定義していたのですが、これと同名の定数を使う別のテストが同一プロセス内に存在し、定数内容がバッティングしてしまったようでした。...
1年前

クリーンアーキテクチャにおける Domain層と UseCase層の棲み分けを Bard と壁打ちをして自分なりに理解しました、の忘備録
ENECHANGEのフィード
この記事についてクリーンアーキテクチャを学んだことがなく Domain層と UseCase層の違いがいまいち理解できていない人間が Bard と壁打ちをして自分なりに納得した答えに辿り着いたので、その忘備録です。Bard との壁打ちではなく、クリーンアーキテクチャについての自分なりの整理についての忘備録です。きっかけはこの記事を読んで前提知識が足りていないと感じたためです。 クリーンアーキテクチャとはクリーンアーキテクチャとは、ソフトウェアの設計とアーキテクチャに関する考え方です。クリーンアーキテクチャでは、アプリケーションを以下の 5 つの層に分割します。Dom...
2年前

AWS CLIでのS3操作まとめ
ENECHANGEのフィード
ls 一覧表示 バケットの一覧表示% aws s3 ls2023-09-01 10:00:00 bucket-name12023-09-02 10:00:00 bucket-name2 オブジェクトの一覧表示% aws s3 ls s3://bucket-name1 PRE dir/ 2023-09-03 10:00:00 1111 file.png2022-09-04 10:00:00 2222 file2.png% aws s3 ls s3://bucket-name1/dir/202...
2年前

Lambdaコンテナ関数ではAWS提供ベースイメージを使う
ENECHANGEのフィード
コールドスタートに4~5秒かかるPythonのLambdaコンテナ関数があり、改善策を調べていたら、AWS公式ブログに下記の記述を見つけました。AWS が提供するベースイメージは、Lambda サービスによってプロアクティブにキャッシュされます。つまり、ベースイメージは近くの別のアップストリームキャッシュにあるか、ワーカーインスタンスキャッシュにすでに存在しています。はるかに大きいにもかかわらず、キャッシュされないかもしれないサードパーティのベースイメージと比較するとデプロイ時間が短くなる可能性があります。コンテナイメージとしてパッケージ化された Lambda 関数の最適化 | A...
2年前