Dance with Tech

プログラミングとか学んだことの備忘録ブログです。

iOSアプリ(9対応)のリリース準備・対応で苦労したこと5つとおまけ

リリースというものは、そう何回もやるもんじゃないので方法を忘れがちです。

覚えている今のうちにメモしておきます。

※ちなみにXcode7を使っています。

f:id:kmatz90:20151108195807j:plain

 

1.リリースするための事前準備が意外と多かった

  • DistributionタイプのCertificateが必要
  • App IDが必要

※ここで出てくるBudle IDとXcode上のBundle Identifierがイコールじゃないとリリースできません

  • DistributionタイプのProvisioning Profileが必要

方法はこちらが参考になりました。

 

2. 1度iTunes ConnectにBuildしたらBuildの値を上げないと再Buildできない

アプリをリリースするにはiTunes ConnectにXcodeからBuildする必要があります。

※方法はこちらを参照。

しかし、Buildし終わってから、

「やっぱりあそこはこうしよう!」って思い立って修正したくなります。

きっとなります。ほぼなります。必ずなります。

その際はXcodeから、

「General」にある「Build」を「1.0.1」のように上げる必要があります。

そうすれば別のBuildとみなしてくれて再度Buildできます。

ちなみにリリース後にアップデートするときは「Version」を上げます。

 

3.スクリーンショットAppleの画像などがあると商標違反でリジェクトされる

アプリ申請時には、

アプリの見せ場的なものを載せたスクリーンショットを、

一緒にアップすることになるんですが、

そこにAppleの商標情報があるとリジェクトされます。

今回のアプリは見せ場的なシーンが少なかったので、

作ったアプリのアイコンが写っているホーム画面のキャプチャをアップしたら、

Apple製品のアイコンも載ってしまい怒られましたw

 

4. 「広告表示してないのにAdvertising Identifier使ってるよ」ってリジェクトされた

Advertising Identifier but does not include ad functionality...

「Advertising Identifier」っていうのは広告識別子のことです。

広告タグとかリンクコードの認識で大丈夫だと思います。

iADとか使ってないし、心当たりがなかったのですが、

nend、i-Mobile、Adstir?とかは裏で用意してるだけでも引っかかるようです。

※文字列だけでも引っかかりました

これ地味に引っかかる人いるんじゃないですかね?

 

5. リリース後のApp Storeのリンク作成

通常、PCのiTunesApp Store)からiOSアプリを探そうとすると結構苦労します。

(というかできるのか?)

そんなときは「Link Maker」を使うと簡単に辿り付けますし、URLも発行できます。

検索するときの注意点として、日本の場合は「Store Country」を「Japan」にし、

iOSアプリの場合は「Media Type」を「iOS Apps」に変更する必要があります。

 

おまけ

実はApp Storeの審査は特急で行うように申請ができます。

※方法はこちらを参照

試しに「Android版」が既にリリースされているので、

早く審査してくれって申請してみたところ、

案の定、却下されましたww

通常はクリティカルなバグの修正や、

ハロウィンなどのイベントに合わせたアプリじゃないと、速攻で審査してくれないようです。

ご利用は計画的に。

詳解 Swift

詳解 Swift

 

 

IT界隈やエンジニアが好きそうな名言・ことわざ10選+おまけ

IT関係の人やエンジニアが、読んでやる気が出るような名言や格言を10個集めました。

読んで元気を出しましょう。

f:id:kmatz90:20150827010154j:plain

では張り切ってどうぞ!

 

1.Keep it simple, stupid(Kiss)

訳:シンプルにしておけ、この間抜け

「誰が見ても分かりやすくしろ」ということです。

レオナルド・ダ・ヴィンチ

単純であることは究極の洗練だ

 と言っています。

 

2.Done is better than perfect

訳:完璧を目指すより、まず終わらせろ

-マーク・ザッカーバーグFacebook

 

3.Get out of the building

訳:ビルの外に出よう

-Lean UX(書籍)

建物の中に籠ってないで、

外に出てユーザーの声を聞きに行こうということです。

 

