Loopbackフレームワーク入門

Node.js Advent Calendar 2014の9日目の記事です。 ブログ記事を上げるのが遅くなってすみません。

今回は、Node.jsのWAFであるLoopBackの使い方について簡単に紹介しようと思います。使ってみた感触としては、ORMがすごく優秀で、RestAPIを自動で生成してくれたりと非常に強力なフレームワークだと感じました!では紹介していきます。

Continue reading

東京Node学園祭2014 #nodefest

東京Node学園祭2014に参加してきました。

感想ですが、Node学園祭には初参加でしたが、色んな発表を見れたので勉強になりました。海外スピーカーの発表を中心に聞いていました。そこまで聞き取れたわけではないので、リスニングの勉強の必要性を痛感しました。。 次は何らかの形で発表できたらなと思います。

Node.jsコミッターを多く抱えているStrongloop CEOのIssac Roth(@ijroth)さんに英語で話して、グッズをもらえたのはいい思い出です。

以下は各発表の感想と資料をリンクしています。

Continue reading

イーモバイルでPCからプリンタに繋がらない時の対処法

家の回線をイーモバイルに切り替えてから、PCがプリンタを認識しなくなった!という方いませんか? PCにいくらプリンタのドライバをインストールしても、解決しない。。。 PCがおかしいのか、プリンタがおかしいのかわからない。。。と悩んでいるあなた! 今回はこの問題を私がどうやって解消したかを紹介します。

原因は、イーモバイルにあるかもしれません。 実は私もこの現象にハマっていた一人で、エプソン製のネットワーク印刷ができるプリンタを購入したのですが、PCからプリンタを使おうとしても一向にプリンタを認識してくれないということがありました。

プライバシーセパレータ機能

イーモバイル端末にはプライバシーセパレータという機能が備わっています。 これはイーモバイル端末から提供される無線LANで接続されるPCやスマホ、プリンタ間の通信を遮断するというセキュリティ保護のための機能です。 デフォルトではこの機能は有効になっています。

結論として、このプライバシーセパレータ機能をオフにすれば、この問題は解決します。

この機能をオフにする手順は公式のこのページでわかりやすく説明されているので、参考にしてみてください。

イー・モバイル GL04P ブラック
イー・モバイル
売り上げランキング: 3,611

Amazon Kindleでハイライト一覧をWeb上で見る方法

Amazon Kindleのハイライト機能活用してますか?「これは!」と思ったフレーズや文章をメモするのに便利ですよね。 でも活用しても、振り返らないともったいないです。人間は忘れてしまう生き物なので。

そこで、私はハイライトした文章をいつでも振り返られるように、Evernoteにまとめてようと思いました! このやり方をレバレッジメモと言うそうです。

そのハイライトした文章をWeb上で確認できるサイトがこちらです。

kindle.amazon.co.jp

私は今までKindle上やアプリ上でしか見れないと思っていたのですが、こういうサイトがオフィシャルに提供されているみたいです。 PCからも確認できるので、レバレッジメモ作りが捗りそうですね!

ちなみに、Kindleでハイライトするコツは気に入ったフレーズや文章だけでなく、その前後の文脈も含めてハイライトすることですね。

これは、フレーズだけハイライトしても、数日後に振り返って見た時に「あれ?なんでこれハイライトしたんだっけ?」と忘れないようにするためです。

USの方のKindleアカウントの人はkindle.amazon.comで同様に見れるみたいです。

参考

レバレッジ・リーディング
本田 直之
東洋経済新報社
売り上げランキング: 6,478
Kindle Paperwhite(ニューモデル)
Amazon (2013-10-22)
売り上げランキング: 4

passport-yj 1.0.5 released

Yahoo!JAPANのOAuth認証(YConnect)を簡単に行うためのnpm packageである passport-yj に pull request が来ていた。 依存モジュールである oauth2 のソースコードの中身が変わっていたのか、install後に実行されるパッチが期待通りに適用されていなかった。 動作確認も問題なかったのでマージ。

あと動作確認したときに、同梱しているサンプルで正常にユーザ情報を表示できていなかったので、それも合わせて修正。 どうやらYConnect の userinfo API のレスポンス仕様が変わっていることに気づいた。

作ってから1年も経つと、ライブラリのバージョンが上がったりして思わぬところで問題が起こるのだな。

passport-yj 1.0.5

2013年度を振り返る

備忘録として、2013年度を振り返ってみたいと思う。

新しく挑戦したこととしては、iOSアプリ開発。昨年に入った頃からネイティブアプリ開発に興味を持ち始めて、個人的に Objective-C の勉強を始めた。主に参考にした本は 詳解 Objective-C 2.0 第3版iPhoneアプリ開発のコツとツボ35。仕事でも前のプロジェクトでiOSアプリ開発したいと手をあげたら、開発をやらせてもらえた。そして、今のプロジェクトではiOSチームのリーディングを担当するようになった。 ただ、まだプライベートでiOSアプリをリリースで来ていないので、今年はアプリをリリースさせたい!

