LoginSignup
3
4

More than 3 years have passed since last update.

Swift Online(Swift以外 Onlineも含む)

Posted at

はじめに

Swiftのシンタックスをちょっと確認したいとか、このコードが期待通りに動くのかを試したいとか、自分はそういう時に、その都度Macを起動しXcodeを立ち上げるのも面倒なため、iPadからオンラインでSwiftをコーディング&実行することがあります。

ここでいうオンラインとは、ウェブブラウザ上でSwiftのコンパイル・実行ができる環境のことを指します。

そういったオンラインサービスを提供しているサイトをググったところ、無料、かつ、アカウント登録不要で利用できるサイトを8つ見つけたので、各サイトの概要と特徴をまとめておきます。

Swiftのバージョンは今後新しくなっていく可能性があります。ここに記載したバージョンは執筆時点(2020.4.22)のものです

確認ポイント

各サイトについて、次の4項目を共通的な確認ポイントとしました。

  1. Swift専用か多言語対応か
  2. Swiftのバージョンを選択できるか固定か
  3. 標準入力をサポートしているか
  4. コード補完機能があるか

1. Swift専用か多言語対応か

サイトを分類すると、Swift言語専用のサイトと、Swift含む多数の言語をサポートしているサイトに大別できます。

8サイトのうち、Swift専用は3サイト、残りは複数の言語をサポートしています。

2. Swiftのバージョンを選択できるか固定か

次にSwiftのバージョンを選択できるサイトか、特定の固定バージョンかを確認しました。

8サイトのうち、バージョンを選択できるのは3サイト、バージョン不明1サイト、残りは特定バージョンのみでした。

3. 標準入力をサポートしているか

次に標準入力ができるかどうかを確認しました。標準入力ができない場合はreadLinenilを返すため強制アンラップのコードは落ちます。

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(パイザ)は、コードを書いて書類選考なしで面接・カジュアル面談に進める、全く新しいカタチのコーディング転職サービスです。」と謳われてます。(アルバイでもいいのかな?(余談です))
IMG_0014.PNG
「コードを作成してみる(無料)」のバナーをクリックすると、コーディング画面に遷移します。画面左上にある言語選択のボタンでSwiftを選びます。Swift以外にも多数の言語をサポートしています。
IMG_0015.PNG
上側の黒いところにコードを書いて、その下の実行ボタンを押すとコンパイル&実行します。@koherさんのFizzBuzzを実行させた結果の画面です。
IMG_0016.PNG
実行ボタンの下にある入力タブを押すと、標準入力のデータを入力するエリアに切り替わります。
IMG_0017.PNG
ちゃんとreadLineが機能しています。
IMG_0018.PNG

2. Swift Playground

キシカワカツミさんの個人サイトのようです。サポートバージョンが細かく、10.2インチiPadの縦モードでもプルダウンがすべて表示しきれません。
IMG_0019.PNG
既出のFizzBuzzコードを実行させた結果です。
IMG_0020.PNG
標準入力を指定することろは見当たらず、試しにreadLine強制アンラップすると予想どおり落ちました。
IMG_0021.PNG
サポートするバージョンが豊富なので、バージョン違いによるシンタックスや動きの違いを確認するには助かるサイトだと思います。また、執筆時点で最新バージョンである5.2をサポートしているのは当サイトだけでした。

3. repl.it

イタリアのドメイン名でしょうか? 上記リンクから遷移した画面です。このサイトは数多くの言語をサポートしています。下記スクショはその一部です。
IMG_0023.PNG
Swiftのリンクをクリックすると下の画面に遷移します。コードを書いてrun▶︎で実行します。既出のFizzBuzzコードを実行させた結果です。ソースコードのインデントに対応する縦線が入り見やすいです。
IMG_0024.PNG
右側の黒い部分がコンソールをリダイレクトしているようで、コンパイルと実行のコマンドラインがそのまま見えます。また標準入力もインタラクティブにリダイレクトしているようで、printを出力した後プログラムが止まり、適当に文字をタイプしてEnterキーで再開しました。
IMG_0025.PNG
画面右側にソースファイルを管理するペインが見えるので、複数のファイルに分かれているような大きい規模のプロジェクトも実行できるのかも知れません(未確認)。

4. codingground

