0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Huawei Bandの歩数をkencomに自動入力するCLIを作った話

0
Posted at

TR;DR

目的: 歩活イベントのために、Huawei Bandで記録した歩数をkencomに入力したい。
問題:

  • Huaweiヘルスケアとkencomは直接同期できない
  • ヘルスコネクト経由で同期するには有料アプリ(Health Sync)が必要そう
  • Health Syncは、前日までのデータしか同期できない

やったこと:

  • CSV化した歩数データをkencomのWeb画面に自動入力する python スクリプト を作った (Github
  • ついでに、Antigravity の触り心地も確認

デモ

kencom_demo.gif

使う人の想定は、Huawei Band / Huawei Watch を使っていて、kencomに歩数を入れたい人。

ただし、kencomログイン処理までは自動化していない。
kencomの歩数入力画面までは自分で開いておき、そこから先を自動操作する方針にした。

使い方の詳細は Github 参照。


準備 (kencom側の操作)

kencomの歩数入力画面では、歩数の横にある「+」ボタンから入力する (デモ参照) 。

ここでは、次の操作を自動化した。

  1. 「+」ボタンを押す
  2. 日付を入力する
  3. 歩数を入力する
  4. 「登録する」ボタンを押す
  5. 既存データがある場合は、上書き確認にも対応する

歩数データの用意

Huaweiヘルスケアでは、「すべての記録データ」を表示すると、日ごとの歩数を確認できる。

Huawei ヘルス から歩数データ一覧を表示させる
描画.png

今回は、この画面のスクリーンショットをChatGPTに読ませてCSV化した。
必要なのは日付と歩数だけなので、ここはかなり簡単。

入力データはCSVで、以下の形式:

date,count
2026-05-01,12345
2026-05-02,9876
2026-05-03,13579

実装方針

方針は以下。

項目 内容
言語 Python
実行形式 CLI
入力方法 ブラウザ操作
入力 CSV
ログイン 自動化しない
自動化範囲 歩数入力画面以降

ログインや認証まわりを頑張って自動化すると面倒なので、今回は割り切った。
「画面までは人間が開く。単純作業はスクリプトに任せる」という形。


Antigravity で作る

環境

項目 内容
Antigravity 2.0.10
Model Gemini 3.5 Flash
設定 変更なし (Vanilla)

そんなたいした作業ではないし、いつも Codex 使っている感じで、かなりざっくり作業を振る。

最初のプロンプトは以下。

歩数を記録したcsvを入力とし、kencomのwebサイトにアクセスし、歩数を自動で入力するpythonスクリプトを作成したい。
ブラウザ制御で入力するなら、入力する画面まではユーザが遷移させておく想定で良い。コマンド1発送って何とかなるなら、それがベスト。
CLIアプリで良い。

歩数は[steps_may_2026.csv](file;file:///.../steps_may_2026.csv) を参照せよ。

対象URLは添付のvitals.htmlの通り。歩数入力ボタンは、以下のあたり。
<path d="..." fill="currentColor"></path>

[vitals.html](file;file:…/vitals.html)

要するに、以下を渡した。

  • 何を作りたいか (入出力)
  • 入力CSV
  • 対象画面のHTML
  • 押したいボタンのHTML構成

4回のやり取りで、最終的には動くものができた。


Antigravityの感想

Pros

観点 感想
ブラウザ操作 安定していた (予期せぬ画面遷移で落ちる、は無い)
画面待ち 要素が出る前に落ちるようなことは少なかった
技術選定 モダンなPlaywrightを選択していた (Seleniumを使うと思っていた)
実装速度 そこそこ速い
進め方 毎回プランを出してくるので慎重 (そういう設定にしたからか?)

Cons

観点 感想
ゴール到達力 目的だけ伝えてもなかなか完成しない
自己診断 何ができていないかを把握できていない
ログ取得 自分から失敗原因を調べにいかない
コード品質 そのまま保守したくなる品質ではない

以下、Consの深堀。

自己診断

特に気になったのは、失敗したときの調査が弱いこと。

「登録する」ボタンを押せない場面では、こちらから、

buttonタグの中から「登録する」という文字を検索し、
そのエレメントを取得してクリックするように実装せよ。

という実装方法まで指示して、ようやく進んだ。

日付入力も同じで、カレンダーのHTML構造を見せて、どこをクリックすべきかをかなり具体的に伝える必要があった。

Codexだと、自分で環境を作って動けないときでも、別プロジェクトで使った際には、状況把握の工夫が見られた。例えば、ログを出力させるコードを入れて、実行結果を渡すように指示してきたり。


コード品質

最終的に動くコードはできた。
ただし、品質は微妙だった。

  • PEP8違反が多い
  • 622行あるのに関数は8個だけ
  • 長い関数が多い
  • 300行近い if-else の塊もあった

動かすところまではよい。
ただ、長く使うなら人間がリファクタリングした方がよいと思う。

Codexとの違い

今回の用途では、Codexの方が優秀に感じた。

理由は、失敗したときにログを増やしたり、実行結果を見たりして、原因を切り分けようとする動きがあったから。

Antigravityはブラウザ操作自体はうまい。
ただし、できていないことを自分で見つける力は弱い印象だった。


まとめ

Huawei Bandの歩数をkencomに自動入力するCLIを作った。

やったことは単純。

  1. Huaweiヘルスケアの歩数をCSV化する
  2. kencomの歩数入力画面を開く
  3. Python + Playwrightで日付と歩数を入力する
  4. 既存データがあれば上書きする

これで、イベント最終日に1回だけスクリプトを回せば良くなった。

Antigravityについては、ブラウザ操作は器用。
ただし、失敗原因の調査やコード品質はまだ人間の補助が必要。

AGENTS.mdのような作りこみを行ったときに Antigravity がどう化けるかは今のところ不明。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?