• iPhone8のバッテリーを新品に交換してみた

    iPhone8のバッテリーを新品に交換してみた

    今日は、大阪の心斎橋のOPA内にある iPhone修理救急便という店舗に行ってみた。

    まだまだiPhone8を現役で使いたいのだけど、バッテリーが劣化しているからか、なかなか100%にならなくなったり、フル充電してもすぐに3%刻みとかでバッテリーが減っていくので、非常に不便で困っていた。

    モバイルバッテリーを使って、何回も充電する事で耐えていたが、充電中にバッテリー残量が減っていく時もあって、モバイルバッテリー無しでの外出が難しかったり、色々とストレスだった。

    そこで、交換用のバッテリーをAmazonで注文して、自分でバッテリー交換を行うか迷ったのだが、過去にiPhoneを分解して壊してしまった経験が合ったので、プロの専門家にやってもらう方が良いと判断した。

    非常に驚いたのは、Amazonで新品のバッテリーは2000円しないくらいで購入できるのだが、iPhone修理救急便に依頼した場合は料金が2000円という格安で、即決で依頼する事にしたくらいです。

    iPhoneのモデルが古いほど、iPhone修理救急便の料金は安くなり、モデルが新しくなるほどに料金が高くなるようになっている。

    朝方にホームページから11時来店の当日予約を入れて、開店時間である11時より少し手前の10時半頃に予約を承ったとの旨のメールが届いた。

    iPhone修理救急便の店舗は心斎橋OPAの地下2階にあるのだが、下に降りるためのエスカレーターをなかなか見つけられずに少し道に迷っていたものの、地下2階に無事辿り着くことが出来た。

    そうやって、iPhone修理救急便にも辿り着く事が出来たのだが、遅刻をして予約時刻より20分遅い時間、11時20分くらいに到着する事になったので、店員さんには軽く謝罪をした。

    通路に対して壁が無いスタイルの店舗だったので、当然出入りするためのドア等は備え付けられておらず、狭いスペースを上手く活用して、椅子やデスクを備え付けているといった感じだった。

    店員さんにiPhone8を渡すと、バッテリー交換にあたって起こりうるトラブルやその他注意事項などをまとめた紙を渡されて、事前に全ての項目に同意するという風に記載するように言われたので、各項目にチェックを入れているうちにiPhone8は奥のスペースに持っていき、店員さんは慣れた手つきでiPhoneを分解して、新たな新品のバッテリーと入れ替え始めた。

    大体、20分くらい掛かると聞いていたのだが、予定よりも明らかに早く作業が終了し、実際の作業時間は10分程度だったかもしれない。

    店員さんは何でもハキハキと話してくれるところが印象的だった。

    ほとんど利益にならないような金額でバッテリーを交換してもらう事が出来たので、少し気まずい感じもあったが、また機会があればよろしくお願いしますと伝えられ、私も心から感謝をしてお店を後にした。

    バッテリーを交換した後の挙動については、不具合のようなものは一切なく、順調に動いている。

    バッテリーが新品になった事で、バッテリーの減りも明らかに遅くなって、劣化したバッテリーを使っていた時より、明らかに長時間使えるようになった。

    いつもは30分もすれば、バッテリーがほとんど残っていない状態になっていたのだが、バッテリー交換後は1時間以上触っていても、バッテリー残量は50%以上残ってました。

    ちなみにバッテリー交換前の最大容量は63%程度の数値になっていたのですが、現在は100%でさすが新しいバッテリーと褒めたいところ。

    iPhone修理救急便の心斎橋OPA店のサイトには、下記URLからアクセスできます。

    https://iphone-qq.com/shop/osakashinsaibashi/

    そろそろ新しいiPhoneに乗り換えないといけないのかなと思っていたところでしたが、まだまだ現役で使えそうな雰囲気を醸し出していて、テンションが上がりました。

    あと2年くらい使えるといいな。

    iPhone修理救急便、ありがとう!!

  • 【Laravel】General error: 1 no such column: ${table_name}.

    【Laravel】General error: 1 no such column: ${table_name}.

    とあるLaravel 11のプロジェクトで、下記のエラーが発生した。

    Next Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1 no such column: email_activation_tokens. (Connection: sqlite, SQL: select * from "email_activation_tokens" where "email_activation_tokens"."" is null limit 1) in /home/laravel/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:822

    このエラーは、Laravelのよくあるようなメール送信機能を実装していて、メール送信を非同期で行うために処理をジョブ化して、メール送信をキュー処理できるようにしていて、それをPHPUnit経由で実行した際に上記のエラーが発生したという次第である。

    エラーの内容としては、存在しないカラムを参照している事が問題との事だが、自分で書いたコードで該当するカラムを参照しようとする箇所は無いので、Laravel側のコードのどこかで何かが起こっているのだろうという感じ。

    関係している処理を一通り調べたところ、メール送信のためのジョブにEloquentのインスタンスを保持させようとすると、このエラーが発生している事が分かった。

    General error: 1 no such column: email_activation_tokens.

    というエラーであるが、email_activation_tokensというのはテーブル名であり、カラムとして参照とするコードは一切ないので、Laravel側のどこかで問題が発生しているようだ。

    ちなみにモデルのフィールドを下記のようにすると、エラーが発生するようになって、下記のフィールドを消してしまえば正常に動くのだが、テーブルの設計の関係で下記のようにする必要がある。

    protected $primaryKey = null;
    
    public $incrementing = false;
    
    const UPDATED_AT = null;

    そのため、ジョブにEloquentのインスタンスを渡すのではなく、toArrayメソッドでモデルの情報を配列にしてみると、エラーは発生しなくなった。