聞いた話で、インスタグラム社の最高のグロースハックは、

ユーザーと飲みに行くことだそうです。

 

4.Stay hungry, stay foolish

訳:貪欲であれ、愚直であれ

-スティーブ・ジョブズApple

 

5.Computers are useless. They can only give you answers.

訳:コンピューターなんて役に立たない。だって答えを出すだけなんだから

-パブロ・ピカソ(画家)

 

6.Life is not fair.Get used to it.

訳:人生は公平ではない。そのことに慣れよう

-ビル・ゲイツMicrosoft

 

7.Reinventing the wheel

訳:車輪の再発明

「広く受け入れられ確立されている技術や解決法を知らずに、

同様のものを再び一から作ること」を指します。

オープンソースなど、既に使えるものがあるのに、

その恩恵を無視してムダなことをするなということですね。

 

8.We are What We Choose

訳:これまで選択してきた結果が、今の私たちなのです

-ジェフ・ベゾス(アマゾン)

 

9.Change before you have to

訳:変革せよ。変革を迫られる前に

-ジャック・ウェルチゼネラル・エレクトリック

 

10. IE Horobe!

訳:IEは滅べ!

-世界のエンジニア

 

おまけ:Facebookの「5つの経営理念」

  1. Focus on Impact( 影響力に集中しろ)
  2. Move Fast(早く動け)
  3. Be Bold(大胆であれ)
  4. Be Open(オープンであれ)
  5. Build Social Value(社会的価値を築け)

 

ジェフ・ベゾス 果てなき野望?アマゾンを創った無敵の奇才経営者

ジェフ・ベゾス 果てなき野望?アマゾンを創った無敵の奇才経営者

 

エンジニアが使うキーボードは東プレのリアルフォース1択!

東プレのREALFORCEを使い初めてから、1年以上経過しました。

f:id:kmatz90:20150715194712j:plain

もうこれに慣れてしまうと、他のキーボードには戻れません。

その理由を以下にまとめます。 

 

静電容量無接点方式を採用

文字だけでは全く意味が分からないですね。

ウルトラ簡単に言うと、最小限の力でタイピングできます。

セブンイレブンとかにあるATMのキーボード(ほぼテンキー)も、

同じ静電容量無接点方式を採用しているようなので、

試し打ちしたい人はセブンに行くといいかもw

 

小指などでタイプするキーは軽めに押せる仕様になっている

僕が購入したREALFORCEは91Uというシリーズで、

キーによって重さが異なっています。

例えば、「a」などの小指でタイピングする部分は、

キー荷重が軽めに設定されていて、

マジで無力で押せます

f:id:kmatz90:20150715194732j:plain

逆に「Enter」や「Esc」などは、

そう簡単に反応されるとマズイことがあるので、

それなりに力が必要です(とはいえ軽いけど)。

※キー荷重が統一されているシリーズもあります。

 

有線なので反応が良い

無線だとたまにラグが起きたりするので、あまり好きじゃないです。

また、電池などのバッテリーの心配もあります。

その点、リアルフォースは全シリーズ有線なので心配ありません。

 

Macにも使える(使ってる)

リアルフォースのキーボードはWindows仕様なので、

そのままだとMacでは使えません。

ですが、PCの環境設定を変更して、

「Seil」というソフトを入れれば、

Macでもリアルフォース(Windowsのキーボード)が使えるようになります。

詳細はこちらの方の投稿を参考にしてください。

 

さいごに

買うならテンキーが付いてない方がオススメです。

テンキーがない分スペースを取らないし、

マウスとの距離が近いので、右手の切り替えが高速でできます。

東プレ NG0100 REALFORCE91U

東プレ NG0100 REALFORCE91U

 
東プレ NG01B0 REALFORCE91UBK

東プレ NG01B0 REALFORCE91UBK

 

もっとギークなキーボードにHappy Hackingがありますが、

こちらはカーソルキーや「Ctrl」がないのでオススメしません。

完全にガチな人向けです。

