2022年9月29日木曜日

作成済(レイアウト済み)アプリへのScrollView追加実装について

 アプリ配信後、現在の職場の方数名にアプリをダウンロードして、使ってもらったところ、とあるおじ様のiPhone8にて、レイアウト崩れを確認。

前回のアプデにて、レイアウト改善できた。・・・はずだった。

アプデしてもらうと・・・あら不思議!画面下部の登録ボタンだけ見切れて、肝心のデータ保存ができない!!

Labelなどのフォントサイズは指定して、同機種シミュレータで見切れないことも確認したのだが・・・・なぜだ!?というわけで、ScrollView実装に踏み切りました!実装自体は簡単ですが、レイアウト完成済ということもあり、めっちゃくちゃ苦労しました!


実装における問題点

  • ScrollViewを追加配置すると、作成していたViewより前に来るので配置換えが必須。
  • 上記解消のため、コンポーネントの配置換えをすると、オートレイアウトの制約が全て解除される!(ここが一番の問題点)
以上の問題が発生。特にオートレイアウトの制約解除はキッツイ・・・今までの苦労が水の泡に・・・。ってなるので、必死に試す、調べる、試す・・・を繰り返すこと数時間?やっと損害の少ない方法にたどり着いた!(多少は手直し必要です。ですが全部より断然マシです)


解決方法!(ここに至るまでが大変だった!)

  1. ScrollView及びその上にViewを配置、各種設定。(この手順はこちらのサイト参照)
  2. レイアウトを崩さずに、ScrollViewに乗せたい(スクロールしたい)コンポーネントを全選択する。
  3. Xcodeのメニューにある、Editor>Embed in>View を選択すると、選択したコンポーネントが一つのViewコンポーネントに格納される。
  4. このViewコンポーネントを、手順1で配置したScrollView上のViewに格納
  5. そうすると、一部エラーが出て、制約の手直しが必要になるものの、大まかなレイアウトは崩れずにScrollView上に配置できる。制約の手直しも、ほぼオートで大丈夫。(自分の場合)

以上!


2022年9月27日火曜日

iOSアプリ設計パターン入門(書籍) 学習2

MVPとは?

画面の描画処理とプレゼンテーションロジックとを分離するアーキテクチャ

  • Model:純粋なドメインロジックやそのデータを持つ(MVCと同じ)
  • View:ーザー操作の受け付けと、画面表示を担当する
  • Presenter:View と Model の仲介役であり、プレゼンテーションロジックを担う

目的

保守のしやすさ向上

MVVMとは?

画面の描画処理とプレゼンテーションロジックとを分離するアーキテクチャ

ViewとViewModelを関連づける(データバインディング)ことで、ViewModelの状態変更に同期してViewの状態も更新される。

  • Model:純粋なドメインロジックやそのデータを持つ(MVCと同じ)
  • View:ーザー操作の受け付けと、画面表示を担当する
  • ViewModel:View-Model 間の画面表示のための仲介役
と、これだけ見るとほぼMVPと同じ・・・??と感じます。
データバインディングするかしないか、くらいの違いでしょうか・・・?

実装手段として、以下の手段がある
  • Nontification Center:手間もコード量も多い、非現実的、実装コスト高い
  • RxSwift(外部ライブラリ):学習コストかかる、ライブラリのアプデに追従する必要、記述が容易
以上!
詳しいことは、以下の書籍を購入して確認してくださいね!
図や、実装に関するコードとかも記述あります!
私には難しいことまではまだまだ理解できないので、かけません笑

2022年9月26日月曜日

iOSアプリ設計パターン入門(書籍) 学習1

Twitterで他のエンジニアさんからお薦めされた書籍(iOSアプリ設計パターン)を本日より学習開始!その中で大事だなと感じたところを抜粋してまとめてみようかと思います!

APIが守るべき原則とは?

  •  使い道を明確に
  • 短い名前よりも明確であることが重要 
  • ドキュメントコメントを書く
とのこと。
要は間違えないようなメソッド名、変数名にするべし、ってことだと思います!
ついつい楽して短いメソッド名付けがちですよね・・・。打ち込み面倒だし・・・。
しかし後々困るのは自分自身ですので、しっかり書きましょう!私!😂

