はじめに
Swiftのシンタックスをちょっと確認したいとか、このコードが期待通りに動くのかを試したいとか、自分はそういう時に、その都度Macを起動しXcodeを立ち上げるのも面倒なため、iPadからオンラインでSwiftをコーディング&実行することがあります。
ここでいうオンラインとは、ウェブブラウザ上でSwiftのコンパイル・実行ができる環境のことを指します。
そういったオンラインサービスを提供しているサイトをググったところ、無料、かつ、アカウント登録不要で利用できるサイトを8つ見つけたので、各サイトの概要と特徴をまとめておきます。
Swiftのバージョンは今後新しくなっていく可能性があります。ここに記載したバージョンは執筆時点(2020.4.22)のものです
確認ポイント
各サイトについて、次の4項目を共通的な確認ポイントとしました。
- Swift専用か多言語対応か
- Swiftのバージョンを選択できるか固定か
- 標準入力をサポートしているか
- コード補完機能があるか
1. Swift専用か多言語対応か
サイトを分類すると、Swift言語専用のサイトと、Swift含む多数の言語をサポートしているサイトに大別できます。
8サイトのうち、Swift専用は3サイト、残りは複数の言語をサポートしています。
2. Swiftのバージョンを選択できるか固定か
次にSwiftのバージョンを選択できるサイトか、特定の固定バージョンかを確認しました。
8サイトのうち、バージョンを選択できるのは3サイト、バージョン不明が1サイト、残りは特定バージョンのみでした。
3. 標準入力をサポートしているか
次に標準入力ができるかどうかを確認しました。標準入力ができない場合はreadLine
がnil
を返すため強制アンラップのコードは落ちます。
8サイトのうち、標準入力を受け付けたのが5サイト(その内、インタラクティブが3サイト)、残りは標準入力を指定するところが見当たりませんでした。
4. コード補完機能があるか
最後にソースコード入力時のコード補完機能があるかないかを確認しました。コード補完があると、コード入力時に省力化になります。
8サイトのうち、コード補完機能があったのが5サイト、残りはありません。
8サイトの概要
前述の確認ポイントを一覧にまとめます。(順不同)
# | サイト | Swift専用 | サポート バージョン | 標準入力 | コード補完機能 | その他特徴 |
---|---|---|---|---|---|---|
1 | paiza.io | × | 5.1.2 | ○ | ○ | 有名サイト |
2 | Swift Playground | ○ | 3.0.1 〜 5.2 | × | ○ | バージョン多彩 |
3 | repl.it | × | 5.0.1 | ○ | ○ | 標準入力がインタラクティブ |
4 | codingground | × | 4.0 | ○ | × | サポート言語が豊富 |
5 | SwiftWasm | ○ | 不明 | × | × | デモサイト? |
6 | GDB Online | × | 2.1? | ○ | ○ | Online IDEだがSwiftのデバッガは未サポート |
7 | JDoodle | × | 2.2 〜 5.1 | ○ | × | サポート言語が豊富 |
8 | Online Swift Playground | ○ | 5.0 , 5.1 | × | ○ | httpsでない |
以降、個別に特徴をまとめます。
1. paiza.io
ネットで「swift online」をググると真っ先に出てくるサイトで、多数のサイトにて紹介されています。会社案内には「paiza(パイザ)は、コードを書いて書類選考なしで面接・カジュアル面談に進める、全く新しいカタチのコーディング転職サービスです。」と謳われてます。(アルバイでもいいのかな?(余談です))
「コードを作成してみる(無料)」のバナーをクリックすると、コーディング画面に遷移します。画面左上にある言語選択のボタンでSwiftを選びます。Swift以外にも多数の言語をサポートしています。
上側の黒いところにコードを書いて、その下の実行ボタンを押すとコンパイル&実行します。@koherさんのFizzBuzzを実行させた結果の画面です。
実行ボタンの下にある入力タブを押すと、標準入力のデータを入力するエリアに切り替わります。
ちゃんとreadLine
が機能しています。
2. Swift Playground
キシカワカツミさんの個人サイトのようです。サポートバージョンが細かく、10.2インチiPadの縦モードでもプルダウンがすべて表示しきれません。
既出のFizzBuzzコードを実行させた結果です。
標準入力を指定することろは見当たらず、試しにreadLine
を強制アンラップすると予想どおり落ちました。
サポートするバージョンが豊富なので、バージョン違いによるシンタックスや動きの違いを確認するには助かるサイトだと思います。また、執筆時点で最新バージョンである5.2をサポートしているのは当サイトだけでした。
3. repl.it
イタリアのドメイン名でしょうか? 上記リンクから遷移した画面です。このサイトは数多くの言語をサポートしています。下記スクショはその一部です。
Swiftのリンクをクリックすると下の画面に遷移します。コードを書いてrun▶︎で実行します。既出のFizzBuzzコードを実行させた結果です。ソースコードのインデントに対応する縦線が入り見やすいです。
右側の黒い部分がコンソールをリダイレクトしているようで、コンパイルと実行のコマンドラインがそのまま見えます。また標準入力もインタラクティブにリダイレクトしているようで、print
を出力した後プログラムが止まり、適当に文字をタイプしてEnterキーで再開しました。
画面右側にソースファイルを管理するペインが見えるので、複数のファイルに分かれているような大きい規模のプロジェクトも実行できるのかも知れません(未確認)。
4. codingground
このサイトで驚いたのはサポート言語の豊富さです(75?)。今回紹介したサイトで一番かも。
縦長のトップページに、それはもう沢山の言語がアイコンと共に並んでいます。下はその一部です。BrainfuckやWhitespaceといったマニアックな言語まであります。
Swiftをクリックすると下記の画面に遷移します。左上のExcuteを押すとコンパイル&実行します。既出のFizzBuzzコードを実行させた結果です。
Excuteの並びのSTDINタブを押すと標準入力のデータを入れる画面に切り替わります。Swiftのバージョンが4.0と今やちょっと古い感じですが、レア言語を触ってみるには面白いサイトかも知れません。しかし、Whitespaceは動きませんでした。環境の問題と思われます。残念。
5. SwiftWasm
「ブラウザでSwiftを実行する」という大きなバナーの通りですが、ページの後方には「Swiftの多くの機能はまだWebAssemblyで動作していません」の記載もあるので、開発中ソリューションのお試しサイトかも知れません。
当サイトのサンプルコードがFizzBuzzとフィボナッチだったので、FizzBuzzのみ実行させた画面です。Runでコンパイル&実行します。
元々のサンプルコードの下の方に、SwiftでブラウザのJavascriptを実行させるコードが書いてあって、実際に動かすとブラウザのalretダイアログが出てきました。
6. GDB Online
Aboutページに『C/C++言語用のオンラインコンパイラおよびデバッガツールです。組み込みgdbデバッガーを備えたデバッグ機能を提供する世界初のオンラインIDEです』と謳っていて、画面構成もPC想定と思われ、10.2インチiPadでは入りきりません。言語もメジャーなところはサポートしているようです。
右上のLanguageでSwiftを選んで、既出のFizzBuzzコードを実行させた結果です。
画面右側のペインにIDEらしく変数とか監視できるような感じですが、残念ながらSwiftのDebugは未対応でした。
今後サポートされると非MacユーザもSwiftがもっと身近になるかも知れません。
標準入力は、インタラクティブとテキスト(事前入力)の両方をサポートしていて、画面の中央付近にあるラジオボタンで切り替えます。
インタラクティブ指定時の実行結果です。
上の画面では見えてませんが、stdout、stderrの出力エリアもあって、C/C++開発者だと重宝するかも知れません。
FAQページに「ソースコードやstdin等のMAXサイズ、コンパイル・実行時の最大時間、メモリの上限」などの制限が記載されているしっかりしたサイトですが、Swiftのバージョンが古いのが残念です。
7. JDoodle
トップページに『72言語、2DB』と謳っていて、このサイトもサポート言語が豊富です。Whitespaceもあって、こちらのサイトはちゃんと動作しました。
Swiftのリンクを押すと画面が遷移します。既出のFizzBuzzコードを実行させた結果です。
標準入力は、インタラクティブと事前入力の両方をサポートしています。スライドスイッチでインタラクティブを選択しましたが、下記のサンプルコードでprint
出力前に入力待ちになるので、本当の意味でのインタラクティブでは無い気がします。
事前入力は普通に問題なく動きます。
Swiftバージョンは2.2
, 3.1.1
, 4.1
, 5.1
とメジャーバーションをしっかりサポートしています。
8. Online Swift Playground
Swift専用サイトです。
画面構成は上部がソースコードエリア、下部が実行結果エリアとシンプルです。既出のFizzBuzzコードを実行させた結果です。
標準入力は無く、readLine
を強制アンラップするとsignal 4
で落ちます(エラートラップしていない?)。
ソースコードエリアと実行結果エリアの境界を動かすことができずちょっと不便です。
終わりに
iPadにはApple純正のSwift Playgroundsアプリが存在しますが、print
結果が簡単に見えない、readLine
は常にnil
を返すなど、いわゆるコンソールアプリ的な動作環境としては不向きです。
一方、ここでご紹介したOnlineサービスはブラウザから手軽にSwiftに触れることができるので大変便利です。
皆さんの参考になれば幸いです。
Swiftで書いたコードの実行結果から、そのSwift自身のバージョンを知る方法があれば教えてください。
また、記事の誤り等もご指摘ください。 以上です。