先日、Apple Store銀座で開催された「Swiftのオープンソース化とイノベーション」というイベントに行って来ました。その時の様子は簡単ではありますがこちらにまとめてあります。

そのイベントに感化されてというか、すごくタイミングが良かったというか、とにかくGitHubでライブラリを公開してみました。

今までやったことがなかったので色々と学ぶものがあって面白かったのでまとめてみました。

RippleAnimation

公開したライブラリはRippleAnimationというGoogleのMaterial DesignにあるRipple EffectsをUIViewでも再現できるようにしたものです。

元々リボカメというアプリで使用していたものを切り出したものなので、コード量全然ないですし、このライブラリを使うよりも自分でコードを書いた方が早いかもしれません 笑

ある程度汎用的に使えるようにはなっているので、ちょっとRipple Effects試したいとか、一部でしか使わないので書くの面倒くさいとか、そんな時に使ってもらえると良いかもしれません。

References

主に参考にしたのは@morizotterさんがQiitaに投稿していたSwiftでライブラリを公開するという記事です。

とても丁寧にまとめられているので「ライブラリ作りたい!」という方は是非是非見てください。

Tips

基本的に@morizotterさんの投稿の通りに進めれば問題ありませんでしたが、自分がちょっとハマったところを紹介しようと思います。

.gitignoreはGitHubのものを使用すると良い

git管理する際に.gitignoreで管理しないファイルを指定できますが、GitHubでリポジトリを作成した際にREADME.md作成時に一緒に自動で作ることが可能なので、それを使うと良いかと思いました。

Rippleanimation gitignore

README.mdはGitHub上でも編集できる

最初README.mdもローカルで更新をしないとと思ってやっていたのですが、README.mdはGitHub上でも更新できるのでそれでもいいかもしれません。

ただし、commit logが残ってしまうので修正と一緒にドキュメントも更新すべきであればこれはやらない方がいいんだろうなと思いました。

2016年1月2日 追記

giboというツールがあって、それが便利かもしれません。Qiitaのこちらの記事で知りました。

アクセスコントロールに気をつける

ライブラリとしてアクセスコントロールはしっかりと考えなければいけません。

Rippleanimation sample code

RippleAnimationではRipple Effectsを表現するための円形のViewを独自で定義しているのですが、これはprivateにして外部からアクセスできないようにしています。

別に使えてもいいのかなと思ったのですが、このライブラリの基本的な考え方として簡単に使えることが大事で、Viewの存在をあまり意識しなくても使えるようにしたかったので、カスタムクラスの存在は隠蔽することにしました。

今回は超小規模なライブラリですが、ある程度の規模になるとこの当たりの設計思想が超重要なんだろうな〜と感じました。

Demoプロジェクトではユースケースを考慮する

@morizotterさんの投稿ではDemoプロジェクトを置いて、そこで実装を進めると書いてあったのですが、僕もその方法で実装を進めました。

その際に大事なことは、ライブラリがどのように使われるのか、そしてこのライブラリを使用した場合に解決が可能なのかということを考えながらDemoアプリを作ると、ライブラリ自体の汎用性が上がるのかなと思いました。

RippleAnimationではView外でも描画されるパターンと、View内でクリップされる2つのパターンが考えられたので、Demoアプリではこの2つのパターンを確認できるようにしています。

また、UITableViewCellでの実装でちょっとハマってしまったので、UITableViewCellのカスタムクラスを定義することで解決できることを示すためのサンプルも入れてあります。

この辺の調整をしているとメソッドに渡す引数も色々と変わってきて色々考慮することがあるんだな〜という印象でした。Demoアプリでニーズを予想することで色んなケースで対応が可能になると思います。もちろん考慮漏れも出てくるかと思いますが、こうやってライブラリを公開することで経験値が上がっていくのではないかと思います。

README.mdに画像を載せる

アニメーションライブラリなので、README.mdに画像を載せたかったのですが、その方法がわかりませんでした。ググったところこちらがヒットにしたので参考にしました。

GitHubのWikiってリポジトリなんですね。ここに画像を保存してリンクをREADME.mdに記載すればOKでした。

まとめ

ライブラリは基本的に使う側で、作る側の苦労とかあんまり考えたことがなかったのですが実際にやってみると大変なんだな〜ということがわかります。でもStarをもらえたり、周りからの反応があるとやっぱり嬉しいものですね。

僕の中でオープンソースに対するハードルが下がって、いまはapple/swiftに何かPRを送れないかソースを見たりしています。PRを送れそうなものがあったのですが、すでに対応されていてちょっとがっかりしました 笑

一つやったことによって作りたいものができてきたり、設計についてもよく考えるようになったのでこういう活動をするのっていいなぁと思います。企業側が採用の際にこういった活動を重視する理由も分かりました。

次はもっと良い、色んな人に使ってもらえるライブラリを作れるように頑張ろうと思います。