Katoはてなのソフトウェアエンジニアです。学生時代にMac/iOSアプリ開発からエンジニアとしてのキャリアをスタートしました。twitter.com最近、自分が直面した問題を解決するためのライブラリを作ることがあります。そのようなライブラリは、実際の問題に対する解決策を具現化したものです。今日のSwiftには、解決するべき課題がたくさんあることでしょう。現実のモチベーションに裏付けられた、役に立つライブラリを作ってみませんか。※前半、カメラ不調のため記録が追いついておりません、Togetterさんのまとめで合わせて様子をご確認下さい!!前半に、ご自身が作成されたライブラリの紹介と、その着想、ライブラリ化・オープンソース化する姿勢についてお話がありました。#tryswiftconf」をトゥギャりました。京都に住んでいます、遊びに来て下さい。小さなSwiftのライブラリを作ってきました。”必要は発明の母”3つの事例を紹介します。UTIKitgithub.comブログには綺麗な写真を載せたいと思います。iOSにはUTIがあり、AppleのOSの中でファイルのタイプを示します。UTIからは拡張子を取り出すことが出来て、UITypeCopyPreferredIdentifierForTagという関数でファイルタイプを取得できる。難しいのでUTIキットを作りました。Typeから拡張子を取得するのは沢山コードが必要ですが、UTIKitを使えば、1行で取得可能です。"image/jpeg"と比較できます。Equitableを実装しています。jpegは画像ですが、準拠によって画像かどうかを確認することが出来ます。このようにして、UTIKitではSwiftらしいインターフェースでUTIを扱えるようにしました。考えられるすべての操作が可能です。これを作ったことで正しいフォーマットでブログアプリで画像をアップロードできるようになりました。HUDKit似たようなものでHUDKitという物を作りました。ブログ記事を書いてデータを送信したら、ユーザーはすぐに見たいかもしれないが、ちょっとまって貰う必要があります。シェアしたいので、投稿が完了したらSNSにシェアしませんか?と出したいと思うそういった2つの機能を提供します。github.com(※記録復活)文字列でパスの制約を記述してマッチャーで適合したか、そしてパラメータを受け取れる。パスマッチャーでは*や{name}など、パターンマッチを利用できる。WEBでは、GetやPostで条件を分けたい場合がありますが、そういった記述を出来るようにしました。HTTP1.1の定義を表しています。組み合わせてこのように出来ます。これで同じコードを繰り返し書く暮らしから開放されます。これらは全て自分が直面した問題の解決のために作りました。一般化可能だと考えてライブラリに切り出しました。いうことがしたいかというと、問題を抽出して一般化して再利用可能にしたい。@IBDesignableもそう。デザイナは行間にこだわりがある。NSAttributedStringを使いますが、@IBInspectableなどを使って、デザイナが直接設定できるようにすることが出来ます。この実装はそのままライブラリにするには乱暴ですが。今朝AcceptedになったNSPrefixはまだ残ったりしています。プロパティビヘイビアがAppleのエンジニアから提案されています。プロパティのdidSetなどと同じ仕組で取り扱えるようにしようというもの。考慮すべきものがあるのではないかと、改訂が求められている段階です。SwiftPackageManagerでは言語のコードを混在させられるようにするというProposalがAcceptedです。これらは新しいライブラリのヒントになると思っています。いま解決を待っている潜在的な問題がたくさんあることでしょう。誰かの要望を叶えるアプリを作ることが私たちのやることです。素晴らしいアプリを作り、もし、他の人にも役に立つことがあったら、ライブラリを作ってコードをシェアすると良いと思います。世界を良くしたいですね私からは以上です。QAライブラリを描く時に自分たちが必要な物から作ると思うが、オープンソースにする時に一般化が必要だと思います。どのタイミングで行いますか?直感に頼っていて、普通にソフトウェアを書く時に、今何かしている問題のドメインが何処にあるか意識せざるを得なくて、クラスを一つ作るにも、それが何のドメインに属するのか考えなくてはいけなくて、そのドメインが、自分のプロダクトに重要なドメインではなくて、別なところにあると思ったら、それはライブラリ化するチャンスだと思っています。私もライブラリを公開していて、モチベーションが最初はあるが、自分が使わなくなるとモチベーションがなくなって、どう対処するだろうかと思いました。私はモチベーションが下がっているものにPullRequestが来たら、嬉しい半面面倒に感じる。対処したら良いか?モチベーションが自分にも他の人にもなければ、誰にも有用ではない。PullRequestが来たら、その人にはモチベーションがある。わたしなら、じゃあ全部お願いしますと、あげちゃいます。先ほどのライブラリとかは、会社で、企業で、アプリを作っている時に作ったのかと思ったが、はてなとしてはどのようなスタンスか?会社として作ったものをオープンソース化するときに気をつけていることは?ガイドラインでオープンソース化が推奨されていて、仕事で作ったものは、相談して、コピーライトにHatenaと載せて、自分の名前とはてなの名前で、自分のリポジトリで公開していいということになっている。他の会社から受託で作った時は、私たちには権利がないので公開できない。言う言う時には、予想して、日曜日にライブラリを書いて公開します。はてなブログPro大学時代に耳が聞こえない生徒が講義に参加できるようにリアルタイムに文字起こしするバイトをしていました。いまはエンジニアとして働きつつ、勉強会やカンファレンスで話される技術分野の知見を文章に残し、検索可能にしたり、地方で活動する方に届けたいと思っています。お役に立ちましたら、支援いただけると幸いです。(24)注目記事はてなブログをはじめよう!niwatakoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。