SQLiteの注意点3つ!テーブル作成と同時にINDEX貼れないetc

最近SQLiteを触っています。

f:id:kmatz90:20150617185118p:plain

基本的な構文などはMySQLと同じですが、

決まりごとの違いや若干のクセがあるので、メモしておきます。

 

SQLiteのデータベースはファイルとして生成される

SQLiteはデータベースをファイルとして生成します。

なので、「ファイルを消す=DBを消す」ことになります。

 

SQLiteをインストールしたら(最近のLinuxはデフォで入ってるぽい)、

以下のコマンドで、DBができあがります。

sqlite3 dbname.sqlite3

上記の「.sqlite3」の部分は何でもいいです。

しかし、拡張子がないと、

のちのち何のファイルか分からなくなる可能性があるので、

慣習的に「.sqlite3」とするようです。

 

しかし、DBを作成しただけではファイルが作成されません

DBを作成し、さらにテーブルを作成しなければ、ファイルが生成されないようです。

「DB作ったのにファイルがない!」と焦りました。

 

ファイル(DB)のパーミッションに注意

PHPなどのプログラムからファイル(DB)にアクセスする場合、

ファイルの権限を考慮しないと、UPDATEやINSERTができません。

これは通常のDBと違うので、ハマるかも。

 

テーブル作成と同時にINDEXが貼れない

これは意外でした。

MySQLの場合、

「CREATE TABLE」すると同時にインデックスの設定ができたのですが、

SQLiteだと仕様の問題でできないようです。

むしろ、MySQLのように1度にできる方がマイノリティらしいです。

なので、1度テーブルを作成し終わってから、インデックスを貼る必要があります。

CREATE INDEX index_name ON table_name(column1, column2...)

まあ、仕方ないですね。

 

まとめ

最近使ったコマンドなどをまとめました。

その他、selectなどの命令文はMySQLとほぼ同じです。

 

SQLiteiOSやAndoridのアプリでも使うデータベースなだけに、

今後も使うことがありそうなので、

1度覚えたら忘れないようにしたいですね。

SQLite ポケットリファレンス

SQLite ポケットリファレンス

 

【Swift入門】ディクショナリから値を取り出すときに順番がバラバラになって驚いた

iOSアプリを仕事で作ることになったのでSwiftを始めました。

その中で、勉強したことと少し驚いたことをメモしていきます。

タイトルの件は中盤辺りに書いています。

f:id:kmatz90:20150521221920p:plain

ちなみに僕は、Objective-Cを2年位前に本1冊終わらせたくらいで、

iOSアプリに関しての知見は殆どありません。

 

変数・定数・配列・ディクショナリ(連想配列)の宣言と初期化

上記ではそれぞれの型を指定して宣言・代入をしていますが、

型の指定は省略することができます。

var variable = 10  //Int型になる

省略した場合、自動で型を推測して実装してくれます(型推論)。

Objective-Cではできなかった模様

 

ループと配列・ディクショナリの操作

一般的で分かりやすいですね。

forの条件式の部分に()を付けることもできます。

 

驚いたこと

これが本題です。

上記のような方法でディクショナリから値(キー)を取り出すと、

1,青木さん

2,佐藤さん

3,鈴木さん

ではなく、

2,佐藤さん

3,鈴木さん

1,青木さん

のように、

初期化していた順番とバラバラになって出力されたりします

※順番通りに表示されることもあります。 

これはSwiftの仕様のようで、

 Unlike items in an array, items in a dictionary do not have a specified order.

訳:配列内の項目とは異なり、ディクショナリの項目は指定された順序を持っていません。

公式ドキュメントに記載されています。

知らなくて、何とかしようと頑張ってしまった。。

 

関数(func)

Swiftの関数は「function」ではなく「func」と表現し、

戻り値を返す場合「->」を使って型を指定します。

また、引数に初期値を設定することもできます。

 

タプル(tuple) 

タプルとは、複数の値(型が違くてもok)を1つにまとめられるものです。

配列とはまたニュアンスが違います

実際にコードを見た方が分かりやすいです↓

