4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonista3 (使いの私)が、この先生き残るには?(Pythonista3 Advent Calendar 2022 後夜祭)

4
Last updated at Posted at 2022-12-26

この記事は、Pythonista3 Advent Calendar 2022 の 26 日目後夜祭です。

👇 : 25 日目

👇 : 00 日目

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

あ、どうも。(自称)iPhone でのコーディング時間世界一を名乗らせてもらってもらっている者です。どうぞよろしくお願いします。

アドカレ参加によりひとりで 25 日分の記事を書きました。結果として iPhone でのコーディング時間世界 2 位の方と差が広がる一方です(2 位とは?)。

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

sysInfo.log
--- SYSTEM INFORMATION ---
* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.1.1, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0

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

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

この記事でわかること 🥸

  • Pythonista3 Advent Calendar 2022 の振り返りとサマリー
    • 使用モジュール
    • おすすめ度
  • iPhone でコーディングをしていくことについて

振り返りとサマリー 📝

完走した感想ですが、疲れました 😇

一日一日、ていねいなかんそう。としようとしましたが、クッソ長くなりそうなので、続きものはマージさせています。

day00

振り返り(独り言)

本編 25 記事中、7 記事目あたりで「前夜祭も書いたろ!」と思いつき執筆開始。

普段は API を叩くことをしない(ギガが無くなるのが怖い)ので、調べては実行を繰り返してコードが完成。いまだに API の使用上限にドキドキするし、トークンをどこに格納するのがベストか悩んでいる。

「1〜7 日目の記事と文体が違うんだよなぁ」と一丁前にトンマナが気になり出し、書き溜めている記事と見比べるなど無駄な時間が多かった。

抽出した記事では、過去に読んでいなかったり、素敵な記事を思い出したりと一括で取得することで見えてくるものもあるなぁとしみじみ。

記事の頭の方に、執筆中のキャプチャ GIF を載せて、頑張っている雰囲気をだしている(Pythonista3 での入力画面)。

day01 | day02

振り返り(独り言)

Documentation はあれど、機能だし、英語だし、、、と、全てはカバーしきれないけども「こんな機能があるんやでー」的に紹介。

「何か困ったら公式のリファレンスを読む」ムーブを Pythonista3 で勉強させていただきました ☺️ とはいえ、Qiita や個人ブログからの公式リファレンスの導線って大事ですわね。

テキストエディタ大好き感情を抑え込むことができず、支離滅裂な思考・発言が目立つ。

Pythonista3 とは?」といった丁寧でわかりやすい記事は、たくさんあるので下位互換を 2022 年年末に産み落とさないように気をつけ、は、した。つもり。

day03 | day04

振り返り(独り言)

👩 「えーマジ?iPhone でコーディング!?キモーイ」

👧 「iPhone でコーディングが許されるのは小学生までだよねー」

👩 & 👧 「キャハハハハハ」

🤦 (小学生でやってた方がヤベぇよ、、、)

な、令和のこの時代(被害妄想)。「もしかしたら携帯でコード書くって、ありよりのありでは?🤔」 と勘違いしてくれる人がいることを夢見た記事。

コーディングするのを楽にするためにコーディングをして、そのコーディングを便利にするためにコーディングをする極楽の無限回廊。

(Vim を使わせていただいてますが).vimrc をいじり Vim ライフを快適するサイクルに似ていますね。どこでも操作できる Pythonista3 の沼度もなかなかですぞ〜

基本的にスクリプトの完了通知を、触覚フィードバックしているが、Python や Jupyter で iPhone/iPad 先端機能を簡単・自由にプログラミング!「土台篇」:hirax の書籍内で使えることに気がつき、普段使いのスクリプト全てにぶっ込んだ。

day05

振り返り(独り言)

iPhone アプリで iPhone アプリを開発できるようにするため、Pythonista3 では必須モジュール(と、考えている)の ui モジュールの基礎的な実装と挙動を紹介。

とはいえ、ui.View 以外は省略する力技で、View に add していけばええんやで。と随分といい加減な紹介となってしまった。

frame のサイズが fix するタイミングがわかれば、やりたいようにレイアウトが組めるようになるし、作りたいものなんてそれぞれでニーズが違うからなぁ。と、基本的な概要紹介をすることの難しさを痛感。提供側の抽象度と、受け取り側の抽象度理解のせめぎ合いなんですわね。

day06

振り返り(独り言)

見た目って大事ですよね。なんか「お!?」となってもらえればと、早々にクリエイティブコーディング要素を紹介。

私自身、プログラミングの入りが processing で、グラフィックスでフィードバックが来るプログラミングが好きなんですよね。

Pythonista3 では matplotlib が使えますが、ui モジュールの View に matplotlib の結果を乗せるとなると、結構面倒になり遠回りな気がしているので、グラフ表現の正確さはないですが、draw で数値を扱い描画するくらいはできたら、色々幅が広がるかと考え紹介。

逆に、無駄が多い処理で View がカクカクしていると「あー iPhone 頑張っているのね〜」って気持ちになってちょっと好きです。

