Extensionで変数(Stored Property)を定義する方法

Apple-Swift1_201603151208394f1.jpg
Swiftの基本のルールですが、Extensionで
・Method (メソッド、即ちファンクション)
・Computed Properties(計算型変数)
は定義できまるのに対して、
・Stored Property(保持型変数)
は定義することができません。

保持型変数と計算型変数の違いを簡単に説明しますと、保持型プロパティとは、データを保持してくれる、とても一般的な変数です。
計算型プロパティとは、すでに定義されている保持型プロパティを操る、getとsetのある、ファンクションに近い変数です。新たなデータを保持することはできません。

つまり、普通の保持型変数をクラスに追加したい場合、Extensionでではなく、クラスの中で定義しなければなりません。

けれども、Appleのライブラリのクラス(UIViewなど)のコードはアクセスできないため、そのようなクラスに新たな変数を定義することはできません。

もちろん、こういうようなクラスにサブクラスを作って、変数をサブクラスで定義できますので、問題はありません。
例えば、UIView の背景色が何回変わったかを記録する変数を付け加えようと思ったら、ColorChangingUIViewというSubclassを作って、そのクラスに変数を入れたら、解決されます。

SubclassでUIViewに変数を加える方法

 
上記の例では、単純に3つのColorChangingUIViewを作りましたので、問題はありませんでしたが、同じように、背景色が何回変わったかを記録する変数を持つUITableViewやUIButtonやUILabelなどを用意しようと思ったら、それぞれ、ColorChangingUITableView、ColorChangingUIButton、ColorChangingUILabelをつくる必要があります。
 
なお、同じ変数名を定義しても、ColorChangingUIViewとColorChangingUITableViewとColorChangingUILabelなどをループで取り扱う際、if is でそれぞれのタイプを確認しないと、colorChangesの変数がアクセスできないため、コードは複雑になり、大混乱になりやすい状態です。
 
それぞれのUIViewのSubclassにSubclassを作る場合のカオス

やっぱり、全てのクラスが親クラスとして共有しているUIViewのコードに変数入れることができたら、解決されますね。
それで、以下は、UIViewに保持型変数を入れる方法となります。

UIViewに保持型変数を入れる場合

わかりやすい上、重複を防げた簡潔なコードになりましたね。
これからも、Swiftの開発、頑張りましょう!

事務所を移転しました

暑くなったり寒くなったり急激な気温の変化に順応できていません。
こんにちわ。リエです。

先日当社は事務所を移転しました。
といっても同じビルのフロア移転ですが・・

同じビル内なので、引っ越し業者は使わず自分たちで荷物は運びました。
みんなで協力し無事終わったので(お疲れ様でした!)お昼に引っ越しそばを食べました。
IMG_4076.jpg
引っ越しそばの由来ってご存知でしょうか?
昔は引っ越ししてきたら、挨拶にご近所様にそばを配っていたそうです。
なぜそばだというとそばが1番安かったからだとか。
今はお菓子とかが多いですよね。

昔からある習慣って調べてみるとおもしろいです。
そばを食べながらそんな事を思っていました。

新しいオフィスでこれから頑張ります!

イラストレーターおたぐち様にお会いしました

朝中々オフトゥンから出られません。
こんにちは。リエです。(オフトゥンハセイギ)

先日、雑誌や書籍の挿画などで活躍されておりますイラストレーターおたぐち様にお会いする機会がありました。

おたぐち様の描くイラストのファンである私はお会いするのをとっても楽しみにしておりました!
どんな方なのだろうとドキドキして当日を迎えました。

ぜひおたぐち様の作品集「This is Sports」にサインをしていただけたらと思い持参し、ダメもとでサインをお願いしましたところ快く承諾いただきました。

当日は私含めて3名でお会いしたのですが、なんと3人の似顔絵を書いて下さいました。
IMG_4040.jpg
文字だけだと思っていたのですごくびっくりしました。
しかも数分という短時間でこのクオリティ・・カワ(・∀・)イイ!!

イラストと同じでとっても素敵な方で、楽しい時間を過ごすことができました^^

第2回ライトニングトーク大会を開催してみた

少し暖かくなってテンションアップ。
こんにちわ。リエです。

本日社内で第2回ライトニングトーク大会(以下、LT大会)を開催しました。