便利そうですが、後から要素を追加したり削除したりはできないようです。

 

Swiftの暗黙のルールとか空気感

ここまで変数の宣言を「var」で行ってきたのですが、

基本的には「let」を使って定数にし、

変数が必要な部分のみで「var」を使うってスタンスが良いみたいです。

 

あと、変数の宣言で使う型の指定ですが、

基本的には省略しちゃって良いような空気をググってて感じました。

確かにXcodeが変換してくれるとはいえ、

いちいち「String」とかタイプするの面倒。。

この辺りは賛否両論ありそうですが、

ベターな書き方が分からないので、しばらくは他人が書いたコードを読んで修行あるのみです。

 

今後も覚えたことや、気づいたことなどをメモしていこうと思うので、

興味のある方はまた来てください。

プログラミングとかウェブでよく出てくる小難しい英単語30選

よくプログラマー(エンジニア)は、

数学が得意な人じゃないと出来ないとか言われたりしますが、

個人的には数学というより、

英語が出来る(好きな)人の方が有利だと思っています。

だってプログラミングってコメント以外英語ですし。

なでしこ」とかはありますけどw

f:id:kmatz90:20150420221920j:plain

 

僕は学生時代、どちらかと言うと数学が苦手なタイプでしたが、

英語はわりと出来る方でした(というか好きだった)。

もちろん、数学も出来た方が有利に決まっていますが、

普通にご飯を食べていく分にはそんなに必要無いと思います。

 

ということで、

英語の意味を理解すると、仕事が更に捗るんじゃないかと思いまして、

プログラミングとかウェブで出てくるけど、

ちょっと意味が分かりづらい英単語30個をまとめてみました!

 

プログラミングで出てくる英単語30選

英単語読み方意味
allocate アロケート 割り当てる
attr(attribute) アトリビュート 属性
bind バインド 結び付ける
component コンポーネント 部品、構成要素
description ディスクリプション 説明
exception エクセプション 例外
exec(execution) エグゼック 実行
extend エクステンド 拡張する、継承する
extract エクストラクト 抜き取る
fatal フェイタル 致命的な
fetch フェッチ 取ってくる
function ファンクション 機能
grant グラント 付与
ignore イグノア 無視する
implements インプリメンツ 実装する
init(initialize) イニット 初期化する
instance インスタンス 実体
invalid インバリィド 無効
notice ノーティス 予告、通知
parse パース 構文解析する
prefix プリフィックス 接頭語
prepend プリペンド 先頭に追加する
previous プリヴィアス 前の
render レンダー 表現する
state ステート 状態
static スタティック 静的
swap スワップ 交換
syntax シンタックス 構文
temp(temporary) テンプ 一時的な
validation バリデーション 検証

※2015/4/22 追記

  • instanceのスペルミスを修正
  • implementsの意味を「実装する」に修正
  • noticeの意味に「通知」を追加

implementsは非常に勉強になりました!

もう忘れることは無いと思いますw

ご指摘頂いた皆様、ありがとうございました!

 

まとめた結果

.

..

...

英語の勉強みたいになった。

 

暗殺教室 殺たん (JUMP j BOOKS)

暗殺教室 殺たん (JUMP j BOOKS)

 

【Linux】サイズの大きいファイルはお前だ!消してやる!

タイトルの通り、

ストレージ内で容量の大きいファイルを見つけて削除する、Linuxコマンドをまとめました。

f:id:kmatz90:20150415235831j:plain

環境はAWS(EC2)でCentOS7です。

CentOS7の構築については、

少し前に書いて何故かとても読まれた過去記事を参照してください。

 

ぶっちゃけ簡単だし、

ググればこの手の類はいくらでも出てくるのですが、 

念のため備忘録としてまとめておきます。

 

メールのキューが溜まっている場合は以下で対応。

あんまり無いと思うけど。

 

これで今後忘れてもググらずに済むはず。

ログとかのファイル削除に関しては、

定期的に消すシェルなどの仕組みを作るのが1番良いですね。