ラベル アプリ の投稿を表示しています。 すべての投稿を表示
ラベル アプリ の投稿を表示しています。 すべての投稿を表示

2023年10月15日日曜日

入社から現在まで!

 さて、2023年7月にモバイルアプリエンジニアに転職いたしましたが、はや3ヶ月・・・あっという間ですね

入社から現在までの経過をざっくり記しておきたいと思います!

7月

  • 入社日は、手続きやPCセッティング
  • 翌日より、週3日出社、週2リモートでアプリ開発研修開始
  • 研修では、仕様書に基づき天気予報を表示するアプリを作成し、テストケース作成、結合テストまで実施(Swift及びSwiftUIの2パターン作成)
  • 入社前から研修させて頂いていたので、7月はほぼSwiftUIのみ
  • 先輩にレビューしてもらいつつ作成
  • 月末、案件がSwiftからflutterになりそうで、この案件にするか、別にするか確認された!しかしこれはflutterも学べると良いチャンスだ!と思い、承諾!
    頑張ります!
8月
  • 半人月(10日程度/月)で初めての案件に参画
  • SwiftUIが使用されていた
  • アプリは大部分は既にできており、不具合修正や簡単な機能追加に携わることができた
  • このアプリをflutterにするとのことで、残り半人月でflutterの学習を行った
    なお、この時点でflutterは全くの未経験でした
  • flutterでよく使われるRiverpodなどの状態管理を扱えるようになるべく、まるばつゲームアプリを作成!完成したのは9月半ばで、学び初めから約1ヶ月で作りました!
9月
  • 今月から1人月に!
  • そして出社が週1日に!
  • 初めてApple Watchアプリにも携わり、iPhone側との通信の仕組みや、ワークアウト周りについて少し学ぶことができた
  • 中旬までSwiftUIの方の機能追加や不具合修正、携わった部分のテストケース作成
  • その後、flutter版のコンポーネント作成から開始
  • 2週間ごとのスプリント(?)で1機能実装していくことに!
10月
  • 今月からフルリモートに!!
  • 1回目のスプリント終了!デザインやバックエンド側も未完成、アプリ側は仮デザインでUIのみ完了・・・?割と急がないと大変だ!
  • 2回目のスプリント開始!またも仮デザインでの実装、1回目のスプリントも継続で、デザイン変更点が多く、修正に時間が・・・。
  • API設計(大まかな叩き台?)作成を依頼され、APIについて少し学んだ!
  • バックエンドの人が副業のため、リーダーがバックエンドも兼ねる・・・かも?
と、ざっくりとした現在までの経過です!

もっと書くことあったと思うけど・・・こまめに書かないと、書ききれませんね・・・

こんな感じで、iOSエンジニアも目指す!からの、flutterを学ぶ機会を頂けたので、なんでもできるモバイルアプリエンジニア目指したいですね!

2023年6月2日金曜日

AnyObjectとは

  •  Swiftの型システムにおける、プロトコルの一つ。
  • 参照型であるクラスのインスタンスを表すための型。
    • 参照型(class):参照を介して共有
    • 値型(struct, enum):値そのものをコピーして扱う。
  • クラスのインスタンスをAnyObject型の変数やプロパティに代入できる。
  • どのクラスのインスタンスでも受け入れられる。
  • 値型には使用できない。
  • AnyObject型の変数やプロパティには任意のクラスのインスタンスを代入できるが、メソッドの呼び出しなど、クラスのインスタンス特有の操作はできない。

weak 修飾子について

プロパティにweak修飾子をつける理由
  • 循環参照(retain cycle)を避けるため
    • 循環参照とは?
      • メモリリークの一種でオブジェクト間の相互参照によって発生。
        • メモリリーク(Memory Leak)とは?
          • プログラムやアプリにおけるメモリの不適切な使用状態。
          • 不要なメモリの確保や解放漏れにより、メモリ使用量が増加し続ける状態。
      • 2つ以上のオブジェクトがお互いに強参照(strong reference)を持ち、相互に解放されなくなる状態を指す。
        • 強参照とは?
          • オブジェクトが他のオブジェクトを所有することを意味する。
          • 参照カウントが増加し、オブジェクトが解放されない限り、メモリ上に保持され続ける。
          • 強参照がデフォルト。
      • 循環参照が発生すると?
        • オブジェクトが互いに解放されなくなり、メモリの解放が行われない。
        • アプリのメモリ使用量が増加し続け、最終的にメモリリークが発生。
        • メモリリークが継続すると?
          • アプリのパフォーマンス低下やクラッシュの原因となる。
      • 循環参照は相互に強参照を持つ場合に発生する。
    • 弱参照(weak reference)とは?
      • 参照カウントを増加させず、参照先オブジェクトが解放されると、自動的にnilになり、循環参照を解消するのに役立つ。

2023年1月8日日曜日

2個目の個人開発アプリ、リリースしました!

この年末年始で個人開発アプリ、2個目を無事にリリースしました!

開発環境

  • Xcode 14.2
  • SwiftUI
  • MacBook Air M1 メモリ8G

開発期間

 約6日間、合計40時間程度
 (リジェクト対応含む)

アプリコンセプト

 アプリ起動後簡単に、一定時間毎に通知するタイマーを設定できる

アプリ開発背

 つい最近、こたつを朝からつけっぱなしで外出して夕方に気がつき、妻に叱られたので「スマホのアラーム機能をわざわざ設定するのも面倒だよなぁ・・・」と思い、「じゃあアプリ起動するだけで通知できるようなアプリを作ればいいじゃん!」ってことで開発しました!
他の学習で行き詰まっており、息抜きも兼ねてです笑

想定するユーザー

 こたつやストーブを消し忘れやすい人たち(私)

実装した機能

  • UserNotificationを用いた通知機能(アプリ起動中でもバックグラウンドでも通知)
  • UserDefaulsを用いた内部データ保存機能
  • Timer.scheduledTimerを用いたカウントダウン機能
  • NavigationStackを用いた画面遷移(かなり特殊に感じました・・・)
  • 通知が許可されていない場合に表示する、アラート機能(設定画面への遷移含む)
  • GoogleAdmobを用いたインタースティシャル(全画面)広告表示機能

アプリ画像





アプリURL

 もしよかったら、ダウンロードしてみてください!

このアプリの今後について

 特にありませんが、機能改修希望や不具合ありましたら、ご連絡いただければ対応考てます!

flutterについて、学んだことなど

Swiftについて学んできたため、つい比較してしまいがちです。 SwiftUIと比較して、書いてみました。 似ているようで似ていない flutterには、SwiftUIにおける「View」という概念が、「Widget」と呼ばれるものになる SwiftUIのようにWidgetの中に...