他には、英語の勉強とか社内外への情報発信とかもやりたいこととして挙げていたけど、結局ほとんどできなかった。でも少しずつ改善できているのでよしとする。

技術面以外で痛感したことは、サービスを成長させることの難しさ。すごいエンジニアが何人もいるプロジェクトだからといって、生み出されたサービスが成功するとは限らない。当たり前なんだけど、実際に新規サービスを立ち上げてからサービスを運用することの難しさを実感できた1年だった。ユーザが全然使ってくれなくて、終了したサービスもある。 私はどれだけ頑張っても数字で結果を残せないなら、ビジネス上は「価値がない」と思ってる。だから、この1年は技術面だけでなく、サービスで結果が残せる1年にしたい。そのため、「リーン・スタートアップ」とか「グロースハック」という分野に興味を持ち始めている。本格的な勉強はできていないけど。。

プライベートでは、結婚という1つの大きなイベントがあった。ハネムーンでハワイにいってきた。ハネムーン以外ではあまり旅行に行けなかったので、もうちょっと仕事とプライベートのバランスを重視して過ごしたい。

そんな1年でした。

「iOSアプリ:テスト自動化入門」が届いた

すごく読みたかった本がようやく届いた。

バックエンド系のシステムだと自動テストがあるのは当たり前になってきたけど、まだまだネイティブアプリでは自動テストが書かれていないというのが実情だと思ってる(私もあまり出来ていない)。 テストができていないと、つまらないミスでアプリがクラッシュしてしまい、AppStoreのレビューが荒れて悲惨なことになる。。 かといって、リリース前に毎回手動テストするのもそれはそれでコストなので、そこでテストの自動化でしょという話になってくる。

既存のアプリのすべてのコンポーネントに自動テストを一気に用意するのは、大変だと思うけど、テストを書きやすいところから書いていければいいと思う。UIに依存しない部分、APIにリクエストして結果を取得する部分など。 現実問題、UIのテストってやるべきなのかって話もあるからね。

とりあえず目次を貼って終わりにします。

iOSアプリ テスト自動化入門|書籍情報|秀和システム

ヘッダのカスタマイズや独自処理をしたいときの AFNetworking 2.0 の使い方

ヘッダのカスタマイズや独自処理をしたいときの AFNetworking 2.0 の使い方

普通の使い方

AFHTTPRequestOperationManager というクラスを主に利用します。 GETで通信したい場合は、以下のように GET:parameters:success:failure: メソッドを呼び出すことで、リクエストを開始することができます。 parameters: に NSDictionary 型のデータを渡せば、それをよしなにURIパラメータやBODYに付与してくれます。

サーバとの通信に成功しレスポンスが返って来た場合には、success: で指定したブロックが呼び出されます。また、ネットワークに繋がっていなかったり、指定したURLのサーバホストの名前解決がでいないなどサーバとの通信に失敗した場合は、failure: で指定したブロックが呼び出されます。 ちなみに、AFHTTPRequestOperation からステータスコードやレスポンスヘッダといった情報を取り出すことができます。

GET 以外には、POST, DELETE, PUT 用のメソッドも用意されています。

ヘッダのカスタマイズ

さて、ここからカスタマイズ編です。リクエスト時のヘッダをカスタマイズしたい場合は、以下のように AFHTTPRequestOperationManagerrequestSelializer というプロパティに対して、setValue:forHTTPHeaderField: を呼び出します。 NSMutableURLRequest にヘッダを設定する場合と似てますね。

ちなみに、BASIC認証したい場合は、以下のメソッドが使えます。

NSURLRequest のカスタマイズ

リクエストを開始する前にNSURLRequestにある処理を実行したいという場合があると思います。 例えば、Parse を使っていてリクエストヘッダにアクセストークンを付与したい場合、以下のように行うことができます。

最初に紹介したやり方よりは記述量が多くなってしまいますが、必ず毎回実行したい処理ならAFHTTPRequestOperationManagerのカテゴリ拡張もしくはサブクラスを作っても良いかもしれません。

Reference

  • http://qiita.com/asakahara/items/9cb68bef56ca70b505c6
  • http://qiita.com/jtemplej/items/c3c25a5301c7250305fe
    • Request Serialization, Response Serialization の説明がわかりやすい

NSSetの内部実装

NSSet の内部実装

ふと気になったので調べてみたところ、以下のリンクを見つけた。

どうやら実装としてはハッシュテーブルらしい。だから、要素の挿入、削除、検索が一定時間でできる。

なんでそんなことがわかるかというと、NSSet のC言語実装である CFSet が CFHashTable というハッシュテーブルを使って書かれているから。

実は CoreFoundation のソースコードは公開されていて、その一部である CFSet のソースコードも見ることができる。

CFSet のメソッドを見ていると、NSSet のどのメソッドと対応しているか、それとなくわかる。気になる実装を軽く眺めてみるだけでも楽しいかも。もしかしたら、CoreFoundation のクラスの内部でクラッシュした時に、参考になるかも(笑)