本日は短いけど学習終わり!
以上!

2022年9月25日日曜日

RxSwiftとは??(実装については未記述)

Rx Swiftとはなんぞや?と思い、さまざまなサイトを調べ回りました。
それらをこのページにまとめていこうと思います。

Rx Swiftとは?

非同期処理やイベント処理を宣言的に記述可能なライブラリ。
Swiftの機能だけでも実装できるが、導入することで簡潔に宣言可能。
Rxとは、ReactiveXの略称。各言語に移植されている。
ReactiveXとは、元は.NET(?)用のReactiveExtensionsというフレームワークのこと。

非同期処理とは?

非同期処理とは、ある処理をしながら、別の処理を行うこと。(これは並行処理)
実行している処理を止めることなく、別の処理を実行できること。
メリット:全体の処理を速められる。
デメリット:プログラムが複雑になりやすい。

同期処理とは?

1つずつ順番に処理を行うこと。
メリット:プログラムの記述通りに処理されるため理解しやすい。
デメリット:処理完了に時間がかかる。 

で、実装については・・・?

すみません、まだまだ学習不足で全然理解できてません・・・。
理解が結構難しそうで、また実装について解説のあるサイト・書籍ともに少なそうです。
Udemyもなかった・・・(日本語に限るため)
しかしYoutubeには解説動画あるみたいなので、これからそれらを用いて学んでいこうと思います。

2022年9月23日金曜日

アーキテクチャとは?

  就活にあたり、スキルシートを作成している中で、作成したアプリの「アーキテクチャ」なるものを記述する項目があり、そもそも言葉の意味が分からない・・・。

 軽ーく調べてみると、「基本設計やシステムの構造であり、個別の実装そのものではない」とあり、尚更理解不能に・・・そこでメンターさんに聞いてみたところ、「MVCになるかと思うが、面接でも高確率で質問される事項であり、概念や具体例など、知識を得た方が良い」というアドバイスを頂けたので、調べたことをまとめてみました!ザクっと!

アーキテクチャとは?

 元は建築業界における、建築様式・工法・構造などを表す言葉。
 ITの分野では、コンピュータやソフトウェア、システム構成要素などにおける、基本設計や共通仕様、設計思想の指す。個別の仕様や実装ではなく、抽象的、基本的な構造や設計、動作原理などを表す。

代表的な用語

  • ソフトウェアアーキテクチャ ⇦ここが関係しそう?
  • エンタープライズアーキテクチャ
  • システムアーキテクチャ
  • マイクロアーキテクチャ
  • モデル駆動型アーキテクチャ

ソフトウェアアーキテクチャとは?

 プログラム構造を抽象化し、コードをシンプルに扱うための概念。

 特徴:機能コンポーネント(UIや内部ロジック)を分離・独立して扱える
 メリット:プログラム変更があった場合、他コンポーネントへの影響を抑えられる

MVC(Model -View-Controller)とは?

 ソフトウェアを、処理(Model)・表示(View)・入力伝達(Controller)の三要素に分割し、ソフトウェア内部データをユーザーが直接参照・編集する情報から分離する。
 各要素間の依存性が強く、変更に対する柔軟性が低いデメリットがある。(プログラム修正やテストに時間を要する)

 (構造)
 Model:データの処理
 View:UIへの出力、ユーザーが触れる(入力)部分
 Controller:ViewやModelの連絡・制御

 (流れ)
  ユーザー入力>View>Controller>Model処理>Controller>View出力

MVVMとは?なにが違う?

 ユーザーが入力した情報と、格納したデータをデータバインディング(VとVMの結び付け)にて自動的に処理するもの。先程のControllerがなく、VM(View Model)からModelに処理を実行させつつViewにも値を更新させる。

結論

 MVCとMVVMの処理の違いがわかり、自身のアプリはMVCなんだなぁと思った。
・・・理解不足?他にも学ぶことが沢山ありそう!

出典


2022年9月22日木曜日

制作したアプリ概要について!

 今日は開発したアプリの概要について紹介!

開発環境

  • Xcode 13.4.1
  • Swift
  • MacBook Air M1 メモリ8G

開発期間

 約2ヶ月、週20時間程度
 (1日2時間を目安)

