BToB向けAPIを提供してもらって個人開発をした話

# はじめに(2025/03/01時点)
タイトルは過去形になっていますが、実際は現在も開発中です
プロトタイプ段階は終了し、現状一応形になったため、色々な備忘も兼ねて一旦記事としてアウトプットしようと思った次第です。
※最近では本職が忙しくてあまり個人開発を進められなくなってしまったという背景もありますが...

# 本記事について
現在、個人開発でQiitaを通し、国際航業株式会社様からシミュレーション機能を持つ「エネがえるAPI」をお試し提供していただき、「最適な電力プランをシミュレーションするWebサイト」を作成しています。

API提供のため、色々と対応していただいた @satoru_higuchiさん、この場を借りてお礼申し上げます:pray:

# 誰向けか
- 電力プランのシミレーションに興味がある人
- 個人開発で企業が提供している機能を使ってみたいと思ってる人
    - ※今回のようなケースは稀で参考にならないかもですが、私が取ったアプローチを記載します
- AWS Amplify(React)を使ってみたい人

# 本記事の内容
1. 開発背景
2. システム構成図
3. 現時点(2025/03)の成果物
4. エネがえるAPIについて
※記事に記載することの許可は得てます

# 開発背景
## 前提
### ①電気代の高騰
どんどん電気代が高騰してます。
私の家は「オール電化」のため、割と死活問題です。
「電力会社のプラン」は「スマホの通信プラン」と非常に似ており、プランによって月額料金に差が出ます
電気の質は変わらないので、なるべく「安い電力会社のプラン」を使用したいです
ただし、自分で探すのはめんどくさいので「シミュレーションサイト」を使っています

### ②現状のシミュレーションサイトの限界
現時点(2025/03)で「電力プランシミュレーションサイト」と言うとほぼ「エネチェンジ」の一択かと思います
各電力会社にも「シミュレーション機能」を持つページはあるものの、一般的なニーズ(一括で最適なプランを抽出)を満たす物はないと思っています。
※もしあれば、ぜひ教えてください。私も使ってみたいです。

## 問題
一択しかないエネチェンジの「シミュレーション精度」が低い
※そもそも入力情報が「各月の電力使用量」と「ざっくりの生活スタイル」くらいしかないので、「高精度な結果」を出せという方が無理なんですが…

## 解決策
昔誰かが言ってました
「高精度な電力プランシミュレーションサイトがなければ、作ればいいじゃないの」

## 課題
「中核となる高精度なシミレーション機能」の実装

- 数年前ならいざ知らず、昨今では膨大な数の電力プランが提供されている
- 国やどこかの団体がそのプランや計算式を一元管理している訳でもない

自分でスクレイピングして数百個はあろう「電力プラン(計算式あり)」を作るしかない？
作ったとしても「メンテナンス(「既存プランの変更」や「新プランの追加」など)」という「デカすぎる課題」が常に付きまとう事実...

いや、それはキツすぎる。本職ならまだしも個人開発の範囲でそこまで時間をかけられない

なら「既存のAPI」を探すしかない。でもお金はかけたくない

:::note warn
つまり、「無料」で「高精度なシミレーション機能」を持つ「奇跡のAPI」を見つければ「万事解決」ということですね:sob:
:::

## 奇跡の出会い
ただし、頭の中ではそんな都合の良い物はない、ということはわかっていたので、半ば諦めつつ「奇跡のAPI」を求めてググってました

あったではないですか…
しかもQiitaに

https://qiita.com/satoru_higuchi/items/98298c25f708488b578c

即、コメントで連絡を取りました
記事作成から4年が経過していたため、期限切れになっていないか不安でしたが、翌日に返信してもらい、快諾していただきました
※後日Zoomで簡単な顔合わせも兼ねた自己紹介を軽く行い、APIの使用に必要な情報を発行していただきました

## 閑話休題
いやーやってみるもんだなと思いました
私自身は個人開発で企業と連絡を取る経験は初めてだったので、完全に勢いでしたが良い経験になりました
※言うだけはタダですからね

