SwiftのテストクラスでObjective-Cのプライベートメソッドをテストする
この記事は Sansan Advent Calendar 2015の20日目です。
こんにちは。
2015年が終わろうとしている現在もObjective-Cで消耗している者です。
ちなみに2016年も絶賛消耗する見込みです。
地獄の業火に焼かれながら、それでもSwiftに憧れる
でもプロダクトコードに入れるにはちょっと(///
という訳でまずはユニットテストだけSwiftで書くことになりました。
ユニットテストだけSwiftで書く場合
普通にSwiftでテストクラスを追加し、
テストしたいObjective-CのクラスをBridging-HeaderでimportすればOKです。
以下はHogeObjcClassというObjective-CのクラスのisValidメソッドをテストしたい場合の例です。
/* Bridging-Header */ #import "HogeObjcClass.h"
/* Swiftで書いたテストクラス */ import XCTest class HogeObjcClassTests:XCTestCase { func testObjcMethod(){ XCTAssertTrue(HogeObjcClass.isValid()) } }
プライベードメソッドをテストしたい場合
で、ちょっとめんどくさいのがテストしたいメソッドがObjective-Cのクラスでプライベートな場合です。
そんな場合はHogeObjcClassのカテゴリを作成し、
/* プライベートメソッドテスト用のカテゴリ */ #import "HogeObjcClass.h" @interface HogeObjcClass (PrivateTest) + (BOOL)privateMethod; @end
さらにBridging-Headerで作ったカテゴリをimportします。
/* Bridging-Header */ #import "HogeObjcClass.h" #import "HogeObjcClass+PrivateTest.h"
こうしてあげるとSwiftのテストクラスでObjective-Cのプライベートメソッドが使えるようになります。
/* Swiftで書いたテストクラス */ import XCTest class HogeObjcClassTests:XCTestCase { func testObjcMethod(){ // プライベートメソッドが使える XCTAssertTrue(HogeObjcClass.privateMethod()) } }
新しくプロジェクト作る場合はおとなしくSwiftで書きましょうということで、、、
Sansan株式会社に入社しました
2015年11月20日付でアシアル株式会社を退職し、11月24日にSansan株式会社に入社していました。
Sansan株式会社では「名刺管理Sansan」のiOSアプリ開発を担当します。
Sansan株式会社に入社した理由
前提としてベンチャー企業に限定していました。 時代を動かそうとしている流れの中心に行きたいという思いがあって、 その中でも明確なビジョンとビジネス戦略を持ち、技術に対する考え方が共感できたことがSansan株式会社に入社した理由です。
技術に対する考え方
これまで仕事でいろいろなタイプのエンジニアと出会いました。 技術を表現の手段と捉えていたり、学術的な興味から技術をとことん探求する人など様々です。
自分にとっての技術とは「問題を解決する手段の一つ」です。
最も現実的な手段の選択としてのシステム/アプリケーションを開発する者でありたい、 そういった価値観を持つ人々と価値創造に取り組みたかったという感じです。
入社して嬉しかったこと
最新のMacBookProが用意されていた
入社前には希望するキーボード配列しか聞かれなかったのでちょっと不安だったのですが、 15インチMacBook Pro Retinaディスプレイモデルの搭載メモリを16GBにアップグレードしたバージョンが用意されていました。
メモリ8GBでXcode動かすとかかなり厳しいので、入社した時点で「この会社は分かってる!」と安堵しました。
ソースコード管理がGithub
開発するソースコードがGithubのプライベートリポジトリで行われており、 コードレビューなどもPullRequestベースなので違和感なく開発サイクルに合流することができました。
エンジニア向けの福利厚生が充実している
技術書籍だけじゃなく個人のモバイル端末の購入補助があると知って驚きました。
確かにモバイルアプリの開発者は最新の端末を普段から使って新機能を知らないといけないので、 モバイルアプリ開発をやっている会社は同じような制度を設けてほしいですね。
毎週木曜日は技術顧問の方にいろんなことを教わることができるのも大きいです。
エンジニアのモチベーションが高い
当然初期に作られた部分の技術負債などはあるわけですが、 それに対するエンジニア陣の「絶対直してやる」という決意、エネルギーがすごいです。 エンジニアは周囲からすごく期待されるポジションなので、仕事に燃えたいタイプの方は非常に合うと思います。
今後
勉強会など通じてどんどん発信していきますのでよろしくです。
ヨークシンで再会した時にレオリオが念を覚えていた理由
10年以上経って今更だけど気づいたから書いとく。
ハンターハンターのコミックス8巻P142で
ヨークシンシティにてゴンとキルアに再開したレオリオが「念を覚えた」という主旨の発言をしています。
これ10年ぐらい普通にスルーしてたんですが
おそらく作中で才能的に最高クラスであるゴン・キルア(1000万人に1人の才能)ですら師匠に無理やりこじ開けてもらって覚えた念を、同時期にハンター試験でもあまり評価されてなかったレオリオがなんの修行もせず自然に覚えるのはおかしいですよね。
念の覚え方として
- 瞑想や座禅などで自分のオーラを感じてうんぬん
- 念を込めた攻撃(もしくはそれに準ずる念の衝撃)を受ける
というルールがある。
レオリオとゴン・キルアで異なるのはハンター試験中(コミックス2巻P22)で念使いであるヒソカに思いっきり殴られている点。
この戦闘時のヒソカのずば抜けた身体能力は、おそらくはオーラを纏(もしくは錬)の状態にしていたためでオーラによる肉体強化がされていたと考えられる。 ※念使えるのに戦闘時にわざわざ絶状態にしてるのは不自然だし
そして念を纏った状態の顔面パンチをクリティカルされたレオリオは念の覚え方の2番目の条件を満たして念能力が開花した、というのがぼくの推察です。
ただこれだと「使えるようになってた」が正しくて、レオリオ本人の「覚えたぜ」という能動的な発言はちょっと食い違ってるかと思いきや、
本人はヒソカに殴られたこと覚えてない設定なんだよね!
なのでレオリオ本人としては「なんかよく分かんないけど気づいたらオーラが見えるようになってたから自分で念覚えたっぽい」という理解なんでしょう。哀れ。
完全に殴られ損だけど殴られたことを覚えてなくてヒソカとの因縁(ほぼ良いことない)が構築されないあたりがこの人の幸運値の高さを示してますねぇ。幸運度は作中随一な感じだし。
まじで今更な上にどうでもいいね。
コミックス派なので32巻早く読みたいです(^q^)
- 作者: 冨樫義博
- 出版社/メーカー: 集英社
- 発売日: 2012/12/04
- メディア: コミック
- 購入: 12人 クリック: 637回
- この商品を含むブログ (89件) を見る
- 作者: 冨樫義博
- 出版社/メーカー: 集英社
- 発売日: 2012/12/28
- メディア: コミック
- 購入: 14人 クリック: 505回
- この商品を含むブログ (100件) を見る