はじめに
本格的にSwiftの学習を開始してから、オリジナルアプリ開発を行い、App Storeに公開するところまで実施することができました。
一区切りついたため、今回やってきたことの振り返りを行いました。
背景
現在の私の業務は、通信ネットワークやサービスサーバーの保守・運用です。
所謂ネットワークエンジニアであり、プログラミングを行う業務はやっていないためアプリ開発自体は未経験です。
前々から今の業務とは、別の方向で新しいスキルを身につけたいと考えておりました。
アプリ開発は興味のあった分野であり、iPhoneやiPadは普段から使用していることから、iOSアプリ開発に挑戦してみようと思ったのがきっかけです。
目標
アプリ開発に挑戦するに当たって下記の目標を立てました。
・オリジナルアプリを開発して公開する
・副業案件を獲得する
どうせやるなら、やったことを結果という形にしたいと思ったからです。
アプリ紹介
SSHを使用してリモートアクセスを行うシンプルなSSHクライアントアプリです。
開発理由
・自分が普段利用するものがいい(作って終わりではなく、継続して保守をする理由になるため)
・前述の通り、ネットワークエンジニアであるため、SSHによるリモートアクセスは頻繁に利用機会がある
上記の理由から、SSHクライアントアプリを開発しようと考えました。
学習内容
学習時間
本業の状況や家庭環境に多少左右されますが、1日おおよそ2時間程度を学習時間に充てて、ほぼ毎日継続してました。
独学で学習開始
まずはやってみようと考えて独学で開始しました。
調べていくと開発方法にUIKitとSwiftUIなるものがあるとのこと。
できるだけ最新のものに触れた方が良いだろうと考えた結果、SwiftUIで学習を進めることにしました。
※後に実務ではUIKitによる開発が主流であることを知る。
使用した教材は下記です。
・SwiftUI Masterclass 2022 – iOS App Development & Swift
学習期間としては、2022年4月から6月までの約2ヶ月間でした。
アウトプットで滞る
学習を終えて、オリジナルアプリ開発に着手しようとしましたが、何から手をつけていいか、そもそも何をどうすれば達成できるのかがわからないという状態になりました。
色々調べるも、結局この時点では進みませんでした。
本業の方で資格取得のための学習も並行していたため、一旦はそちらに注力することにして、オリジナルアプリ開発については中断することにしました。
独学をやめる
資格試験を終えて、再度オリジナルアプリ開発を再開しました。
ただ、独学でやるには難しいと思い、有識者の方へ相談するのが良いのではないかと考えてMENTAを契約することにしました。
学習再開
2022年10月より学習再開。
メンタリングの中で、実務ではUIKitによる開発が主流であると教えて頂いたため、再度基礎から学習をやり直しました。
使用した教材は下記です。
・iOS & Swift - The Complete iOS App Development Bootcamp
この教材で、Swiftだけでなく、Git及びGitHubに関することを学習できました。
基礎学習については、2022年11月末完了。
その後、オリジナルアプリ開発を進めることになりました。
開発内容
機能について
今回は初めてということもあり、機能を限定したシンプルなものにしようと思いました。
・接続先情報を入力する画面とターミナル画面の2画面構成
・認証方式はパスワード認証のみ
Figmaでワイヤーフレームを作りました。
使用したライブラリ
SwiftTerm
ターミナルエミュレーションを行うためのライブラリ。
NMSSH
SSH通信を行うためのライブラリ。
苦労した点
・SwiftTermのサンプルコードが動かない
単純に宛先情報を変更すれば動くと思いきや動かず。(SSHライブラリの問題?)
・NMSSHのドキュメントがない
GitHubのREADMEにドキュメントのリンクはあるものの表示されない。(リンク先のドメイン停止中?)
これらの問題に関しては、GitHubに同じライブラリを使用しているリポジトリがありましたので、そちらにあるソースコードを確認することで実装方法を確認できました。
参考にしたリポジトリは下記です。
App Storeへの公開
下記を参考にApp Atoreへ公開を行いました。
・(2022年版)iOSアプリをAppStoreで公開する手順まとめ
Appleのアプリ審査は厳しいと聞いていたのですが、幸いにも一度もリジェクトされず、2023年1月に無事に公開できました。
今後について
アプリのブラッシュアップ
今回開発したアプリの改良を継続していきたいと思います。
まずは、ターミナル画面のフォントサイズを変更できるようにしたいと思っています。
※iPad実機で使用した時にフォントサイズが小さいと感じたので・・・。
将来的には下記内容の改良を行っていきたいと考えています。
・宛先情報をDBに保存
・宛先情報を複数の端末で同期
・認証方式に公開鍵認証方式を追加
・公開鍵認証用の鍵作成機能
・鍵交換のためにSFTPでファイル送受信する機能
また、せっかくSwiftUIの学習をしていたので、将来的にUI部分をSwiftUIに置き換えることも検討しても良いかもしれません。
副業案件獲得のための実績作り
MENTAのプランにある実務体験を行い、経験を積みたいと考えています。
その後、サポートを頂きながら、実際の副業案件獲得に挑戦し、最終的には独力で案件受注できるように進めていければと思います。
終わりに
現在副業でiOSアプリ開発の案件を募集しています。
Twitter DMでご依頼をお待ちしております。