これはなに?
Pixela のiOS/iPadOS向けクライアントアプリケーションです。
アプリ名は、後述する使用frameworkである SwiftUI ともかけています。
サポートOSバージョンは iOS/iPadOS 13.2以上
です。
どうやって使うの?
Pixelaの使い方を見てもらうとよいです。
これの主要機能を、iOS/IPadOSのUser Interfaceで提供しています。*1
blog.a-know.me
Pixela自体はAPIのみを提供していて、User Interfaceはサードパーティ製というスタンスを取られています。
一方で、Programableと結びつきにくい日常生活の中で手軽に使うにはハードルが高い側面があります。
iOS/iPadOSで気軽に扱えるように、という思いで作りました。
どうやって作ったの?ほか
2020/01/07の深夜に思い立って、約2週間でリリースまで来ました。
開発時間の記録は、このグラフに取っています。
pixe.la
実装は SwiftUI を使っています。
WWDC 19での発表当初から遊んでいたので、20時間弱で一通りの使える機能実装はできていました。
仕事から帰ってからの時間だけでも、1週間くらいでできたし、Viewerとしてのアプリなら、もっと楽にできそうな印象です。*2
思い立ってクライアントアプリ作り始めたんだけど、SwiftUIだと20時間弱で大体形にはなった。ただ、SwiftUI発表当初から遊んでたり、今までのFRPやちょっとしたReactの知識があってなので、初学だとこうはいかなさそう
— Yutaro Muta (@yutailang0119) January 11, 2020
ここからマルチアカウント機能つけたり、Context Menuによるincrement*3を実装したり、エラーハンドルをちゃんとしたりで、なんだかんだで倍くらいかかってしまった。*4
仕事やPyCon JP名義 でのリリースはして来たけれど、実は個人としてのアプリリリースは初でした。
Special Thanks
(以下、敬称略)
Pixelaの生みの親で、はてなの同僚でもある id:a-know には、アイコン画像を提供してもらったり、API仕様の相談をしたり、機能提案をもらったりと、開発をとても助けていただきました!
改めてお礼を、ありがとうございます。
また、同僚の id:cockscomb, id:ikesyo にも、SwiftUIやEmbeded Frameworkの話で相談に乗ってもらいました。
それから、Twitterでアイディアをくれた @omochimetaru、@giginet、@tarunon、@_bannzai_、@nakiwo もありがとうございました!
実は v0.1.0
では、まだ修正に着手できていなくて、微妙な挙動をしています🙇♂️ *5
InputがStringで、"11" or "11.0"では return "11.0"、 "11.00" みたいに少数第二位以降まである時はそのままreturn。数値に変換できない場合はnil。今まで作ったことなかったけど、きれいに書くの結構むずい
— Yutaro Muta (@yutailang0119) January 14, 2020
お知らせ
サポートOSバージョン
SwiftUIを使っている関係上、iOS/iPadOS 13.0以上は必須なのですが、開発環境で確認しやすいiOS/iPadOS 13.2以上とさせてもらいました。
また、今後のアップデートでも、SwiftUIアップデート時のAPI diffによっては、サポートOSバージョンを変更する可能性があります。
ご了承ください。
今後の非互換変更
実装がしっくりきていない部分があるので、 今後非互換変更を入れることになるかもしれません 🙇♂️
アプリ内からアカウントを作成した場合も、別途セキュアな領域に token
を保存しておくことを、強くおすすめします。
そういった理由で、アプリバージョンも v0.1.0
としています。
非互換変更を経た後に、 v1.0.0
を迎えたいと思います。
完成度
上記以外にも、作り込みの足りない箇所が多々あります。
これは自分自身のSwiftUIへの理解度が足りていないことが原因でありつつも、SwiftUI自体にUIコンポーネントが全て出揃っている訳ではないことも理由の一つです。
id:yutailang0119 のレベルアップと、SwiftUIのアップデートにご期待ください。
有料化
前述の v1.0.0
のタイミングなどで、有料アプリに変更する可能性があります。
これは id:yutailang0119 の気まぐれで行われると思うので、 2020/01/23現在はいつ変更するのかは未定です。
サブスクモデルではなく、パッケージモデルのつもりなので、無料の内にダウンロードしておくと、お得かもしれません。
無料アプリだけど、ぜひ支援させてくれという方がいましたら、おたよりお待ちしています 🙏
おたより
おたよりはこちら