2013/11/26

【iOS】Estimote Beaconを入手しました!

後藤です。

タイトルの通りですが、とうとう新しいもの好きの弊社もEstimote Beaconを購入しました。ちょうど社内が(というか主に社長がですが)BLEブームでもあったのです。ベーコンレタスエッグではなく、Bluetooth Low Energyのほうです。ベーコンレタスエッグというよりは、社長は今はCoCo壱番屋にハマっているという話です。
注文したと聞いたのは1ヶ月近く前だった気がするのですが、先週くらいに発送の通知が届いたそうで、本日ケイフィールドに到着しました。Polskaからの荷物。一時期ポーランド語を勉強したほどポーランド好きの私は、感動しました。しかし、発送までけっこう時間がかかるみたいですね。

そもそもiBeaconとビーコンとEstimote Beaconの違いがよく分かっていなかったのですが、
・iBeacon:iOS7から使えるようになったApple(iOS)においてのビーコン機能の名称
・ビーコン:赤外線や無線などの電磁波?で情報を取得したりする技術・設備の総称
・Estimote Beacon:iOS/AndroidにBLEで色々送れるEstimote社の機器
という認識でよかったでしょうか。 そういう前提で話を進めます。とりあえずこの記事では開封とデモアプリを動かすところの紹介です。




Estimoteのサイトでも見れますが、緑のものだけ透けて見える感じの箱に入っています。中身は↑で全て。外箱と内箱、お手紙にもなっているクラフトのカバー?と、シールとEstimoteのCEO、Jakub Krzych氏の名刺のようなもの。




カバーはこんな感じになっていました。受取人宛てのお名前と、Jakub Krzych氏のサインが手書きで入っております。ご本人のサインでしょうか。だとしたら粋ですね。(発送は彼のサイン待ちで遅くなっているのでしょうか。)


カバーのお手紙によるとデモのアプリがあるとのこと! Estimoteで検索するとすぐ見つかったので、さっそく遊びました。




多分だいたいの距離を調べられる画面です。左が箱のすぐ上に置いたときのキャプチャ、右が3メートルくらい離れたときのキャプチャです。ちゃんと大体リアルタイムで内側の円の方に動いたり外側へ動いたりしました。


時間を作って色々iOSアプリも作ってみたいです…! とりあえず今回は以上です。後藤でした。

2013/11/19

2015年新卒採用情報更新&説明会情報など

後藤です。

今までブログがテンプレートそのままだったので、ヘッダ画像を作ってみました。少々散らかってますが、それもケイフィールドっぽいかなと思っています。もしかしたらそのうちダメ出しをいただくかもしれないので、そうなったらお蔵入りになるでしょう…。

今回ですが、2015年新卒の方向けの採用の情報を更新しましたのでそのご報告です。ページはこちら
2015年、今度の12月から就活がスタートする子たち向けの内容に更新しました。人物像やメッセージのあたりは変わっていないのですが、募集要項のあたりがちょくちょく(教育制度のところが手厚くなりました)と、採用の選考フローが少し変わったのでそこが変わっています。あと、ケイフィールドの採用活動はエン・ジャパンさんを通してのみとなりますので、そちらへのリンクも貼ってあります。一応ここにも張っておきます。(エン・ジャパンさんの方に載っている情報で弊社の採用ページと少し違う点がありますが(選考フローなど)、エン・ジャパンさんの方が修正依頼中で弊社のページに載っているものが最新のものとなります。)



エントリーの受付は12月のオープン開始からとなるのでまだできませんが、オープン前からお気に入りとかの機能は使えたような気がするので、興味のある方はぜひ目をつけておいてくださいませ! 人事ブログも、何かあるごとに更新していく予定です。

ちなみに、そちらにも近々載せますが、会社説明会の日程も決定しております。現在のところ、下記の6回を予定しています。
・2014/02/08(土) 午前・午後 AP名古屋 7F会議室
・2014/02/15(土) 午前・午後 AP名古屋 7F会議室
・2014/03/02(日) 午前・午後 ウインクあいち 1310

詳しい日時等はまた決まり次第こちらやエン・ジャパンさんの方で更新していきます。募集状況によってはさらに追加する可能性もございますが、基本的には上記の6回のみの予定ですので、参加をお考えの方がいらっしゃいましたらぜひ予定を空けておいてくださいませ。

