Takahiro Octopress Blog

-1から始める情弱プログラミング

SwiftでiOS&Androidアプリを開発!?〜Scadeチュートリアル〜

| Comments

はじめに

昨今、 FlutterReact Native などによるiOSアプリとAndroidアプリの同時作成が少しずつ現実的に実践されるようになってきており、
筆者的には、2010年代前半以来のリブームのように感じられる今日此頃です。

2010年代前半は、Facebookを筆頭に、最終的にはフルネイティブに舵を切り直すプロダクトが多かったイメージがあるのですが、
各種OSの浸透および安定化に伴い、今回の流れはある程度続く可能性があるのではと思わずにはいられません。

しかしながら、 FlutterDart というGoogle製の言語を利用し、
React NativeJavaScript および React の知識が必要になります。

既に Swift でのiOSアプリの開発や Kotlin によるAndroidアプリの開発に慣れているエンジニアであれば、
言語書式が比較的似ていることから、OSやIDEの違いさえ把握できれば学習コストは大幅に抑えられる可能性があります。

一方で、それでは両OSアプリの同時作成の恩恵に預かることができないため、
何か良いものがないかな〜と思っていたところ、
Scadeは、Swiftを使用してAndroidアプリ開発を可能にすることを目指す』という記事を見つけました。

これは面白そうだなということで、今回はScadeについて見てみたいと思います。

iOS13におけるCoreLocationの変更点〜常に許可/使用中のみ許可/一時的に許可〜

| Comments

はじめに

iOS #2 Advent Calendar 2019」の22日目の記事です。

筆者がiOSアプリの開発を始めたのは、約8年ほど前でしょうか。
iOS史上でも初期から強力な機能だったこともあってか、当時はiOSアプリに位置情報の機能を載せることが流行っており、
筆者も漏れなく位置情報に関する調査や機能実装を永遠とこなしていた気がします。

今年でiOSもバージョン 13 となり、昔はなかった機能がたくさん登場しています。
新しい機能は当然、開発者の意欲を掻き立て、未知の世界をユーザに届けることに寄与することでしょう。
ただ、位置情報に人一倍強い思いがあることを自負している筆者ですから、
iOS13が出た今でも位置情報に関する仕様変更があることには感動もひとしおです。

今日は、iOS13からの位置情報に関する仕様変更を『WWDC2019 – What’s New in Core Location』を元に紹介して1年を締めくくりたいと思います。

Xcode10以降からは、CocoaPods v1.7.0以上を使ってInput/Output File Listsを活用しよう!

| Comments

はじめに

CocoaPods はiOSアプリエンジニアであれば誰もが知るライブラリ管理ツールだと思いますが、
v1.7.0 以降では xcfilelistInput/Output File Lists で指定できるようになりました。
( CocoaPods Blog – CocoaPods 1.7.0 Beta! )

Input/Output File Lists とはXcode10で追加された Input / Output Files に代わる、
xcfilelist をパスとして指定できる新たな枠組みです。

既に v1.8.4 までリリースされており、Xcodeも11まで上がっているので今更感はありますが、気になったので少し具体的に差分を見てみました。

iOS13で密かに追加されたUserDefaultsへの保存制限

| Comments

はじめに

先日ふと調べ物をしていたところ、
iOS 13 – Attempting to store >= 4194304 bytes of data in CFPreferences/NSUserDefaults on this platform is invalid という何やら気になる話を見つけました。

どうも iOS13 からは、 UserDefaults に保存できる容量が 4194304 bytes と制限が追加されたようだと言うのです。
これは実際にやってみるっきゃない!ということで実験をしてみました。

iOS13から対応する『Sign in With Apple』〜サードパーティアカウントでOAuth認証によるログインを備えたアプリで迷わないように。〜

| Comments

はじめに

今回はiOS13から導入された Sign In with Apple について見ていきたいと思います。

もし、 Facebook / Google / Twitter などのアカウントを用いたログインを可能とする機能をアプリが持っている場合、
Appleが新たに提唱した Sign In with Apple の機能を実装する必要性が出てきたようです。

一方で Facebook / Google / Twitter などの本家のアプリでは恐らく実装する必要はないと思われます。
(ログイン機能を実装するのであれば、 Sign In with Apple が必須という話ではなく、サードパーティ製のログイン機能を持つアプリに限るようです。 )

とは言え、「急にそんなことを言われても対応工数がかかるし、他に実装したい機能もあるし…」と困るエンジニアもいるかもしれません。

ですが、 Apple が要求する以上、 iOSアプリを開発し続ける上で避けては通れない問題ですので、簡単に対応方法を紹介したいと思います。

iOS13におけるプッシュ通知に必要なデバイストークンの取得方法

| Comments

はじめに

今回はiOS13のプッシュ通知用デバイストークンについて見ていきたいと思います。
Swift に関して言えば、歴史的変遷から、問題のない現場が多いと思うのですが、
Objective-C を中心に活用している現場では注意が必要かもしれません。

具体的には後述しますが、
description を利用してデバイストークンを取得する方式は iOS13 から見直す必要がありそうです。

iOS13から利用できるBackgroundTasksを使ってみよう!

| Comments

はじめに

今回はiOS13で新たに追加された BackgroundTasks Framework について見ていきたいと思います。
基本的には、 WWDC2019動画の『Advances in App Background Execution』を見ながら実践してみました。

ですが、微妙に躓くところもあったのでメモとして残しておきたいと思います。

iOSアプリ開発に便利なLLDBのp/po/vコマンドを覚えよう!

| Comments

はじめに

筆者はこれまでLLDBコマンドでは po を利用することが多かったのですが、
WWDC2019のビデオであるLLDB: Beyond “po”を視聴して改めて v コマンドの使いやすさを勉強しました。

今回はその v コマンドについて実例を交えながら見ていきたいと思います。 ( ppo コマンドでなぜか変数の中身が見れない…と思っていた方、必見です。 )

iOSアプリのパフォーマンス計測に『os.signpost』を活用しよう!

| Comments

はじめに

これまでメソッドの処理時間を計測するには、
Date 関数の timeIntervalSince メソッドを以下のように利用する場面が度々ありました。

1
2
3
4
5
let beginDate = Date()
sample()
let endDate = Date()
let time = endDate.timeIntervalSince(beginDate)
print(time)

しかし実は iOS12 から os.signpost を利用してもっと便利に処理時間を計測することができるようになりました。
本日は os.signpost を利用したことをメモとして記録しておきます。

iOS形態素解析で見る幽白、海藤戦のタブー能力

| Comments

はじめに

最近、業務で形態素解析の話が出ました。
形態素解析はサーバサイドで実行していることが多く、あまりアプリでは馴染みがないと思っていたのですが、
意外とそんなことはなく、iOSでも簡単に試すことができることを知り、今更驚きました。

因みに、筆者が形態素解析と聞いて真っ先に思い出したのは、
「幽遊白書の海藤戦のタブー能力」でした笑。

今回はiOSでの形態素解析を、海藤戦のタブー能力を織り交ぜつつ説明したいと思います。

Included file 'google_plus_one.html' not found in _includes directory