Atomのautocompletion-plusをxcodeライクにする
補完大事ですね!
# .atom/keymap.cson 'atom-text-editor:not(mini).autocomplete-active': 'tab': 'autocomplete-plus:confirm' 'enter': 'autocomplete-plus:confirm' 'up': 'unset!' 'down': 'unset!' 'ctrl-p': 'core:move-up' 'ctrl-n': 'core:move-down'
React.jsを触ってみた。Railsとの相性は?
WebDB Press vol.86のReactによるフロントエンド開発を写経してreact.jsの勉強してみた。 Reactive ProgramingやVirtual DOMを意識せずに書けてしまいました。
個人的な観点からは、やはりAnother JS Frameworkという感じ。 AngularJSのようにフロントでグイグイやるアプリには、react.jsはオプションの一つになるのではないでしょうか?
Fluxは来月号で解説するようですが、FrameworkなのでカオスになりがちなJSのコードを綺麗にできる。DOM操作を考えずにコードできるというのがメリットのようです。 デメリットとして、JQueryとの相性、デザイナーとの共同作業が難しくなるということがあるみたいです。
Railsとの相性は?
Railsの哲学はなるべくJSを書かないというようなものだと思ってます。 react.jsに限った話ではないのかもしれませんが、JSフレームワークとの相性は良くないように思います。 APIに特化したRailsサーバには良いと思います。 なので、会社の規模が大きくなって、分業できるリソースがあって、チーム全体がreact.jsを使えるようになればproductionに導入できると思いますが、リソースがないスタートアップでこれを選ぶのはやや難しいかなと思います。
react.jsがフロント開発のオーソリティになればいいですね。まじで。
SwiftでFacebook Messenger SDKを導入する
二日ぐらい前にF8で発表されたやつですね。 アプリの表現力が上がるのは間違いないので実装しました。
Good Design InteriorというインテリアのECサイトを作ってます。 これに入れ込みます。商品を友達と相談して決める機能を追加するかたちになります。
とりあえず、Basicで。(Optimizedはガイドラインと合うか調べる必要がありそう)
1. Install Facebook SDK
2015年3月28日時点で、Cocoapodsに対応していないのでSDKをダウンロードしてきてインストールする
2. Facebook SDKをプロジェクトに取り込む
Xcode->Project->General tab->"Linked Frameworks and Libraries" -> '+' -> Add Other -> ~/Documents/FacebookSDK/FBSDKMessengerShareKit.frameworkを選択
3. ヘッダーファイルに下記を追加
(ヘッダーファイルの作り方は省略)
#import <FBSDKMessengerShareKit/FBSDKMessengerShareKit.h>
4. Info.plistに追加
5. コードを書く
ボタン設置
UIViewをストーリーボードで設置してそこに差し込みました。
@IBOutlet weak var btnView: UIView! override func viewDidLoad() { var fbBtn = FBSDKMessengerShareButton.rectangularButtonWithStyle(.Blue) fbBtn.addTarget(self, action: "_shareButtonPressed:" , forControlEvents: .TouchUpInside) //setting for fbBtn if needed self.btnView.addSubview(fbBtn) ...
ボタンが押されたイベント追加
FacebookのサンプルでAND(&)をとっててこれをSwiftにするのに時間を使いました。 sharingImageはUIImageオブジェクトです。差し込みたいImageを入れます。
@IBAction func _shareButtonPressed(sender: AnyObject) { let result = FBSDKMessengerSharer.messengerPlatformCapabilities().rawValue & FBSDKMessengerPlatformCapability.Image.rawValue if result != 0 { // ok now share if sharingImage != nil { FBSDKMessengerSharer.shareImage(sharingImage, withOptions: nil) } } else { // not installed then open link. Note simulator doesn't open iTunes store. UIApplication.sharedApplication().openURL(NSURL(string: "itms://itunes.apple.com/us/app/facebook-messenger/id454638411?mt=8")!) } }
感想
はやくSwiftでサンプルが欲しいですね。 関数を探り探り感覚で実装する感じになってます^^;
今のレビューが終わったら早速バージョンを更新します! なのでアプリに入るのは4月上旬かな。
参考
- https://developers.facebook.com/docs/ios
- http://qiita.com/tsumekoara/items/91e04677fe5a9a89054b
- http://qiita.com/mokemokechicken/items/9d7b941a45a5534411c9
- http://stackoverflow.com/questions/29120892/using-objective-c-bitmask-in-swift
- https://developers.facebook.com/docs/ios/getting-started#configurePlist
サインアップ(ユーザ登録完了)後にGoogle AnalyticsのイベントをRailsから送る
flashを使ってやりました。
Registrationのコントローラ側にflashをセットして,
# Users::RegistrationsController < Devise::RegistrationsController flash[:first_sign_up] = true
Viewで発火。
<% if flash[:first_sign_up] %> <script>ga('send', 'event', 'signup', 'done')</script> <% end %>
参考: * user2371191氏のエントリ javascript - How do I use Google Analytics custom events inside my rails controller? - Stack Overflow
Swift XCTest - Use of unresolved identifier
大きな声じゃ言えませんが、iOSアプリのテストを書いてません。 速さ重視でやってきたので、そろそろ安定性と仕様周りを固めるためにテストを書くことにしました。
が、、テストを動作させるのにめっちゃハマりました。計5時間。。
Use of unresolved identifier
が出まくって、どう解決するかがググっても出てこない。。 というより、いくつか情報があるけど解決しなかった。 おそらくxodeのバージョンとの組み合わせがあるのだろう。
で私のケースの解決方法は簡単で、
ヘッダを追加して。
ターゲットに追加するだけ。
Swiftのつらさは情報が少ないことか。。
あとXCTestの情報自体少ない。XCTestでテスト書いてないのかなー。