エン・ジャパンさんの写真にも映っている4人がケイフィールドの全員です。写真うつりが悪く、なんだかすごくふくよかに見える女子がおりますが、実物はもう少し細いと…思っています。説明会にはおそらく私も手伝いで足を運ぶと思われますので、ぜひそちらでお会いしましょう!


それでは、採用担当ではありませんが、後藤でした。

2013/11/13

インターンシップ報告会に参加してきました 他

 後藤です。

 先日の7日(木)に愛知淑徳大学さん、9日(土)に椙山女学園大学さんのインターンシップ報告会・懇親会が行われ、山田さんと一緒に参加してきました。
 今のことはわからないものの、自分の出身大学がそこまで就活に力を入れていた印象がなかったので、2大学さんの取り組みにはすごいなあと驚かされました。淑徳さんのお菓子は食べれなかったのですが、椙山さんではおいしいご飯をがっつり頂きました…おいしかったです!
 報告会では、大手企業さんのインターンシップの話だとか、他のうちと似たような業種のところとか、うちよりもちょっと大きいくらいの中小企業とか、いろんな企業さんのインターンシップの話が聞けました。また、特にその2大学さんのインターンシップに求めるものがどういうものなのか何となく感じたので、それも含めて これからケイフィールドのインターンシップに来る子たちに もっと良いものを与えられるよう考えていきたいです。

 また、なんと淑徳さんのインターンシップ概論という授業の インターンシップ担当者の講演というところに呼ばれまして、本日 社長と山田さんと私で、学生さんたちの前でお話してきました。社長が、経営者視点でのインターンシップや就職についてのお話。山田さんが インターンシップ主担当ということで インターンシップでの取り組みとインターンシップ担当者としての思い。私はケイフィールドのインターンシップを経験した者としての インターンシップ担当者の話。という感じのお話をさせて頂きました。
 後藤は初めて人前で講演(?)を行ったことになるわけです。なんと私の話は20分も時間を頂きまして、最初はそんなに話せるだろうかとすっごい不安だったのですが、 得意の文章にして伝えたいことをすごい書きまくったら、それを読んだのですが 28分も話をしてしまっていました。長くなってしまって学生さんには申し訳ないばかりです。。 もともと合計60分の予定でいたのを90分まるまる使っていいと言っていただけていたので時間的には別に大丈夫だったのですが。社長と山田さんはちゃんとご自分の時間内で収まったのに、私は…(でも、これでもかなり削ったのです)

 多分、自分が学生だったときにまわりがそうだったから思うのですが、今日お話したことも ちゃんと聞いて何か考えてくれる子は半分もいないと思っています。でも、いちおう私と、それに付き合わされる山田さんも、いつも本当に インターンシップに来る子たち全員が 全員それぞれなにか将来・就活の役に立つものを持って帰ってもらいたいと思いながらがんばっているのです。 そういった中で、考えていることを 淑徳さんの授業と私たちの中できめた担当の内容に沿うように組み立ててお話しして、(インターンを経験した)担当者としての思いはすべて話してきたと思います。 少しでも多くの学生さんが、何か感じて考えるようになってくれたらなあ、と思います。


 ここからは余談です。スマートウォッチがほしくて色々探しているのですが、中々ぐっとくるものが見つかりません。 条件は、iPhoneとなにかしら連携ができること、できれば中のアプリとかを開発できるSDKみたいのがあること、画面がカラーなこと、見た目がいいかんじなこと、くらいに思ってるんですが。
 Nikeかどこかのやつとかも気になるのですが、今つけてるFitBitとあんまり変わらないうえに私はほとんど運動をしないし…(ちなみにソフトバンクヘルスケアの記事を書いた山田さんは、もう飽きたそうで解約していました)。 あと気になってるのがSonyのXperiaのやつ、ですが、Xperiaとしか連携できないそうなのが…。もともとiPhoneにする前は 次はXperiaにしようと思っていたんですけど、iPhoneにしたときソフトバンクに変更してしまったのでXperiaはもうゲットできないし…。Docomoのおかえり割みたいのを使おうかどうか悩むところですが、iOSのツールを使いまくってしまってしまっている身としてはiPhoneがなくなるのはちょっと考えられません。AppleはiWatchを発表するなら早くしてほしいです。。

 後藤でした。来週は、元気だったらAWS-HUBとIT飲み会に参加させて頂く予定なので(飲んでばかり…)(お酒はあんまり、飲みません!)そのこととかでブログを書けたらと思います。後藤でした。