1回目同様、持ち時間は1人5分、テーマは自由で実施いたしました。
みんな1回目よりは慣れたのか時間オーバーになる人は少なかったです。

笑いあり、真面目な話あり、そしてハプニングありのLT大会となりました。
今回も優秀賞を投票で決めたのですが、なんと2名のW受賞となりました!
優秀賞は【世界ふしぎ発見】と【技術紹介 ディープラーニング】です。

最後は第1回優勝者から第2回優勝者へ優勝カップの受け渡しがありました。
IMG_4012.jpg

第1回、第2回のLT大会を通して、人に何かを伝える難しさや分かりやすい資料とは何かを考えさせられました。
テーマが自由な分さらに難しく感じました^^;
次のLT大会では反省を生かし優秀賞を狙いたいと思います!

制作実績のご紹介・古書ダンデライオン

こんにちは。デザイナーのKです。
今回は弊社が担当した案件のご紹介をしたいと思います。

京都で古本屋さんを運営されている「古書ダンデライオン」の、WEBサイトとオンラインショップの制作を担当しました。
お知らせ、イベント情報、おすすめ古書など、古書ダンデライオンさんが扱っている古書に関する情報が集約されたWEBサイトとなっています。

works_dandelion_01.png

■ WEBサイト
https://oldbook-dandelion.com/

■ オンラインショップ
http://shop.oldbook-dandelion.com/

まず、デザインについて簡単ですがご説明します。

今回のWEBサイトのコンセプトは「古書ダンデライオンさんの思いを思う存分発信できる、古書の魅力が伝わるサイト」に設定しました。

このコンセプトを踏まえて、古書というコンテンツを最大限に活かすことができるように、「和モダン」をテーマにデザインを考えました。
ベースカラーに白色を、アクセントカラーにブラウンを設定しました。
フォントは游明朝体使用して(一部ブラウザでは游明朝体は表示できません)優しい印象に仕上がるようにしました。

どの世代でも親しみやすいようなサイトデザインを心がけてデザイン作業を進めていきました。
特に今回、若い世代にも閲覧してもらうということを想定して、サイト全体をレスポンシブデザインで作成し、スマートフォンなどのデバイスでもPCと同じ情報が閲覧できる構成にしています。ぜひスマートフォンやタブレットなどでも閲覧してみてください^^

次にサイト構成についてご紹介します。

サイトコンセプトを意識しながら、古書ダンデライオンさんが日々、古書に対して考えていることを「イベント情報」や「おすすめ古書」などのコンテンツで世の中に発信していけるような「場所」になるよう、サイトの構成を考えていきました。
関西を中心に、さまざまな場所で精力的に古書のイベントに出店しておられるということで、トップページに「イベント情報」の記事画像が大きく表示され、ひと目でどんなイベントがあるのかがわかる導線にしています。
スマートフォンで見ると、スワイプでもスライド操作ができるようになっています^^

おすすめ古書」というコンテンツでは、古書ダンデライオンさんがおすすめするイチオシの古書を紹介しています。
古書ダンデライオンさんの、古書に対するおすすめポイントや思いを発信してもらえるように、細かく投稿内容を設定できるような仕組みにしています。
「おすすめ古書」で紹介されている古書は、併設のオンラインショップのページとリンクで紐付いており、気になった本はすぐに購入することができるように画面設計をしました。

ぜひ気になった本を見つけた場合は購入してみてはいかがでしょうか?
古書の魅力を、手にとって実際に味わっていただきたいです^^

普段古書に接することがない方も、このWEBサイトを通して古書の魅力に接していただければいいなと思っています。

また、古書ダンデライオンさんはさまざまな古本イベントに出店しておられるので、定期的にイベント情報もチェックしてみて、気になったイベントなどにはぜひ足を運んでみてはいかがでしょうか^^

– – – – – – – – – –
スプラウト株式会社は、大規模なウェブサービスのシステム開発に携わってきたノウハウを活かし、ウェブ上の様々なコミュニケーションのしくみをご提供・ご提案しています。
お気軽にお問い合わせください!

\\一緒に成長できる仲間も募集中です!!//
あなたのしたいことを、私たちと。
あなたの実現してみたいアイデアや技術を私たちに教えてください。
コミュニケーションのあたらしいカタチを私たちと一緒に考えませんか?
募集要項はこちらから。