2015年06月16日

Apple Watch対応のアプリを作ってみました

iOS担当の田中です。
Apple Watchが発売され結構な日が経ちましたが、開発するにあたりどんな感じか確かめるために簡単なアプリを開発してみました。

機能


・地図の表示
・コメント入力
・情報保存

Apple Watch側はこの3機能のみです。
iPhone側は保存データをリストに表示したり編集したりと実装してみましたが、今回はApple Watch側の部分にのみ触れていきたいと思います。

動作


地図表示


アプリ起動時は現在地を表示しています。

map1.png

地図を表示するまでのコードはこんな感じになっています。
#import <CoreLocation/CoreLocation.h>

@interface InterfaceController()
<
  CLLocationManagerDelegate
>

@property (weak, nonatomic) IBOutlet WKInterfaceMap *map;
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic) CLLocationManager *locationManager;

@end

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    
    self.locationManager = [CLLocationManager new];
    self.locationManager.delegate = self;

    [self.locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *nowLocation = locations.lastObject;
    double lat = nowLocation.coordinate.latitude;
    double lng = nowLocation.coordinate.longitude;
    
    MKCoordinateSpan currentSpan = MKCoordinateSpanMake(0.01f, 0.01f);
    CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(lat, lng);
    MKCoordinateRegion region = MKCoordinateRegionMake(coordinate, currentSpan);
    
    self.coordinate = coordinate;
    
    MKMapPoint newCenterPoint = MKMapPointForCoordinate(coordinate);
    [self.map setVisibleMapRect:MKMapRectMake(newCenterPoint.x, newCenterPoint.y, currentSpan.latitudeDelta, currentSpan.longitudeDelta)];
    [self.map setRegion:region];

    [self.map addAnnotation:coordinate
               withPinColor:WKInterfaceMapPinColorPurple];
}

iPhone側で位置情報取得の許可を取っていない場合は位置情報が取得できないため、先に確認処理を行う必要があります。

文字入力


位置情報の保存に合わせてコメントを残せるようにしました。
Apple Watchではキーボードが使えないため、自前で作成するか絵文字か音声で文字を入力することになります。

map2.png map3.png

絵文字や音声入力のviewの表示は以下のコードで使用することができます。

[self presentTextInputControllerWithSuggestions:nil
                               allowedInputMode:WKTextInputModeAllowAnimatedEmoji
                                     completion:
 ^(NSArray *results) {
    if (results.count) {
        id result = results.firstObject;
    }
 }];
 

入力後はresultsの中に入力結果が入っていますので取得後適切な形で処理をします。

保存


最後に取得したデータをiPhone側に保存します。

[WKInterfaceController openParentApplication:dict
                                       reply:
 ^(NSDictionary *replyInfo, NSError *error) {
 }];

このメソッドを使用することによりiPhone側にデータが送られます。
dictの部分に保存したいデータをDictionaryにしています。

あとはiPhone側のAppDelegateに以下のメソッドを追加しデータを取得し保存処理を行います。

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo))reply
{
}

以上の流れになります。

今の仕様だと大分iPhone側の処理に依存してしまい制限が大きいですが、Watch OS 2.0からネイティブの開発が可能になるはずなので自由度は大きく広がりそうです。
posted by Seesaa京都スタッフ at 18:02| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする

2015年06月08日

もうWebView実装は不要!?「Chrome Custom Tabs」を一足先に試してみた

はじめに

渋谷オフィスから 今中 がお届けします。
ご無沙汰しております。

Google I/O 2015が開催されました。
私は六本木ヒルズ近くの映画館でサテライト上映されていたものを鑑賞するイベントに参加して、キーノートを拝見しておりました。
映画館のシアターをひとつ、一晩借り切るという非日常が楽しかったです。

さて、そんなGoogle I/Oで発表された話題から、「Chrome Custom Tabs」についてお届けしたいと思います。

続きを読む
posted by Seesaa京都スタッフ at 21:10| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

ベトナムとコミュニケーションと僕

こんにちは!ベトナムから川口です。
ベトナムに来て1年6ヶ月ほど経ちました。気温が高く(40℃近く)灼熱のハノイです。あまり見ることができない青い空と太陽も見えるし、一番天気がいい時期じゃないでしょうか。青い空と太陽って健康的ですね。

さて、今回はベトナムでのコミュニケーションについて書きたいと思います。
僕は英語はたいして話せないし、ベトナム語もまだまだです。日本語はなんとか話せるかなといった語学レベルですw

僕が英語ができないということが大きいのですが、基本的には通訳スタッフを介して日本語で物事を伝えています。ただ通訳スタッフも日本語が完璧なわけではありません。
まず、通訳スタッフにわかりやすく伝えることが重要です。日本人同士だとある程度、意図を汲み取って理解することができますが、ベトナム人はそれが難しいようで細かいところまで伝えないといけません。
初めの頃は通訳スタッフにIT用語の知識がなかったため理解してもらうのが大変でした。アルファベットの発音も違うため、「URL」「ipa」「apk」などが通じませんでした。ちなみにURL→ウラル、ipa→イーペーアー、apk→アーパーカーです。

一番不安なのが最終的にエンジニアやQA(テスター)に正しく伝わってるかどうかわからないところです。スタッフ同士、会話が始まって、軽い言い合いになってすぐに解決して…。みたいなこともあります。「そこも通訳してくれますか?」って言うと「大丈夫です。問題ありません。」と。。そこは通訳スタッフを信頼するしかないです。

言葉の壁を超えて伝えるという作業はとても大変だと実感しています。


少しでもスタッフたちと直接話しがしたいという思いが強くなり、時間を作ってベトナム語を勉強しています。
ベトナムは中国に支配されていたため、もともとは漢字を使っていたようですが、その後、フランスの影響でアルファベットを使うようになりました。声調記号がついてますが、アルファベットなのでなんとなく読めるかなといった感じです。
発音に関しては中国の影響を受けており、とにかく難しいです。同じ「あ」でも声調が6つあり、使い分けなければなりません。
まずは発音と単語のボキャブラリーを増やすのが目標です。
覚えた単語はすぐ使わないと忘れてしまうので、すぐに使うようにしてます。

スタッフたちも日本語の勉強を頑張っていて、朝礼では単語学習、週二回業務終了後には読み書きや発音の学習をしています。
授業の声が僕の席まで聞こえてくるのですが、笑い声が絶えず楽しそうです。ベトナム人は技術に対してもですが、勤勉で学習意欲が高く、吸収も速いと思います。

たまにスタッフ同士、日本語で話してる姿を目にします。この間は「お疲れ様です」「ほんの気持ちです」と言ってジュースを渡していました。なんとも言えない良い光景でした。

業務上のチャットでも「了解です」「お願いします」「ありがとうございます」など簡単な言葉は日本語で打つようになっています。
徐々にですが上達してるのかなと。

僕がベトナム語でスタッフに質問してスタッフが日本語で答える、そんな会話をしたりします。
お互い相手の母国語で話すと、ぐっと距離が縮まるなって感じてます。

信頼関係を築いていくと共に開発業務に活かせるよう、お互い語学学習を頑張っていきたいと思います。

blog_language_study.jpg
posted by Seesaa京都スタッフ at 10:00| Comment(0) | ベトナム開発 | このブログの読者になる | 更新情報をチェックする