Pythonista3 やろうぜ！標準機能をみてみる 〜 内部外部のデータ編


この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の02日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone（Pythonista3）で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

```
--- SYSTEM INFORMATION ---
**System Information**

* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.0.2, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
```

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エラーになる)なる場合もあります。ご了承ください。

ちなみに、`model iPhone12,1` は、iPhone11 です。

## はじめに

前回の記事は、Pythonista3 でコーディングをするにあたり、標準でどんな機能があり、どう使えば便利なのか？を紹介しました。のつもりが、講釈垂れると言う名の、責任弁明用文増し増しでお送りしました。

（私の性格上しょうがなく抑えられない部分もありつつ）なるべく皆さんに有益な情報をお届けできるような記事を目指します。

今回は、「内外部データ編」と題し、コードを書く前の場面で「こんなのあるよー」といった内容をお送りできればと考えています。よろしくお願いします。

## Pythonista Documentation を読んでみよう

英語です。私は機械翻訳を使いながら読んでいます。

コンソール画面から`(？)` アイコンを押すとDocumentation が出てきます。

![img221114_105106.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/bce45a06-9692-a310-5b8b-0ea29e95a9ed.gif)

サイトにもあります。

[Overview — Python 3.6.1 documentation](https://omz-software.com/pythonista/docs/)

https://omz-software.com/pythonista/docs/

サイトのトップから、アクセスするには1番下スクロールすると`Documentation` のリンクがあります。

![img221114_105602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/4b9cd1d9-f557-ad43-5972-a4cb85485b79.png)

Pythonista3 からDocumentation を開いている場合、[Open in Editor] をタップすると、サンプルコードが新規ファイルとして生成されるので、気軽に挙動を確認できて便利です。

![img221119_152643.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/52325249-e22e-6979-d9c0-6dc8bd47259d.png)

主に私がよく、Documentation で参照している所を紹介します。

### Pythonista Modules

> Additional modules developed specifically for iOS
>> iOS専用に開発された追加モジュール

i(Pad)OS のAPI をPython で呼び出せるようにPythonista3側で、モジュールとして用意されています。

モジュールで用意されていないAPI も`objc_util` モジュールを使い呼び出す事も可能です。

また、Pythonista3 からPythonista3 のエディタ機能やコンソール機能を操作するモジュールもあります。

`Extras` 以下は、Python 標準モジュール以外で同梱しているモジュールの紹介があります。

### 「`Pandas` って使えますか？」「使えません」

お馴染みのNumpy やmatplotlib 、flask 等もありますが、バージョンが古いものや機能制限もあるので、実際に動かしてみて確認することが必要な場面もあります。

``` py
import numpy as np
import matplotlib
import flask

print(f'Numpy: {np.__version__}')
print(f'matplotlib: {matplotlib.__version__}')
print(f'flask: {flask.__version__}')
```

![img221114_141610.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/f4dcd651-6da9-df2e-10d2-fb335f70cf27.png)

![img221114_141619.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/59199a66-f2c8-7fc9-49e7-29b504348cfc.png)

StaSh という、ユーザーが公開している、Pythonista3 をShell のように使えるモジュールがあります。

[Pythonista 3 にStaSh をインストールする。 - Qiita](https://qiita.com/maboy/items/cef5dee13d5b2e9ac843)

https://qiita.com/maboy/items/cef5dee13d5b2e9ac843

これを使うと、pip コマンドが使えるようになりますが、対象モジュールのインポート方法がコマンドを叩いたり、別途インストールさせたりする内容のモジュールですと、インポートできません。

StaSh の使い方は、ここでは解説しません。

使いたいモジュールがある場合には、そのソースを読みに行き挙動を確認するなどしてみてください。

ソースを読むことでより一層理解が深まることでしょう☺️

## Script Library

右方向にスワイプをすると、Script Library のパネルが出てきます。

![img221114_163912.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/7bace9ff-3233-2d7b-e735-78263b9c2bd4.png)

![img221114_164009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/dc27e865-6cad-e113-b7ae-6c30ea641aae.png)

様々な、ファイルたちにアクセスするパネルです。

開きたいファイル上で、右方向にスワイプすると、新規タブとして開けます。

複数ファイルを跨いで編集したい時に便利です。

![img221114_165218.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/9da06ed2-95bb-4607-56a9-51fb9d6186a1.gif)

現在開いてるファイルをハイライトしてくれてるのも、わかりやすくていいですよね。

ちなみに、Documentation に

> Pythonista is divided into three panels: The script library, the code editor, and the interactive prompt, which also contains the documentation viewer. You can switch between these panels with left and right swipe gestures.

と、`script library` と説明があるのでscript library と呼んで（指して）いいと思いますが、そのパネルの中に`script library` があり、他に`Favorites`や、`External Files` があるので、全体的にscript library と呼んでいいものか？と悩んでしまいました。

### script library

基本的にローカルで、作業するディレクトリになります。

#### Examples

サンプルのコード例があります。Pythonista3 でどんなことができるのかを知ることができます。

または実装したい内容がサンプルにある場合、ゴリゴリ改変してみましょう。

え？改変しまくって、動く状態に戻せない？大丈夫です！Examples 内のコードは設定でリセットできます☺️

![img221114_172249.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/c5751074-2aab-ae73-c9ea-d2bff364768c.png)

これで、心置きなくいじくりまわせますね！

### Favorites

お気に入りとして、フォルダやファイルを指定しておくことができます。

該当フォルダやファイルを右方向にスワイプし`︎☆` アイコンをタップでも追加できます。

![img221114_165803.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953777/1ecaadfc-728e-9d76-738e-cf0ec3fa3955.gif)

### External Files

ファイルApp上にあるファイルやフォルダを参照し編集できるようになります。

編集を他のアプリで行い、実行をPythonista3 で。なんて連携ができるようになります。

私は毎日GitHub 草生やし勢なので、他アプリでGit 管理をし、編集をPythonista3 で行う流れがワークフローとなっています。

### Python Modules

- Standard Library
- site-packages

に分かれています。

#### Standard Library

Pythonista3 でデフォルトで入っているmodule たちが格納されています。

Pythonista3 独自モジュールも、ここのディレクトリ内にあります。

例えば`objc_util` モジュールの格納場所は

```
Standard Library(3.6)
  └ site-packages
      └ objc_util.py
```

実際にどんなコードで実装しているか、見てみると面白いと思います。

## 次回は

今回も機能面の紹介のみとなってしまいました。そして、ポエムとなりすみません。

Documentation を読むと、紹介しきれなかった機能満載ですので、ぜひ機械翻訳片手に読んでみてください。

共有機能を使って外部データをscript library を取り込んだり、iPad でのキーボードショートカットなど色々あります。

次回は、Pythonista3 で、コーディングを楽にするためのスクリプトをコード例を提示しつつ実装する。みたいな内容を予定しています。

やっと、やっと！！コードが出てきます。。。お待たせ致しました。


ここまで、読んでいただきありがとうございました。

## せんでん

### Discord

Pythonista3 の日本語コミュニティーがあります。みなさん優しくて、わからないところも親身に教えてくれるのでこの機会に覗いてみてください。

https://t.co/0IOW2hn1VC

### 書籍

iPhone/iPad でプログラミングする最強の本。

- [Python や Jupyter で iPhone/iPad 先端機能を簡単･自由にプログラミング！「活用篇」：hirax](https://techbookfest.org/product/1WiyV4LEev3f4YrzesRKWV?productVariantID=axX32srsSgtLtZWUtjkj99)

https://techbookfest.org/product/1WiyV4LEev3f4YrzesRKWV?productVariantID=axX32srsSgtLtZWUtjkj99

- [Python や Jupyter で iPhone/iPad 先端機能を簡単･自由にプログラミング！「土台篇」：hirax](https://techbookfest.org/product/wTZTyeibm5GQ5XgdfMrEBV?productVariantID=kRDmN1udbEYZUWbETdwL8r)

https://techbookfest.org/product/wTZTyeibm5GQ5XgdfMrEBV?productVariantID=kRDmN1udbEYZUWbETdwL8r

### その他

- サンプルコード

[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) でのコードをまとめているリポジトリがあります。

コードのエラーや変なところや改善点など。ご指摘やPR お待ちしておりますー

https://github.com/pome-ta/Pythonista3AdventCalendar2022sampleCode

- Twitter

なんしかガチャガチャしていますが、お気兼ねなくお声がけくださいませー

https://twitter.com/pome_ta93

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やれるか、やれないか。ではなく、やるんだけども、紹介説明することは尽きないと思うけど、締め切り守れるか？って話よ！（クズ）<br><br>Pythonista3 Advent Calendar 2022 <a href="https://t.co/JKUxA525Pt">https://t.co/JKUxA525Pt</a> <a href="https://twitter.com/hashtag/Qiita?src=hash&amp;ref_src=twsrc%5Etfw">#Qiita</a></p>&mdash; pome-ta (@pome_ta93) <a href="https://twitter.com/pome_ta93/status/1588570697777152006?ref_src=twsrc%5Etfw">November 4, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- GitHub

基本的にGitHub にコードをあげているので、何にハマって何を実装しているのか観測できると思います。

https://github.com/pome-ta