ジョナサンの「十年」ブログ

日本生活10年目のきっかけ、前向きに開発日記、日常生活など記録する

【開発】ライブラリ検証:Lottie Animation API

多分自分だけ使ったことないので、プロジェクトのために先に体験してみました。

Android 
  • 必要時間:10分以内
  • 手順:
  1. ライブラリパス設定
  2. コードをコピペする:下記の参考URLから
  3. アセットファイル配置(res/rawの中、Jsonフォーマット):適当に用意し、ファイル名は例と合わせるだけ
f:id:psycohk:20230607004802p:image
iOS
  • 必要時間:20分以内
  • 手順:
  1. ライブラリ導入(自分はSwift UI Package)
  2. アセットファイル配置(いったんルートで配置する、Jsonフォーマット):適当に用意し、ファイル名は例と合わせるだけ
  3. 下記の参考URLから、クラスを用意する(Androidよりもう少しコードが必要)

Lottie iOS
まとめ

信じないぐらいのスピードで導入しました。

参考URL

【雑談】初めてのオンライン受診体験

※ はじめての体験で記録してみよう気持ちで書きます。

経緯

火曜日出社した時、少しずつ熱の感覚が増えてて、体温計に計ると、やはり微熱が始まりました。

翌日は特に違和感がないけど、どんどん喉の痛みが増えて、夜中が38°Cまで上がりました。

結果、木曜日オンライン診察を試してみました。

原因
  • 近所の病院の定休
  • この時勢、熱が出た病気になったら、病院に行くと迷惑をかけそうと感じがある
調査

自分知ってる範囲で、下記の二つのサービスがあります。

  • ファストドクター(夕方から診察が入れるだけ)
  • LINE ドクター

選ぶ必要もないから、直に予約してみます。

基本簡単なプロフィールを登録し、保険証の両面の写真を撮ると、病気種類(今回風邪を選びました)、時間を選んだ後で病状の説明を書くと、自動に病院と薬局をマッチしました。

時間になると、当たり前でLINEから連絡が来ます。返信で確認するとできないことが少し不安ですが、時間になると電話がくることが安心しました。

この診察は必ずお互いの顔を確認が必要です。すこく丁寧な確認の上、「最近インフルエンザが厳しいので、治らないなら素早く病院に行きなさい」と忠告しました。

その後薬の説明は少し時間がかかってしまったけど、基本一般のサービスを差別がなかったです。

もう少し料金が払うと、即日薬が届けそうです。自分は一般の速さを選んでも、翌日の朝がちゃんと届けました(台風の日ご苦労様でした)。

もう一点評価したいところは、たまに簡単に抗生物質が出る先生がいます。今回は普通の薬だけあります。正直、自分が抗生物質の一科はアレルギーがありますので、これは初診としては安心できます。

結局、土曜日の朝はようやく熱が下がりました。痛みは少し残ってるけど、十分緩和しました。

まとめ
  • 深夜の急病と他の緊急性がない病気なら、オンライン診察との選択は悪くないと思います。
  • 日中緊急性がある病気なら、素早く薬が取れるため、やはり病気に行く方がいいです。

【雑談】個人トレーナー付きジムの体験

最近運動不足を自覚し、肩こりなどどんどん酷くなったから始めようと思います。ちょうど同僚のおすすめは「やはりお金が払わないと続けられない」から、やや高めの場所を選びました。

50分の体験

最初は自分の弱さを自覚がありますので、本当に疑いながら店に入ります。トレーナーさんがちょうど迎えの準備が出てきますので、早速着替えからはじめました。

そちらは服、靴なども無料で貸し出せるから、本当に便利です。

聞き出し

最初の時間は当たり前の身体測定と状況確認です。自分なりの目標は、単純に以前のレベルに回復し、それから一般人レベルになれることは十分うれしいです。

結果はやはり足以外の筋肉は弱いです。最初は肩こり、背中の痛みを改善するため、背中、肩とお腹をピンポイントしてリラックス運動からはじめました。

久しぶりに汗が出せる動きをやって、すごく的中な感じがあります。

契約承諾までの流れ

練習終わって、着替えが終わった後、もう一回ちゃんと値段、設備とか確認の上、確実に契約をサインしました。少し高いですけど、他には他社のジムと大差がないし、シャワールームもちゃんとお湯が出れることだけで十分うれしいです。

今後2週一回の目標として、ちゃんと教えることを覚えてるように頑張ります。

【管理】チームとは

チームってなんですか?
  • 複数の人が協力し合って目標を達成するために結成されたグループのことを指します。
  • メンバーが互いに協力し合い、持ち場や役割を分担することで、より効果的に目標を達成することができます。
信頼関係
信頼関係がないチーム
  • メンバー間のコミュニケーションが円滑でなく、情報共有がうまくいかず、意見や意思決定の不一致が生じることがあります。
  • メンバー間の不信感や敵意が高まり、チームワークが損なわれることがあります。
チームビルディング
  • メンバーが互いに協力し、より効果的に目標を達成するために、結束力や信頼関係を高めることを目的とした活動のことを指します。
  • 目的は、コミュニケーションを促進し、共通の目標に向けた協力体制を構築することです。
  • 具体的な方法は、チームワークを強化するためのゲームやアクティビティ、グループディスカッション、コミュニケーショントレーニング、チームビルディングセミナーなどがあります。
  • それによって、チームメンバーは相互理解を深め、信頼関係を築き、より効果的に協力することができるようになります。