このサイトで驚いたのはサポート言語の豊富さです(75?)。今回紹介したサイトで一番かも。
IMG_0026.PNG
縦長のトップページに、それはもう沢山の言語がアイコンと共に並んでいます。下はその一部です。BrainfuckやWhitespaceといったマニアックな言語まであります。
IMG_0027.PNG
Swiftをクリックすると下記の画面に遷移します。左上のExcuteを押すとコンパイル&実行します。既出のFizzBuzzコードを実行させた結果です。
IMG_0028.PNG
Excuteの並びのSTDINタブを押すと標準入力のデータを入れる画面に切り替わります。Swiftのバージョンが4.0と今やちょっと古い感じですが、レア言語を触ってみるには面白いサイトかも知れません。しかし、Whitespaceは動きませんでした。環境の問題と思われます。残念。
IMG_0029.PNG

5. SwiftWasm

ブラウザでSwiftを実行する」という大きなバナーの通りですが、ページの後方には「Swiftの多くの機能はまだWebAssemblyで動作していません」の記載もあるので、開発中ソリューションのお試しサイトかも知れません。
IMG_0030.PNG
当サイトのサンプルコードがFizzBuzzとフィボナッチだったので、FizzBuzzのみ実行させた画面です。Runでコンパイル&実行します。
IMG_0032.PNG
元々のサンプルコードの下の方に、SwiftでブラウザのJavascriptを実行させるコードが書いてあって、実際に動かすとブラウザのalretダイアログが出てきました。
IMG_0033.PNG

6. GDB Online

Aboutページに『C/C++言語用のオンラインコンパイラおよびデバッガツールです。組み込みgdbデバッガーを備えたデバッグ機能を提供する世界初のオンラインIDEです』と謳っていて、画面構成もPC想定と思われ、10.2インチiPadでは入りきりません。言語もメジャーなところはサポートしているようです。
IMG_0034.PNG
右上のLanguageでSwiftを選んで、既出のFizzBuzzコードを実行させた結果です。
IMG_0035.PNG
画面右側のペインにIDEらしく変数とか監視できるような感じですが、残念ながらSwiftのDebugは未対応でした。
IMG_0036.PNG
今後サポートされると非MacユーザもSwiftがもっと身近になるかも知れません。
標準入力は、インタラクティブとテキスト(事前入力)の両方をサポートしていて、画面の中央付近にあるラジオボタンで切り替えます。
IMG_0038.PNG
インタラクティブ指定時の実行結果です。
IMG_0037.PNG
上の画面では見えてませんが、stdout、stderrの出力エリアもあって、C/C++開発者だと重宝するかも知れません。
FAQページに「ソースコードやstdin等のMAXサイズ、コンパイル・実行時の最大時間、メモリの上限」などの制限が記載されているしっかりしたサイトですが、Swiftのバージョンが古いのが残念です。

7. JDoodle

トップページに『72言語、2DB』と謳っていて、このサイトもサポート言語が豊富です。Whitespaceもあって、こちらのサイトはちゃんと動作しました。
IMG_0039.PNG
Swiftのリンクを押すと画面が遷移します。既出のFizzBuzzコードを実行させた結果です。
IMG_0040.PNG
標準入力は、インタラクティブと事前入力の両方をサポートしています。スライドスイッチでインタラクティブを選択しましたが、下記のサンプルコードでprint出力前に入力待ちになるので、本当の意味でのインタラクティブでは無い気がします。
IMG_0042.PNG
事前入力は普通に問題なく動きます。
IMG_0041.PNG
Swiftバージョンは2.2, 3.1.1, 4.1, 5.1とメジャーバーションをしっかりサポートしています。
IMG_0043.PNG

8. Online Swift Playground

Swift専用サイトです。
IMG_0044.PNG
画面構成は上部がソースコードエリア、下部が実行結果エリアとシンプルです。既出のFizzBuzzコードを実行させた結果です。
IMG_0045.PNG
標準入力は無く、readLine強制アンラップするとsignal 4で落ちます(エラートラップしていない?)。
IMG_0046.PNG
ソースコードエリアと実行結果エリアの境界を動かすことができずちょっと不便です。

終わりに

iPadにはApple純正のSwift Playgroundsアプリが存在しますが、print結果が簡単に見えない、readLineは常にnilを返すなど、いわゆるコンソールアプリ的な動作環境としては不向きです。
一方、ここでご紹介したOnlineサービスはブラウザから手軽にSwiftに触れることができるので大変便利です。
皆さんの参考になれば幸いです。

Swiftで書いたコードの実行結果から、そのSwift自身のバージョンを知る方法があれば教えてください。
また、記事の誤り等もご指摘ください。   以上です。

3
4
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
3
4