Category Archives: Ios

株式会社プラスアールでは、iOS ( or Android or PHP ) のエンジニアを募集しています。
http://www.plusr.co.jp/recruit/programmer

今回も下の問題が解けたら書類選考なしにいたします。さらに、面接の際にバックジョイをプレゼントしちゃいます。

image_backjoy

求人への応募はしないという方でも、問題が解けた&弊社まで景品をとりに来ていただけるようでしたら、先着10名様に限りバックジョイをプレゼントいたします。

こぞってご応募ください。

[問題]

以下の表はそのマスとその周囲8マスに含まれている爆弾の個数を表しています。フィールドに含まれている爆弾の位置を(x,y)としたとき、その積k(=x*y)が小さい順にアルファベットを並べるとある単語が完成します。

マインスイーパの説明

解けた方は次のメールアドレスまでご連絡ください!
[完成したメッセージ]-[kの総和]@plusr.co.jp
※[]は要りません。
※作成したプログラムのGithubへのリンク又は、プログラムを添付してください。
※面接の日程についてはメールで調整致します。

求人に応募しない方は、”解けた!”というご連絡だけでも構いません。
景品だけ希望の場合はその旨ご記載ください。
例:「景品ほしい」

よろしくお願いいたします!

※求人の定員に達し次第終了しますので、解けた方はすぐにご連絡下さい。

1 2 3 4 5 6
1  1 i  2 p  2 a  1 g  1 x  1 u
2  1 c  2 t  2 e  2 h  2 r  2 a
3  1 g  2 q  1 i  2 r  3 n  3 z
4  2 r  2 d  2 g  2 o  3 e  2 o
5  2 v  2 n  2 o  1 w  3 y  2 s
6  2 b  2 t  2 r  1 p  2 w  1 a
7  2 g  2 u  2 i  1 x  3 q  2 u
8  2 e  2 t  2 s  1 m  2 x  1 n

リリース後に大きいバグが発見される

→急いで修正しappleに緊急審査を依頼

→12時間後にリリースされ安心

 

ということが最近2回ありまして(反省も多いのですが)、メモを残しておきます。

 

既に緊急審査(expedited review)について書かれている記事も多く、annaok氏の投稿などを見ればやり方や様子もわかるのですが、申請したものの通らなかったという情報もよく目にするので、何かの付加情報になればと。

特に申請の際に悩ましいのは、「内容説明」の自由記入部分かと思いますので、その辺りを中心に箇条書きしておきます。

 

内容説明について

・日本語と英語を併記するのが良い(日本語しっかり+英語は自動翻訳 でも通った)

・バグの再現手順は細かく(OS等の指定+起動から押すボタン一個一個を順に+症状)

・ボタン名は日本語でも通じた(英語版で起動しても日本語画像なボタン もOKだった)

・ほとんどのユーザが使うことをアピール(毎日使う機能です 等 事の重さの説明)

・クレームがたくさん来てることをアピール(不要かもしれない…)

 

手順の細かい話

・修正版を申請→リクエスト投げる の順番は必ず守る。逆だとダメなことがある模様。

・審査落ちした際に担当者とやり取りをする”問題解決センター”は、新ビルド申請後は見られてない(多分)ので、ここに書いてから(再)申請するとメッセージが届かないことに注意する

 

頻繁にやると通らなくなるもの…という情報は今の所聞いたことはありませんが、通らなくなってからでは遅いので、本当に急いでいる時のみに使用しています。

 

余談 WWDCの影響なのか、今週は審査がいつもより長いです…(平均12日ぐらい。。)

 

 

Swift2.0となり多くの関数やクラスが追加、削除されました。その中の幾つかを紹介したいと思います。

・実装を隠したい場合用いる構造体
実装する型を隠蔽するための型が作られました。これは実装がArrayやDictionaryにかかわらず、同じ型として扱うことができるようになります。

・struct AnyForwardCollection
前方向コレクションとして扱うことができます。Indexは常に増えることしかできず、減少させることはできません。
・struct AnyBidirectionalCollection
双方向コレクションとして扱うことができます。Indexは増減させる事ができます。最後から参照することはできません。
・struct AnyRandomAccessCollection
コレクションとして扱うことができます。Indexは増減させる事ができます。最後から参照することもできます。
・protocol AnyCollectionType
これらの構造体はAnyCollectionTypeを実装しています。このプロトコルが実装されている場合、===と!==を使うことができます。AnyCollectionTypeである場合、ラップしているコレクションに対して、’==‘や’!=‘を行った時と同様の結果が得られます。

・struct AnyGenerator
Sequenceとしても扱えるGeneratorとして用いることができます。
・struct AnySequence
配列操作が可能な型として隠ぺいすることができます。

・CFunctionPointerがなくなる
影響はよくわからない。

・CollectionTypeの必要なメソッドが追加
countやmapなどほとんどのコレクションで実装されていた機能がCollectionTypeに追加されました。これによってCollectionType全般を扱うような関数で扱える幅が増えました。

・mapなどの関数が削除
CollectionTypeに実装されるようになったので、実質影響はないがコンパイルエラーになるので修正は必要

・protocol CustomPlaygroundQuickLookable
実装することで、Playgroundで値が表示されるようになります。

・protocol ErrorType
実装されているenumをthrowすることができます。

 Social.framework を使う事によって、非常に簡単に様々なSNSに投稿することができる。このiOS8.3のSocial.frameworkにはバグがある。設定アプリでFacebookにログインして、Facebookアプリをインストールして、アプリを起動している状態の場合にバグが起こる。setInitialText:でテキストが設定されない。画像を添付してあっても実際には投稿されない。addURL:でURLを添付しても意図したものでなくなるなどの症状が発生する。UIActivityViewControllerでも同様のバグがみられる。
 このバグは、Appleに報告されているようなので次のバージョンでは治ると思われる。
 このバグを回避するには、Social.frameworkを使わないようにする必要がある。Facebook iOS SDKを組み込むことで回避することができる。

参考

http://stackoverflow.com/questions/29862869/ios-8-3-slcomposeviewcontroller-facebook-bug
https://developers.facebook.com/bugs/962985360399542/

追記 2015/7/2

この問題は現在解決されています。

Objective-CではURLエンコード/デコードをするのがちょっと面倒です。

JavaScriptのencodeURIComponent()と同じように使えるC関数を提供するライブラリを書きました

使い方は単純です。

AZEncodeURIComponent(@"日本語"); // -> "%E6%97%A5%E6%9C%AC%E8%AA%9E"
AZDecodeURIComponent(@"%E6%97%A5%E6%9C%AC%E8%AA%9E"); // 日本語

CocoaPods経由でインストールできます。

pod "AZEncodeURIComponent"

単純なライブラリですが、何故かこれだけを提供するものがなかったので書きました。。