1
Help us understand the problem. What are the problem?

posted at

updated at

iSHを使ってiPadでC言語開発

はじめに

この記事は東京高専プロコンゼミ① Advent Calendar 2021の18日目の記事です.

きっかけ

なにもしてないのにぱそこんがこわれた
どうやらSSDを認識していないらしく,WindowsやLinuxの再インストールもできない状況.

学校のプログラミングの課題をiPadでやろうと試みるお話です.
家に帰ればデスクトップPCがあるので,とりあえずCを書いて実行できればOKといった感じです.

実行環境

  • iPad(第8世代)Wi-Fiモデル
    • iPad OS 15.1
    • iSH バージョン1.2.2

Bluetooth接続の外付けキーボードがあるとすごく便利です.

iPadでLinuxを使う

iSHというアプリをAppStoreでインストールします.Alpine Linuxのエミュレータらしい.
ちなみにiPhoneでも使えるようですが,持っていないので試していません.

C言語を書く

各種パッケージのインストール

「apk」というパッケージマネージャを使用してGCCをインストールします.

$ apk add gcc

エディタにはVimを使います.インストールの要領は同じ.

$ apk add vim

CLI版のEmacsも使えるようです.

apkが使えなかった場合

今は使えるみたいですが,使えなかった場合は以下のコマンドでapkをインストールします
$ wget -qO- http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static && rmdir sbin 2> /dev/null

C言語を書いて実行する

「hello.c」を作成し,Vimで編集します.

$ touch hello.c
$ vim hello.c

とりあえず「Hello World!」と出力するプログラムを書きます.

hello.c
#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

コンパイル&実行

$ gcc hello.c
$ ./a.out

IMG_0026.PNG

こんな感じ.

実際の開発では何かしらの影響が出るかもしれませんが,授業の課題ぐらいならこれでいけます(おそらく).

おまけ

tmux
ぱっと試した感じ使えます.使い込んだらまた違うかもしれませんが.
Git
使えます. 「openssh」をインストールすればsshで接続することもできます.
Python
簡単なコードの実行は可能です. ただvenvやpipがやたら重いです.
Rust
公式のインストールコマンドではインストールができません.
cargoやrustcはインストールできますが,コマンドを使うと「Illegal instruction」と言われてコンパイルできません.
ちょっと調べた感じ一筋縄ではいかなそうだったので断念しました.
Ruby
Rubyのインストールはできますが,実行はやたらと重いです. rbenvは使えないです.
GUI
xrdpを使ってLinuxのデスクトップ環境を使用できないかチャレンジ中です.

参考文献

iSH公式サイト
iPadで動くLinuxエミュレーター「iSH」がすごいと私の中で話題に - Qiita

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?