2013/11/05

【Objective-C/iOS】Segueで子ビューに移ったらエラーが出る

後藤です。ごぶさたです。

恥ずかしながらdelegateについて何となくしかわからずにいたので、このままではいけないと思い、すごく初歩的なとこからdelegateの練習をしておりました。その中でエラーが出て、???となったところについて、書きます。ちなみにエラー内容はdelegateとはあまり関係ないです。

【前提】
・Xcode5/Mac OSX 10.8
・ストーリーボードを使います



上記のような、とても簡単な構成になっています。動作は下記のような感じです。
1. ナビゲーションバーがついた親ビュー(黄色)の真ん中にある「Button」ボタンを押す
2. pushセグエで子ビュー(ピンク)に移る
3. 子ビューの真ん中にある「Touch me!!」ボタンを押すと、親ビューのViewControllerのメソッドに書いたアラートが出る

が、親ビューの「Button」を押すと下記のようなエラーが出ます。
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

ちなみにナビゲーションバーの戻るボタンのところを見てみても、前のビューがsubViewとなっていてどう見てもおかしいです(下図左)。ちなみにここでpushから戻ると、得体のしれない黒いSubViewが間にあり、そこから親ビューに戻る風になってしまっています(下図右)。この中間にあった黒いビューのナビゲーションバーの戻るボタンを押すと、いろいろエラーが出て落ちてしまいます。



ちなみに一応セグエをmodalにして試してみたりもしましたが、下記のような違うエラーが出るだけでやっぱり落ちてしまいます。(英語の意味は…読んでいません。)
Warning: Attempt to present  on  while a presentation is in progress!

これなんですが、エラーの原因はとても初歩的なものでした。
親ビューの方のボタンから右クリックで紐をのばして、そのまま子ビューに移るようなセグエを作っていたのに、そのボタンのIBActionのメソッドの中でもセグエで遷移するperformSegueWithIdentifierを書いてしまっていたので、二重でセグエを通ることになっていたみたいです。
- (IBAction)touchButton:(id)sender {
    [self performSegueWithIdentifier:@"gotoSubview" sender:self];
}
このperformSegueWithIdentifierのメソッドをそのままコメントアウトするだけでちゃんと動くようになりました。 近日、TableViewCellのセルをタッチしたらセグエで遷移する〜とかいうのばかりを書いていて、ボタン押したらそのままセグエが発動するようなものを書いたのが久しぶりだったので勘違いしていたみたいです。が、ボタンを押して画面遷移するときってIBActionのメソッドの中って何を書いていたっけ??空白?はかっこ悪いので違う気がするんですが、思い出せない…。 追記: ふつうにボタンとビューをセグエでつないだときは別にメソッドとか何も追加されなかった! ちなみに、今回のコードはこんなかんじでした。 ■ ViewController.h(親ビューのほう)
#import 
#import "subViewController.h"

@interface ViewController : UIViewController

- (IBAction)touchButton:(id)sender;

@end
■ ViewController.m
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (void) helloDelegate
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
                                                    message:@"\Hello, delegate!/"
                                                   delegate:nil
                                          cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}

- (IBAction)touchButton:(id)sender {
//    [self performSegueWithIdentifier:@"gotoSubview" sender:self];
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    subViewController *svc = (subViewController *)[segue destinationViewController];
    svc.delegate = self;
}

@end
■ subViewController.h(子ビューのほう)
#import 

@protocol subViewControllerDelegate;

@interface subViewController : UIViewController

@property (nonatomic, assign) id  delegate;
- (IBAction)touchSubViewButton:(id)sender;
@end

@protocol subViewControllerDelegate 
- (void) helloDelegate;
@end
■ subViewController.h
#import "subViewController.h"

@interface subViewController ()
@end

@implementation subViewController
@synthesize delegate;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (IBAction)touchSubViewButton:(id)sender {
    [self.delegate helloDelegate];
}

@end
もっと良い書き方などありましたらぜひご指摘くださいませ。 後藤でした。