day07

振り返り(独り言)

滑った雰囲気を出した可笑しさを狙ったら、ダダ滑りして目も当てられなくなったやつ。

アドカレがちょうど 1 週間ということで、息抜きついでに書き出したら、呼吸ができなくなっていた。

ゲーム作りって全方面いろいろケアしなくては行けなくて大変ですよね。存在しているゲームの移植ですら私は超大変だった思い出です。

day08 | day09

振り返り(独り言)

呼吸が止まるレベルの精神的ダメージを追ってまでも、7 日目の記事を書き終えられたのは、8 日目 9 日目へ早く行きたかったから(ありがとう、GLSL。ありがとう processing)。

とはいえ、ここの振り返りで書くことはあまりなく。。。GLSL って大変だけど面白いよ(8 日目)!processing っぽく書けるよね(9 日目)!(迫真)。くらい。。。

手元で気軽に実行できる iPhone と、グラフィックスなプログラミングってかなり相性いい気がするのですよね。端末的にも高スペックですし。ただ、私が好きだからそう感じているだけですかね?

PC の前に座って、いざ「やるぞ〜」って始めようとすると「あれ?何をしようとしていたんだっけ?」と、気持ち切り替えとモチベーションの差異が出てしまって、なかなか進まないんですよね。これって私だけですか?

day10 | day11 | day12

振り返り(独り言)

無駄に 3 記事と伸ばしてしまったな、、、と思いつつも、どこの場所を説明しているか混乱する可能性もあるので、仕方ないところでもあるよなと、勝手に自己解決。

Python でもファイル操作はあるし、Pythonista3 の裏側としてどのように動いているのか知る機会としても意味はあるのかもと、勝手に自己解釈。

宝探し感あるので面白い。そして OS のバージョンが上がった時の変更点を探しにいくのも面白い。

しれっと、Pythonista3 のスクリプトたちをまとめている GitHub のリポジトリを紹介できたもの個人的にはよかった。このリポジトリ単体で記事を作るのも気が引けるし、紹介しないのもなんだかなーと考えていたので。

iOS 自体やアプリ制作は、私は門外漢で Pythonista3 専門(笑)なので、ぜんぜん深く掘れている自覚はない。「こんなのあるやでー」みたいな情報があったらお待ちしています!

day13 | day14

振り返り(独り言)

黒魔術なのか、メインヒロインなのか、軸ブレがすごいのですが、結果的にメインヒロインの黒魔術です。

objc_util を使うにしても、モジュールの使い方が特殊すぎて、参考になるものも少なかったり、Objective-C 側から調べて行っても遠回りなところがあるよな。と感じており、自分がどのように objc_util を使っているのか紹介。

事例を追加しつつ、うまくまとまると未来の自分にも優しいと思う。

day15 | day16

振り返り(独り言)

objc_util の基礎的な記事からいきなりマニアックな内容に飛んだ事を反省しつつ、紹介するタイミングはここしかないと、腹を括る。比較的に objc_util の面倒な block 処理があるので、まあいいでしょう。と、

過去には core audio を使った実装をしていて、AVAudioSourceNode が入ってから随分と楽に実装できるようになった印象。

世の中的に、グラフィックスの見た目の処理は充実しているが、音関係はクラシカルな処理のままで、コツコツとやっていく感じがしている。まぁ音声データを事前に準備すればいいのだけど、音関係のプログラミングの進化に期待。

day17 | day18

振り返り(独り言)

最終的に AR に着地をしたいために、SceneKit の基礎からはじめる。SceneKit が少しでもわかっていれば、ARKit は追加機能みたいな感覚で扱えるような気がしている。何事も基礎が大事ですね。

SceneKit を実装していると、だらだらと長くなってしまうなぁ。と感じる場面がある。背景としては Scene File(.scn)を簡単に操作できる Scene Editor があり、そのエディタの GUI を触ってみるとすこし合点がいく。

iOS で SceneKit を試す(Swift 3) その 11 - Scene Editor を使ってみる - Apple Engine

話を飛躍させると、Scene Editor の実装とコードのみの実装で「なるほど!オブジェクト思考!」と、気づきを得ることができた気がしている。情報が整理された GUI 上で操作するデザインと、コードを書く(行を増やしていく)行為のメリットデメリットが顕著に出ているのである。

わざわざ Pythonista3 で実装をすることで、普段の通常実装では気が付かない部分が見えてくるのが面白い。わざわざ面倒なことをやることで、何か気づきを得るてきな法則に名前ありそう。

day19 | day20 | day21

振り返り(独り言)

SceneKit を経の ARKit なので、少々ハードルは下がっているように感じている。しかし、ARKit はリアルタイム検出なので、端末のカメラ情報を取り込み、そのカメラ情報を View に出してあげる必要がある。カメラを View に登場させる方法は、先人のつよつよな人たちのサンプルがたくさんあるので、ARKit とカメラ取得と ScenenKit の処理体系を部別して考えることが必要。