リーダーとは
  • チームの方向性を示し、メンバー間のコミュニケーションを促進し、チームメンバーがより効果的に協力するための環境を整備することが求められます。

  • 具体的には、メンバーの声を聞き、意見を尊重し、問題を共有することで、不信感や抵抗感を解消するための解決策を模索することができます。

  • また、チームビルディングの活動を通じて、メンバーの相互理解を深め、信頼関係を築くことができます。

  • さらに、メンバーが目標に向かって協力するために必要なリソースを提供することもできます。

  • ただし、すべてを解決できるわけではありません。問題解決には、チーム全体の協力が不可欠であり、リーダー自身も適切なサポートを受けながら、問題解決に取り組むことが求められます。

その後はなんでしょうか?
  • プロジェクトチームのプロジェクト管理だと思います。
  • 工数、作業の細分化、可視化により、より上の人にプレゼンできます。開発コストの計算だけじゃなく、個人の能力を理解できるし、成長につながる大事な過程だと思います。
参考

 

【断食トラッカー】第二段階

※ 現在別の用事を頑張っているから、先に計画を立てて、予定6月以降展開します。

テーマ
  • カレンダーの見た目の選定
  • 既存のプロジェクトはいつでも他のプロジェクトのベースとして流用できるように調整
カレンダーの考え方
  • 目的:毎日の記録をわかりました方式で出せる
  • カレンダーの上は情報のまとめ、下部は蓄積されたデータを表示させる
  • 多分見た目きれいなライブラリを導入すべき
ライブラリ選定基準
  • 使用者数(KMMの場合、新規技術なので、他のライブラリと比べてみるだけで十分、一般的には1,000人以上が希望)
  • 最後更新時間(逆に完成度でみて、やや一般な技術なら安定したら更新しなくてもいい)
  • 開発元の出身(一部の地域で、国の情報戦に協力するため、悪質なコードを入れ込む恐れがある)
  • もちろん、できればネイティブライブラリであればそちらで使うほうがいいですが、それはないなら他のライブラリも完全拒否しないでいいと思います。
参考先

【技術】Jetpack Compose vs Swift UI の移行

ここまでもこれからも差し替える方が多いと思います。その過程について雑に比べてみます。

※ 個人的に把握できる範囲だけです。間違ったら指摘をお願いいたします。

SwiftからSwiftUI
  • 最低OSバージョンが13まで上がる必要(一個前古い端末使用不可となる)
  • Storyboardを廃止
  • React(State、ObservableObject)の考え方に変えるべきです。一般的にはCombineと併用ですが、いわゆるいっぱい差し替えるものがある
  • すべて勢い変更しなくてもいいですが、変換体が必要
  • 同じクラスで二つの技術を同時に存在することはありえない
XML(Binding)からJetpack Compose
  • そこまで古くないならあんまり影響がない
  • XML、DataBindingを廃止
  • コルーチンなどと相性がいいですが、本来ライブデータなら変換できるので、そのままでもオッケー
  • 勢い変更しなくてもいい同時に、完全に混ざって併用しても問題ない
  • Jetpack未対応な部分はAndroidView経由で本来のままでも大丈夫

参考

【断食トラッカー】共通で同じ機能を実現できるの難関

今回のテーマは第一段階の成功までの難題です。

目標

タイマーとデータストアを使って、iOSAndroidとも動けるプログラム

技術

  • Jetpack Compose + Coroutine + Flow
  • Google Datastore (新しいライブラリ:1.1.0-alpha04)
  • 共通の時間ライブラリ(kotlinx.datetime)

Android

  • 大体一週間ぐらい動ける

難関

  • ライブラリの配置:今回の考えはUseCaseまで共通部を持って、ViewModelはそれぞれを実装する(共通viewModelのライブラリはGoogle管理ではない懸念があります)→他のプロジェクトはViewModelまで共通にするケースが多いみたいです。
  • 初のFlowで学習時間が必要です。(既存のプロジェクトはLiveData + 強引にコールーチン変換)
  • UIStateの本格的採用はすこく楽しいかったですが、最適化が必要です。
  • 時間のフォーマットは本来JavaのTimeFormatterを利用すべきですが、原因未究明の前提で、中学時代の計算レベルで処理しました。(意外に面白いですよ)

iOS

  • 曖昧な時期が長いですが、同じ機能レベルまでは大体一週間

難関

  • 初のSwiftUIですが、慣れたUI部品なので、軽めに使えるアイコンを調査すると、Androidの仮画面より納得できる(Figmaと似てる)
  • Android共有部のライブラリ配置が影響大きいでした。(それぞれのUseCaseでも共通部でKoin導入しないといけない)
  • コンセプトの共通変換(Flow vs Publish)
    →ここだけ2−3日かかりました。
    →いろいろな情報ですが、実際iOS側で変換クラスだけで解決
  • 2−3年だけほとんど触ってないだけで、新しい部分は多すぎて、新しい言語として扱ってもいいと思います。
  • 実機で試してみたいですが、いろいろエラーがあって…一時的には無料でもリリース前に実機で検証できますが、現在多分課金が必要そうですね。(ゆくゆく調べてみます)

参考文献