iOSで着信時氏名表示を実現するためには"Call Directory Extension"を利用する必要がありますが、そもそも別プロセスということもあって、通常のアプリよりデバッグが簡単ではありません。私自身、これまでCall Directory Extensionのデバッグには大変苦労してきましたが、長年の試行錯誤の結果、最近ではデバッグの効率がかなり改善してきました。
本稿では、そんなCall Directory Extensionを利用するアプリを開発する上で知っておくとデバッグ効率が上がるようなデバッグテクニックをご紹介します。
コンテンツ(予定):
iOSフレームワークのAPIを使ってアプリをコーディングする際に、どのようにAPIを呼び出すコードを書けばいいのかを悩むことはありませんか?
そんなとき、GitHubなどのリポジトリにあるソースコードを参考にするために、コードリーディングする事でしょう。しかし、コードリーディングは非常に手間や労力のかかる作業です。
そこで、Swiftソースコード内でプログラマが気になるAPI 呼び出しの記述箇所を指定すれば、それ以外に関連がある箇所をハイライトするコードリーディング支援ツール「CSExtractor for Swift」を開発しました。
CSExtractorを使えば、開発者は多くのソースコードから自らが利用したいAPIの実装例を気軽に得ることができることでしょう。
CSExtractorは、ソースコードに対して構文解析を行って得られたデータの依存関係に基づいて、関連のあるステートメント同士を抽出します。
CSExtractorでは、Swiftの構文解析であるSwiftSyntax、WebアプリケーションフレームワークであるVaporなどを使って実装しています。
そして、CSExtractorのデモ用アプリケーションはWeb上で公開されています。
本稿では、CSExtratorの使い方やシステム構成、及びソースコード解析のアルゴリズムなどをご紹介します。
最後に、開発者の皆様が煩わしい作業から解放されてクリエイティブな開発活動ができるように、これからもさまざまな開発支援ツールを提案していきます。
ソフトウェアは一度作ったら終わりではなく,その後もソースコードを保守管理しなければいけないというのは今では常識になりつつあります.
積極的に大きなビジネスインパクトを狙い,日々ソースコードの編集を繰り返し,頻繁にリリースを行うことも珍しくはありません.
このようにソースコードへ頻繁に手を加える必要がある際に,レガシーコードは大きなボトルネックとなります.
そしてそんなレガシーコードに頭を抱える時間が1日の大半を占めるようになったとき,私達はリファクタリングという選択肢を考えはじめるのかもしれません.
本稿では約3年に渡る大規模なリファクタリングを入社直後に引き継いだ筆者の体験を基に,直面した課題と解決策,および安全にリファクタリングを進めるために意識したコーディングスタイルを示します.
また,引き継いだ実装から見えてきた,スプラウトクラス等のリファクタリング手法の有用性についても考察します.
考察や説明には、iOSエンジニアに馴染み深いSwiftのコードやリファクタリングに関する文献を適宜引用します。
なお,具体的には以下のようなトピックについて執筆する予定です.
【トピックプラン】
数百枚の画像をデータ化し、 CSV ファイルとして書き出すプログラムを Swift で書きました。
え、 Ruby とか Python でサクッとやればええやん。
間違いない、用途に合わせて言語・ツール・環境を臨機応変に変えることがエンジニアには求められています。
にもかかわらず “愛” を優先した独身男性の実話を元にノウハウをご紹介いたします。
1.Xcode Playground 上で実行
2.画像を OCR API の仕様に合わせてエンコード
3.API 実行&データをメモリ上に格納
4.CSV 形式に変換& CSV ファイル出力
ポイントはこの4点になります。
Xcode Playground を利用する中で API 通信・ファイル入力・出力を行う方法を中心に実際のソースコードを元に解説いたします。
また、 仕様を満たすプログラムを “Swift 以外” で実装した例も複数ご紹介いたします。
“Swift 愛” によって思考停止技術選定をした男の末路を知ると共に、仕様に対する最適な技術選定方法を実例を元に学ぶことができます。