3DCG 関係でつきまとう、SIMD が Pythonista3 ではなかなかの曲者で、まだ解決方法が見つかっていない。今回のアドカレでは紹介できていない Metal も同様に SIMD 活用が多数あり、SIMD をクリアするとまた Pythonista3 でイノベーションが起こるかもしれない。

Metal の概要 - Apple Developer

あと、ARKit 関係は、リアル世界の情報をキャプチャするのでキャプチャに恥ずかしさがあるですね。

day22 | day23

振り返り(独り言)

個人的に 2022 年は、AI が一般普及した年だと感じている。Stable Diffusion の画像生成を筆頭に、GitHub Copilot のコード提案などなど。Core ML はそれ以前よりありましたが、使ってみるのであれば、いまですわね。

実装としては、かなり上っ面の部分を整備して、ぶん投げた結果を受け取るくらいなので、機械学習がちんぷんかんぷんでもどうにかなるのがすごい。

今回アドカレで紹介している実装だと、最新のものなのでまだまだ改善や遊び方の余地があるなと感じている。

day24 | day25

振り返り(独り言)

WebGL 最高!!!

比較的に WebGL や GLSL は大変という風潮があるが、objc_util の実装と比べれば、同等かもしかしたら優しいという勘違いのもと楽しく実装ができる。JavaScript のデバッグは eruda があるので objc_util よりは楽。

Eruda: Console for Mobile Browsers

ただ写経をすれば、動くってすごい良くないですか?絶対動くという信頼のもとコードが書けることっていいですよね。その事実だけで気軽に実装ができます。objc_util は動くのかわからないまま実装を進めますからね。。。

また、GLSL もデバッグが色でしかできないとかありますが、objc_util はなんの反応もなく落ちることがデフォなので、色の情報だけで随分ありがたいという感覚を持つことができています。

iPhone というプログラミング環境 📱

iPhone でプログラミングをやるって面白いのです。PC でプログラムを書くのと違った、良さや楽しみがあります。

決してマジョリティになりたいわけではありませんが、候補や可能性のひとつとして程度にはあっていいのかな?とは感じています。

執筆環境

今回のアドカレ執筆は基本的に Pythonista3(iPhone)で書いています(90% ほど)。iPhone に WorkingCopy という、Git 管理ができるアプリを入れているので、GitHub 上へプッシュして PC との連携も簡単です。

当初は、日本語のテキストを Markdown 形式で書くということで、iPhone も PC もObsidian を考えていました。vault を無理矢理 GitHub 連携をしていけば端末感を気にせずに書けるのかなと。しかし、画像キャプチャとそのキャプチャした画像を貼り付けるなど、結局のところ Pythonista3 を開く必要がでてきてしまい、そうであれば Pythonista3 で全部完結すればよくね?ということで、Pythonista3 で着地しました。

PC 側では、VSCode や Vim で微調整をしたり Prettier で整形をしたりしています。Qiita へのアップはどうしても PC でのブラウザに軍配があがるので(無理に全部 iPhone でやりたい訳ではない)、最後のお化粧的に PC を使う感じでした。

決して iPhone の方が入力が早いとかではなく、PC ってなんでもできてしまうので、アドカレ原稿を書く以外の楽しい誘惑に負けてしまうのです。

キャプチャ関係

コードやら、実装のやり方は別にまとめたいと思っていますが、取り込みも Pythonista3 で完結させています。

photos — Photo Library Access on iOS — Python 3.6.1 documentation を使って写真を取り込み(リサイズして)データを記事のディレクトリに生成するのと同時に、生成したファイルパスを clipboard に格納して記事にリンク先を貼れるようにしています。

動画は、iPhone 純正のショートカットを使って Gif に書き出してから、写真と同様の処理をしています。

Qiita 上に写真を載せるにはサーバーにあげなければならず、PC 上で上げ直すかたちです。しかし、1 ヶ月 200MB までの制限があるらしく、後半は(上限を越えたので)GitHub の記事を管理しているリポジトリに、issue として画像をアップしその画像 URL を貼っています。

[Q&A] Qiita に画像が Up できません - Qiita

private なリポジトリでも、issue の画像はパブリックのようで、Qiita の記事上には反映されています。

画像取り扱いのワークフローは改善の余地がありそうです。

最後に

このアドカレで、Qiita へのアウトプットを始めることができました。

書き始めは、# なのか## なのかヘッダーすら悩みながらのスタートでしたが、どうにかこうにか終えることができました。Pythonista3 のコミュニティのみなさんのフィードバックや、Qiita 上 SNS 上の反応をいただきゴールできました。

妻、息子たちも含め本当にありがとうございます 🙇

ちなみに、Pythonista3 インストールの日は、2017/12/21 で 4 年もやっていたんだなぁと感慨深いです。まだまだ、Metal やファミコンのエミュレータなど書けることはたくさんありそうなので、アウトプットを続けていきたいと思います。

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

👇 : 00 日目

せんでん

Discord

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

書籍

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

その他

  • サンプルコード

Pythonista3 Advent Calendar 2022 でのコードをまとめているリポジトリがあります。

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

  • Twitter

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

  • GitHub

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

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?