-
FXチャートアプリ高速化
■為替チャートアプリのチャート表示高速化のご依頼を頂きました。DBを利用してチャートを高速化する仕組みを構築しました。
・ゴールはバックグラウンドからの復帰時のスピードアップ
バックグラウンドから起動した際のチャート描画が遅い為、改善して欲しいというご依頼で自分のアナログチャートを開発した実績を認めていただきご依頼頂いた案件です。
・楽天iSPeedとの比較
まずはFXチャートアプリの楽天iSPeedの技術調査から始まりました。楽天iSPeedはバックグラウンドからの復帰時のチャート描画が高速です。ご依頼を頂いたアプリは2秒近くかかっていました。違いを研究するためにXcode Instrumentsを使用しドライブの状況、ネットワーク通信等あらゆる角度から違いを探っていきました。
・違いの原因はバックグラウンドでの動作
楽天iSPeedはバックグラウンドにいってもサーバーと通信をしていました。スピードのそれが一番大きな原因でした。
・提案
1.バックグラウンドでも通信をすること。
2.コード自体の大きな見直しをすること。
3.サーバー自体を変えること。
4.SQLiteを使ってローカルにデータを保存し、復帰時にサーバーからは差分のみ取得するようにすること。
結果的に採用されたのは4でした。その他の提案は他に及ぼす影響が大きすぎることが不採用になった原因だろうと思われます。SQLite自体はずっと使用していたDBだったのでそれ程時間をかけずにデータを永続化することが出来ました。
1.バックグラウンド移行時にDBに保存
2.バックグラウンド復帰時にDBから読み込み
3.現在との差分だけをサーバーからデータ取得
面倒だったのは溜まっていくデータの消去方法、複合キーをどうするか、など。
例えば1分足などは永続化すると余計なデータ(チャート表示する必要がない昔のデータ)が溜まっていくことになります。その為、起動時に余分なデータを削除するようにしました。
結果的には2秒が1.5秒ほどに縮まりました。バックグラウンド処理などを実装すればさらにスピードアップは出来るかもしれませんが、他のコードとの影響範囲を調べて慎重に行うということになりました。
【使用言語】Swift
【ツール】SQLite3、Xcode -
iOSに関するクイズ作成
■法人向けの教育機関でiOSに関するクイズ作成をしております。私はSwiftの担当をしております。
・iOSに初めて触れるプログラマーに向けて主にSwift言語に関するクイズを作成する仕事です。
普段自分が直感的に理解していたつもりの技術でも、こちらの仕事に関しては客観的に正しく説明する必要がある為、ドキュメントを隅々まで読み問題を作成したので自分の理解力を深める為にも有意義な時間でした。
【使用言語】Swift
-
保育園・保護者連絡アプリ
■保育園の保護者との連絡アプリの業務をしております。主にiOS側のエラー解消、機能追加などを任せて頂いておりますが、KMPで実装されている為、Kotlinの方もコードを解読しております。
・KotlinMultiPlatform
こちらの案件はAndroidとiOSの共通部分をFlutterではなくKotlinMultiPlatformで実装してあり、技術を理解するのに苦労しましたが、大変勉強になりました。
・The Composable Architecture
アーキテクチャにはThe Composable Architectureが使用されており、こちらも理解するのに時間がかかりました。MVCやMVVMはよく理解しているつもりでしたが、初見は理解するのにまずは技術調査が必要になるように思います。
・はじめてのAndroid
Androidも理解する必要があり、これも初めての経験でkotlin言語の基本的なことからJetpackComposeのこと等も技術調査する時間が必要になりました。
・Firebaseとの連携
Firebaseとの連携も勉強になりました。今後はこちらの技術を使用すれば自社サーバーが不必要になるのではないでしょうか。【使用言語】Swift、Kotlin
【ツール】SQLDelight、Kotlin、MultiplatformMobile、TheComposable
Architecture、Swift 、UI -
ソフトウェア制作会社でアプリ・システム・PCソフトを受託開発
福岡県で地元企業様向けにソフト・システム・アプリ開発をしております。
■ 自分で開発、販売中の製品
・ノートアプリ notototo (のととと)
https://apps.apple.com/us/app/notototo-notes-pdf-images/id1608610397
・株価チャートソフトウエア アナログチャート
https://www.analogchart.com/
・クラウドバックアップシステム コピコピタイマー
https://www.cpcptimer.com/
■受託開発
・見積書作成システム
・生コンクリートスランプ連絡システム
・工事写真整理システム
■備考
いままで完成品のイメージからどういった技術が必要になるか選定し、それらを組み合わせて一つのシステムを構築してきました。
例】
・社内の事務員が使用するWindows、そちらをvc++でアプリ制作
・現場作業員がもつタブレット、そちらをSwiftを使ってアプリ制作
・それらのデータの置き場としてLinuxサーバーを構築
・サーバーでのデータ加工にPython、表示にHTML,css,javascript,PHP