今からでも遅くないPython入門
はじめに
Pythonは読みやすく効率がよいコードをなるべく簡単に書けるようにするという思想のもと開発されたため、文法が極力単純化しておりコードの可読性が高く読み書きがし易いという言語的な特性があります。昨今ではデータ分析、機械学習などの盛り上がりとともに名前を聞く機会が増えた言語です。2017/8現在最新のバージョンは3.6.2になります。
インタラクティブシェル
Pythonには対話的にコードを実行する機能があり、引数無しでPythonコマンドを実行することでインタラクティブシェルという対話的にコードを実行するモードになります。インタラクティブシェルは言語を学ぶときにも便利な機能です。
$ python Python 3.6.2 (default, Sep 1 2017, 13:15:44) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
コードの書き方
ステートメントの区切り
Pythonのステートメントの区切りは改行またはセミコロン「;」になります。次の2つのコードは同じものとなります。
a = 5 b = 10 print(a + b)
a = 5; b = 10; print(a + b)
コメント
コメントは「#」に続けて書きます。
# 初期化処理 min = 5 # 取り得る最小値 max = 10 # 取り得る最大値
複数行のコメントは3個続けたダブルクォーテーションまたはシングルクォーテーションで囲みます。
""" 複数行の コメントアウト """
本来3個続けたダブルクォーテーションまたはシングルクォーテーションで囲まれたものは複数行の文字列という扱いです。Pythonに複数行のコメントアウトの仕組みはないのですがコードの中に記述された文字列は実行に影響を及ぼさないという仕様のため複数行のコメントとして利用しています。
数値型
整数、浮動小数点、複素数
数値型には整数(int)、浮動小数点(float)、複素数(complex)の3種類があります。
切り捨てた整数を得たい時は「//」演算子を使います。
数値演算子
演算子 | 説明 |
---|---|
+ | 足し算 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
// | 切り捨て割り算 |
** | べき乗 |
文字列
文字列をstr型とbytes型の2種類の型で扱います。str型はUnicode文字列を、bytes型はバイト列で文字列を扱います。基本的には文字列操作はstr型で行い、ファイルへの読み書きやネットワークへの読み書きはbytes型で行います。
文字列の検索
指定した文字列を検索して個数を返すメソッドと、最初に見つけたインデックス(位置)を返すメソッドがあります。それぞれ開始位置、終了位置を指定することもできます。両方共省略した場合は文字列全てから、終了位置を省略した場合は指定した開始位置から文字列の終わりまで検索します。
文字列が含まれる個数を返すcountメソッド
count("検索する文字列") count("検索する文字列", 開始位置) count("検索する文字列", 開始位置, 終了位置)
文字列を検索してインデックスを返すfindメソッド
find("検索する文字列") find("検索する文字列", 開始位置) find("検索する文字列", 開始位置, 終了位置)
文字列の分割
splitメソッドで区切り文字を指定して文字列を分割することができます。
split("区切り文字")
文字列の結合
+演算子またはリストのjoinメソッド使って文字列の結合を行います。
>>> a = "Hello" >>> b = "World" >>> a + b 'HelloWorld'
リストのjoinメソッドはリストをCSVファイルとして出力する際などに役立ちます。
>>> array = ["one", "two", "three"] >>> ",".join(array) 'one,two,three'
制御構文
条件分岐:if
if文で条件分岐を行うことができます。他の言語と違う特徴的なところは{}でスコープを表すのではなくインデントで表します。Pythonでインデントはソースコードを読みやすくするという意図だけでなく、スコープを表すという重要な役割を持っています。
if 条件式: 処理1
複数の条件を指定する時は「elif」を用いります。
if 条件式1: 処理1 elif 条件式2: 処理2 else: 処理3
条件式には次のものが使うことができます。
式 | 説明 |
---|---|
a == b | aとbが等しい場合に真 |
a != b | aとbが等しくない場合に真 |
a < b | aがbより小さい場合に真 |
a <= b | aがb以下の場合に真 |
a > b | aがbより大きい場合に真 |
a >= b | aがb以下の場合に真 |
a and b | aとbの両方が真の場合に真 |
a or b | aもしくはbの一方でも真の場合に真 |
not a | aが偽の場合に真 |
a is b | aとbが同じオブジェクトの場合に真 |
a is not b | aとbが異なるオブジェクトの場合に真 |
繰り返し:for / while
繰り返しを行う制御構文はfor文とwhile文があります。それぞれ繰り返しの処理の中で繰り返しのループを抜けるbreak文とループの先頭に戻って繰り返すcontinue文を使うことができます。
for文
for 変数 in リスト/タプル/文字列など: 処理 else: 最後に行う処理
while文
while 条件式: 処理 else: 最後に行う処理
リストをfor文で繰り返し処理する場合は次のように記述します。
for x in [1,2,3]: print(x)
単純に指定した回数実行したい場合もあります。その場合はrange関数を使います。
for x in range(5): print(x) # 0から4まで順に出力される
関数とクラス
関数
関数の定義はdef文を使います。インデントがスコープを表すことを忘れないようにしましょう。
def 関数名(): # 処理を記述
他の言語と同じく引数も指定することができ、戻り値として値を返すこともできます。デフォルト引数も指定することができます。
def sum(a, b=0): result = a + b print(result) return result result = sum(2,3) # 5が出力され、戻り値として5を受け取る
型ヒント (Type Hints)
Pythonの関数では引数や戻り値の型を指定することはできません。ただ次のように注釈(型アノテーション)を付けることができます。これを型ヒント (Type Hints)と言います。
def sum(a: int, b: int) -> int: result = a + b print(result) return result
アノテーションはあくまでコメントのようなもので実行時にはチェックされないので注意が必要です。エディタによってはソースコードを記述した際に警告が出たり、入力の補完に型の情報が使われたりするのでアノテーションを付けることは有用です。
iOS11からのアプリ内のレビュー誘導について
WWDC2017で発表された内容です。
すでにApp Store Review Guidelinesも改定されており、用意されているAPIを使え
となっています。
変更点
- iOS10までのAppStoreでは最新バージョンの評価が表示されていたが、iOS11からはバージョン別ではなく総合的な評価になる。
- iOS10.3はAppStoreへのDeepLinkが用意された
- iOS11からはレビューはSKStoreReviewControllerクラスを使うことを推奨
- レビューへ誘導するカスタムアラートは禁止
AppStoreへのDeepLink
- 例) https://itunes.apple.com/us/app/itunes-u/id490217893?action=write-review
- アプリ内の設定画面に
評価をするボタン
を設置する 評価するか?
というAlertは出してはいけない。アラートを出す場合は(iOS11以降に限られるが)SKStoreReviewControllerクラスを使う必要がある
SKStoreReviewControllerクラス
- 1年に3回までしか表示できない
- ユーザーはiOSの設定で評価画面を表示させないように設定することが出来る
- 評価画面が表示されたかどうかのハンドリングはできない
表示するタイミングの指標
- ユーザーが何かしらアプリでアクションを終えた後(ゲームのステージをクリアしたあとなど)に自動で出すべきである
評価をするボタン
的なものを用意してはいけない(年3回までという制限があるのでボタンを押しても表示されないことがあるため)
まとめ
- 独自のレビュー誘導は審査が通らなくなる
- iOS11では設定画面からDeepLinkを使ってAppStoreアプリのレビュー画面へ飛ばす機能とSKStoreReviewControllerクラスを併用した方が良さげ。
- ただしSKStoreReviewControllerクラスは回数制限があるので、最高のユーザー体験を得ただろうと確信があるタイミングでメソッドを実行するべき(それでも表示されるとも限らないが・・・)
参考ページ
- What's New in StoreKit のスライド196ページから
- Responding to Reviews on the App Store
- Human Interface Guidelines - Ratings and Reviews
- App Store Review Guidelines 1.1.7 App Store Reviews: