おばんです、田中です。
2, 3ヶ月ぶりに東京に行ってきました。
今回の旅の目的は主にSwiftのOSSライブラリ開発武者修行です。
最近OSSに興味があって、GitHubのTrending Repositoriesを眺めたり、Trending RrepositoriesのクライアントアプリをOSSとして作って練習してみていたりという経緯がありました。
ちなみにそのクライアントアプリはまだ開発途中だけどこちら。ほんと全然開発進んでないけど...。
TrendingGitHub
https://github.com/ktanaka117/TrendingGitHub
Swift2 UI/UXチャレンジ

なに作ったの?
綺麗で楽しい、季節そのものとか、季節性のあるイベントをテーマにしたPull to RefreshのUIライブラリを作りました。(テーブルビューとかを下に引っ張るとテーブルの中身更新するおなじみのやつ) その名もSeasonalRefresh
今回はちょうど10/31開催だったのでハロウィンのテーマを作ろうとしました。 こんな感じ。
圧倒的リア充感!!!
SeasonalRefreshの設計

依存性を低くする
最初設計を考えていた時は「contentOffsetを取れば簡単に実装できるだろー(鼻ほじ」くらいに考えていて、UITableViewのラッパークラスを作ってあげたらすぐ作れるだろうなーくらいの考えでいました。 しかしメンターさんからのアドバイスは違いました。「優秀なライブラリは汎用性を保つためにできるだけそれ単体で機能するように作るべきである」
さっき言ったようにUITableViewのラッパークラスを作るような設計だとRefreshを実装したいだけなのにそのラッパークラスを使わなきゃいけないことになってRefreshとUITableViewの依存性が高くなってしまいます。利用する人にとって、自分で実装したいUITableViewでそれを使わなくてはいけないのは中でなにをやってるのか気にしなくてはいけなくなってストレスになります。 なので今回はRefresh部分だけ切り出して、上の説明の設計にしました。簡単に使いやすくする
実装するのに行数が少ないと導入しやすいよねー。 ということで今回はクロージャ部分は考えないとすれば一行で実装できるライブラリにしました。
デザイン
今回こちらを参考にさせていただいてリッチにしようかななんて思ってました。 [iOS] SpriteKitとUIKitを組み合わせて、ちょっとリッチなウォークスルー画面 を作りたい しかし実際やってみるとパーティクルとUIKitのデザインはミスマッチ。逆にチープになってしまいました。
まとめ
世の中そんなに甘くない!


今後
ハロウィンのテーマは残念ながら一日では北米時間なんかで考えても間に合わなかった、残念。 基本の部分は大体できたのでこれからテーマを増やしていって、クリスマスまでにリリースする目標です。 設計としてはユーザーが新たにテーマを拡張して作りやすい機構にすると良いと思いました。 ある程度のフォーマットに沿う形で、リソース突っ込んで少し書き換えるだけで自分独自のテーマが作れる、とか。 人の顔をリソースに使ったりするようなネタテーマも面白いかもしれませんww 背景なんかにアニメーションを入れられるようにしてそれも簡単にできるようにするとか、そんな感じで展開していこうかななんて妄想しています。 仕事でも使えるグラフィカルなpull to refreshの定番になれるように頑張っていきます。 が、まずは綺麗なテーマ作るところが第一段階ですね。^^)
0 件のコメント:
コメントを投稿