# システム構成図
クラウド周りは以前の個人開発から使用しているAWSです
開発基盤としては「AWS Amplify(Gen2)」を使用したため、以下がオールインワンで非常に楽でした
※「AWS Amplify(Gen2)」については長くなりそうなので別記事でまとめようと思います
- フロントエンドのホスティング
- バックエンドの構築
- Git連携による継続的デプロイメント

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/4c77adc0-92c3-42b3-a1d4-55b77d6b2a40.png)
※現状「②のユーザー認証機能」は未実装です

## フロントエンド
コスト面からサーバーは建てられないので「SPA」一択でした
フレームワークは「React」を採用しました

### Reactを採用した理由
以前仕事で使ったことのあるVue.jsと迷いましたが、自分の技術の幅を広げたかったので、未経験のReactを選びました

## バックエンド
APIは図の通り「API Gateway」 + 「Lambda(TypeScript)」です

## シーケンス図
詳細はこんな感じです
※@satoru_higuchiさんから掲載許可を得ています
![17404420261128882242556963556279.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/c6eb92ad-299b-4434-a562-7c1c382905e1.png)


# 現時点(2025/02)の成果物
## 前提
APIは「お試し提供」していただいてる都合で一般公開はしていません。
そのため、記事を読んでくださった方に使ってもらうことはできず、スクショ画像だけの共有になります。
※レスポンシブ対応していますが、一旦スマホサイズのみ記事に載せます

### TOPページ
ここでシミュレーションに必要な「電力会社の契約情報」と「電力使用量」を入力します
※郵便番号を7桁入力すると「使用可能な電力会社とプラン」を取得し、選択可能になります
<img width="380" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/1ed62be4-014e-40d5-8057-3bae936087f9.png">

### シミュレーション結果ページ
以下のように「年間料金」が安い順にランキングされて表示されます
※「今契約しているプラン」との比較ができるように改善中です
<img width="380" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/7e06d6b6-85c1-4998-93b5-90acd3c79a2f.png">

「詳細を表示」のトグルをタップすると「料金の折れ線グラフ」と「料金内訳」が表示されます
※グラフも見づらいので改善を検討中です
<img width="380" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/443bfb43-d277-4502-9a9d-0370f9b930fa.png">

# エネがえるAPIについて
## 背景
そもそも今回、個人開発でBToB向けのAPIが使えるようになった要因ですが、端的に言うと「需要と供給が一致した」ということになります。

APIを提供する企業側としては以下の2点からお試し提供をしている、とのことでした。
※まだ募集しているとのことだったので、自分でも使ってみたいと思った方はぜひコンタクトを取ってください

### ①電力・エネルギー系のAPI提供を発展させたい
> まだまだ日本国内の電力・エネルギー業界ではエンジニアの方が気軽に試せたり、オープンに自社サービスに組み込んで遊んでみたりできるAPIが少ないです。

### ②新しいサービス作り
> 今までは業界に閉じて有償APIとして提供してきましたが、もっとオープンにエンジニアの方に知っていただき、無償で試していただき、なにか一緒に面白いサービス作れないかな。そんなきっかけで記事を書いてみました。


## 良いところ
### 直感的でわかりやすい
エンドポイントやリクエスト情報が直感的でわかりやすいです。
API仕様書もAPI Blueprintで開発者向けに作られていたため、助かりました。

## 補足
### 容量拠出金の対応
2024/04から「容量拠出金」という項目が追加されましたが、2024/12時点では未対応とのことでした。
この項目は「それなりの金額」を取られるので、これに対応しているとシミュレーション精度が上がります。

#### 容量拠出金の例
私は現在「Japan電力」の「しごとプランS」を使用しています(家はオール電化です)
2025/01の請求は以下の通りで容量拠出金は1848円でした。
毎月金額は異なりますが、だいたい1800円前後でしたので、単純計算すると年間で「21600円」で「それなりの金額」となります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569056/f3dc0821-fc86-42d8-9374-2645ec6398e2.png)

#### 未対応の背景
「容量拠出金」の詳細は割愛しますが、仕様としては「電力会社ごとに異なる計算式で算出する項目」です。
まぁめんどくさいですよね。

エンジニアの方も頭を悩まされている様子でした:sweat:

# おわりに
記事を読んでいただきありがとうございました！
以下については2025/04中に対応しようと思っています
- AWS Amplify(Gen2)の使用感
- サイトのアップデート