アプリコンセプト

 日々の行動履歴を短時間で簡単に記録でき、提出時に出力ができる

アプリ開発背景

 コロナ禍になり勤務先に行動履歴を提出する必要がある方が、少しでも簡単に手早く記録できるようにしようと思ったことがきっかけ。

想定するユーザー

 日々の行動履歴提出を求められているエッセンシャルワーカー

使用した主なライブラリ

 RealmSwift

実装した機能

  • UIDatePicker,UIPicker,CollectionViewを用いた選択式の入力機能
  • RealmSwiftを,UserDefaulsを用いたデータの保存機能
  • UITableView,カスタムセルを用いたデータの表示機能
  • 保存したデータをCSVデータに変換する機能
  • UIActivityControllerを用いたCSVデータの共有機能
  • GoogleAdmobを用いたバナー広告表示機能

アプリ画像


アプリURL

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

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

  • レイアウトに関する不具合見直し(主にiPhoneSEなど小画面におけるレイアウト崩れ)

ブログの今後は・・・?

 このアプリについて、作成時の苦労や実装について、また広告収入やダウンロード状況など、記事にしていこうかと考え中です!ちなみに現時点のダウンロード数は20〜30ですが、アクティブユーザーは少ないです・・・。またアプリコンセプトの通り、「短時間」で記録できることを目的としているため、広告収入は0です😂
ではでは・・・



2022年9月21日水曜日

目指せ!iOSエンジニア!ブログ開始!!

ブログ投稿のきっかけ!

 業界未経験でiOSエンジニアを目指す中で、学んだことや苦労したことを皆さんと共有できたら・・・という思いから始めてみました!アプリ作成に関することから何でも記事にしていこうと思います!
 同じくiOSエンジニアを目指す方々と情報の共有や、相談などもできたら最高かと考えてます!ブログ投稿自体初めてなので、読み難い文章やブログの書き方なども統一性なかったりするかとも思いますが、まずは発信する、ということを楽しんでやっていこう!思います!

取り敢えず、私自身の現状について!

 現在は建設業界で働いており、機械のメンテナンスから工事などに従事し、8年勤めております!現職場はパソコンはあるものの、いまだに大量の紙とペン、印鑑やサイン・・・と時代に逆らった環境で、日々不満が募っております(笑)

アプリ開発、いつから学び始めた・・・?

 まず、アプリ開発をやろう!と思ったのは、2021年12月末。そこでMacBook Air(M1、メモリ8G)を購入しました!そこからMac自体初めて使用したので使い方を学び、年明けからアプリ開発のため、SwiftUIに関するUdemyの動画教材、書籍を購入し、ぼちぼち独学で学び始めました!
 しかしながら、教材自体の情報が古かったりでうまくいかないことが多く、最新の情報が分からない、何から始めればいいか分からない!という状態でした。
 そこで、プログラミングスクールをいろいろ調べ、探し回り、2022年5月からiOSアカデミアに入校しました!初めはSwiftUIが最新の言語であり、扱いやすい!と思っていたところから、スクール探すうちに、まだ現場では保守管理などを考えるとswiftのStoryboardを用いた開発を学んだ方が良い、ということを知り、そちらの学習に切り替え、学んでいきました!

プログラミングスクールで学んだことは・・・?

 独学の時はアプリ開発のためにはプログラミング言語だけを学べばよい!と思っていました!
 しかし実際には、Githubを用いたバージョン管理アプリ開発に便利なライブラリという便利な機能の導入方法実際にアプリとして仕上げていくための方法、なども学ぶことができ、非常に良い経験となりました!多分独学じゃずっと手を出すことがなかったと思います!特にGithubについては・・・鬼のように苦労した(開発中のアプリ消えた)ので、また後々記事にできたらと思います!
 あとはメンターさんがこまめに質問への回答や、アドバイスなどもしてくださり、頑張ることができました!
 そして入校から2ヶ月後に個人アプリ開発に進み、そこからさらに2ヶ月後、ついに自分自身で設計、考案したアプリをリリースすることができました!
 現在は就活に向けてのアドバイスを頂き、スキルシートの作成などを行なっております!

このブログの今後について・・・?

 どうなるか、継続できるのか、まだまだ謎です!



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

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