uzullaがブログ

uzullaがブログです。

PC初心者でもPHP言語(等)を兎に角手軽に試す - Webアプリエンジニア養成読本 AdventCalendar2014 二日目

20150118 サービスを追記しました。

経緯

f:id:uzulla:20141202032950p:plain

ということで、突然ですが、アドベントカレンダーはじめました。


Webアプリエンジニア養成読本 Advent Calendar 2014 - Qiita


12/1の夕方に言い出した話なので、本当に突然です。この文章からして大変生煮えですが、今後マトモになっていくでしょう(多分)

タイトルのWebアプリエンジニア養成読本とは?

これです。この書籍の著者四名が記事を投稿するハズです。…ハズです。

アドベントカレンダーの私担当分について

話が変わるようですが、上記書籍について、色々な方からお話をいただくのは「この本では(言語の)入門はできない」というご意見です。

そうですね、ある程度コードやHTMLはわかってる前提の本になっており「完全に入門初心者!」の方はサポートすることはできませんでした。言語の入門を書くのは非常にむずかしいので、ちゃんと書くと範囲が広すぎて爆発してしまう。

またそれとは別に、本であるということで、将来にわたって保証がされづらいモノについても記述する事ができませんでした、流行り物とかそういうやつです。

ということで今回のアドベントカレンダーでは、私はその周辺の事を書いて行ければ…と思っております。

…が、まあどうなることやらです。

突然運用みたいな事とか書き始めたら察して下さい。ネタがないんだ。

本日の本題、PHPを手軽に試せるサイトなど。

私は去年、完全な初心者の方にPHPのプログラムをすこしだけ教える、ということをやっていたのですが、そのときに痛感したのはプログラムを試すのに一番のハードルは環境構築だということです。

PHPの環境構築には色々な方法はありますが(前述の書籍などで解説していますが)、XAMPPをいれる等といった定番の方法は、一般の方にはかなりハードルが高いのです。

後ろに立って、ああしろ、こうしろと指示をすれば、何ということはないのですが、書籍として固定された情報だと、何かしらの例外(ボタンがあるべき場所からかわってしまっている、等)があればもう皆さんそこで立ち往生してしまう。難しいですね。

そういった、入門未満の状態で諦めてしまう方が多いことを私は痛感しました。

ただ、最近はブラウザ一つあればPHPを体感することができるサービスが増えました。今回はそれらをいくつか紹介します。

ブラウザ上ですぐに実行、paiza.io

Online PHP/Java/C++... editor and compiler | paiza.IO


「ブラウザ上でコードを書いてすぐに実行!!」とあるように、今簡単なPHPのコードを試すのには今こちらが一番手軽だと思います。ブラウザでコードを入力すると、Paiza.ioのサーバーで実行され、結果だけがブラウザに表示されます。このブログをみている皆さんは当然ブラウザが入っているはずですので、つまりは何の用意も必要がない、ということです。

まずはこの動画をみてください、開始から10秒までの間にPHPのHelloworld(簡単な文字を表示するプログラム)を実行することができています。


ブラウザだけでプログラミングがすぐ始められる【paiza.io】 on Vimeo

(10秒以降は、難しい話なのでみなくてもかまいません)

では、早速動画と同じ事をしてみましょう。

https://paiza.io/ のサイトをひらくと、「コード作成を試して見る(無料)」というボタンがありますので、そちらを押します。

するとエディターの画面に切り替わります。PHPをためしてみましょう、左上の緑色のボタンをおして、「PHP」をえらびます。すると

<?php
// Here your code !

?>

とだけ書かれた黒い入力欄が表示されると思います。ここにPHPのコードを書いていく事が出来ます。

といってもまったくの初心者の方だとここに何をかいていいの…と言うことになるとおもいますので、簡単なサンプルコードを以下に書いてみます。

サイコロプログラム、結果は
<?php
echo rand(1,6);
?>
です!

最初に記入されている全部を消して、こちらに書き換えて、「実行(Ctrl-Enter)」ボタンを押してみましょう。

サイコロプログラム、結果は
2です!

このような表示が下の方にでるはずです、実に簡単ですね!


Paiza.ioはかなり凄くて、ほとんどのPHPの機能をつかう事ができます(一部のファイル操作系関数はエラーになりますが)。

勿論、以下のようなクラスをつかったオブジェクト指向プログラミングも可能です

<?php

class MyClass {
    public function helloWorld(){
        echo "hello, world";
    }
}

$myclass = new MyClass;
$myclass->helloWorld();

また、入力欄(エディタ)がよくできており、簡易な構文エラーは行番号の所に赤バッテンがでますし、補完も簡単なものですがうごきます。


ということで、paiza.ioは「ウェブアプリはつくれないけど、PHPの文法をいろいろ試して見るのはこれでも十分できる!」というものになっています。
たとえば、if文とか、for文とか、配列とか、そういった基本をおぼえたり、試したりすることはできますね。

「じゃあ…構文をどうやっておぼえるんだ?」というのがみたいなのは、また後日お送りしたいと思います*1。是非今後の本アドベントカレンダーをチェックしてください。

WriteCodeOnline

http://writecodeonline.com/php/
http://writecodeonline.com/php/

シンプルイズベストなUIですね、ちゃちゃっと試すだけならこのサイトが一番かもしれません。
「Display as HTML」モードがあるので、HTMLを出力する事も可能です。
PHPは5.3.3と順当といえば順当ですが、ふるいっちゃふるいバージョンが動いています。また、PHP4への切り替えもできるのがなにげにアレな時に便利かもしれません。

当然ながら、セキュリティ上渋いコードはうごきません。

runnable

Runnable Joins the MuleSoft Family


こちらもpaiza.ioのようなことができるのですが、シェル(いわゆる黒い画面)をつかって操作する事も可能です。

「それで?なにがうれしいの?」と思うかもしれませんが、まあ上達してくるとちょっとうれしくなったりするのです。

英語であることと、ちょっと使い方がややこしいことで、paiza.ioよりも自由度があるとしても、初心者の方はつかうのが難しいかもしれません。

また、様々なコードが投稿されていますので、それらをみると勉強になると思います。

シンプルなPHP Sandbox

PHP Sandbox, test PHP online, PHP tester

こちらは極端にシンプルかつ低機能です。そもそも英語なのでウッと思うかもしれません。
シンプルなので、iPhoneなどでも実行できるようです(快適とは言いがたいですが)

codepad

codepad

こちらもシンプルなサイトです。PHP以外にも色々対応しています。
注目点としては、走らせたコードをシェア出来る所です、が、「Private」のチェックをオンにしないと自動的に保存されてシェアされてしまうので、それはそれでどうなん?という気分になれます。

ideone

Online Compiler and IDE >> C/C++, Java, PHP, Python, Perl and 70+ other compilers and interpreters - Ideone.com

某アニメとは関係ないと思います。

それはさておき、こちらもcodepad同様にデフォルトだとコードがシェアされます。
PHPとは関係ないですが、対応言語は非常に多く、TclからBrainF**k、そしてあのPerl6まであるのは高得点です、アセンブラでワロタ。

他とちがうのは、STDINをサポートしていることで、PHPでSTDINとかいわれても困るのはわかりますが、PHPっぽくないコードを書きたいときにはこれはこれで重宝するのではないでしょうか。一応サンプルコードもついていますが、まったくPHPっぽくはありません。

wandbox

http://melpon.org/wandbox/

詳細はわかりませんが、どうやら日本の方がやられているようです。とはいえ、日本語ではありません。*2

対応言語は多めで、C、C++のバージョンが多いのは面白い(clangとgcc両方あったり)ですね。Elixirは他にない気がします。
PHPについては、5.6はないですが、なんとPHP7がサポートされています!これはスゴイw*3

他と違うのは、このサービスのコードがGithubにあがっているところでしょうか。Eval系はセキュリティホールを懸念してか、結構コードは公開されていないので、うれしいですね。ただ、コードのほとんどがC++なので私はあきらめました。

解説はあまりありませんが、GithubのREADMEをみるかぎり、APIなどもあるようです。

phpfiddle

PhpFiddle - PHP/MySQL in-browser IDE and online server

最初にでる表示がイマイチわかりづらいですが、Mysqlなどをつかうコードもテストできるようです。
とにかく色々機能があるのはまちがいないんですが(カラーピッカーまである)、残念ながらわかりやすいとはいえない。「Intrusion detection」ってなんだそれという気分になれます。

3v4l.org - online PHP & HHVM shell, run code in 100+ different versions!


Online PHP editor | Test code in 250+ PHP versions

一括でたくさんのバージョンのPHPの挙動を確認することができます。しかも差分だけ表示するので、ころころ変わるPHPのバージョン間での差異を確認するのにはぴったりではないでしょうか。
ただ、一つだけ指定するのはできないので結果がでてくるのには時間がかかります、よって「ちょっとやってみたい」というのには向いていないと思います。

codepad.viper-7.com

http://codepad.viper-7.com/
http://codepad.viper-7.com/

比較的新しいバージョンの(5.6系など)PHPがそろっています。こちらもテストしたコードは保存されるようなので注意しましょう。
右側に色々と機能があって、プロファイリングとかコールグラフ表示とかいいな!…と思ったのですが、20150120現在「Not yet implemented」とのこと。

皆さんお馴染みダンコガイ先生のLLeval

lleval - run codes from your browser


これまたサイトとしてはシンプルで素っ気ないですが、llevalはAPIとして叩く事ができます。
勿論、初心者の方におかれましては「API?なにがうれしいの?」と思うかもしれません、実際私もこのAPIをつかったことはありません。

ブラウザだけでなんでもかんでも、Koding


Modern Dev Environment Delivered · Koding


ここまでのpaiza.ioなどが簡単なプログラムを実行するだけのものならば、Kodingは本物のサーバーで、本物のPHPを使う事ができる環境です。Paiza.ioほどの気軽さはありませんが、本物のウェブアプリをブラウザだけでつくることができます。

こちらは過去にエントリをかきましたので、こちらのエントリを参考にしてください。
バージョンがあがって、見た目は結構かわってしまっていますのでそのまま参考にはできませんが、なにができるかはわかるかなと思います。(もし要望があれば更新したエントリでも書きたいですね)


「Webアプリエンジニア養成読本」とKodingでPHPを勉強する - uzullaがブログ


Kodingは無料でつかえますが、一定時間で自分のサーバーの電源がきれてしまいます(作業中は切れない)。ただし、学習中においては別にこれは問題にならないでしょう(多少、うっとうしいでしょうが)

とにかくブラウザ以外のソフトを用意できないのであれば、おそらくここが一番なんでもできる環境だと思います。

iPadPHP、Kodiak PHP

http://www.becomekodiak.com/
http://www.becomekodiak.com/


予想外かもしれませんが、iPadでもPHPを勉強することができます。有料ではありますがiPadだけでPHPのコードを編集し、実行することができます。英語ですし有料なのが難点ですが、これ系においては、エディタが比較的使いやすいと思います。

また、内部的にウェブサーバーがうごいているので、本物のウェブアプリ作成とあまりかわらない勉強が可能です。

(余り更新されていないこのソフトですが、一応iOS8.1.1とiPad2では動作を確認しています)

iPhoneiPadPHPのdraftcode


DraftCode - Offline PHP, JavaScript and HTML for iPhone and iPad


すみません、こちらは私はためしていません。ただ、更新も最近ですし、こちらはKodiakと異なりiPhoneでも実行する事ができるそうです。

オフラインのiPhoneで実行できるということは、どこでもPHPのコードを書いて試す事ができますね!

番外、無料レンサバ Hostinger

http://api.hostinger.jp/redir/4493146
http://api.hostinger.jp/redir/4493146


太古の昔、PHPレンタルサーバーにアップロードして、実際にうごかしながら勉強する時代がありました。

「ダメなコードを世界に公開するのはダメ」ということで、そのような手法は今では推奨されていません。しかし、意外におもわれるかもしれませんが、ダメではないコードかどうかを決めてくれる人や、指標は世の中にはありませんので、いつかは自分の責任で使い始める必要があります。
自分が今日だ!とおもえば今日がその日なのです。

とはいえ、本当に初心者の人は手も足もでないでしょう、ブラウザだけでは利用できません。エディタとFTPクライアントなどを用意する必要があります。

いくらか勉強を進めて実際にPHPでサイトを構築するときにはこのような無料のレンタルサーバーを最初の足がかりにする事になるでしょう。

まとめ

以上の通り、現在ではインターネットに接続されたブラウザや、スマホアプリなどでPHPを実行できる環境があり、PCの知識がほとんどなくても学習を開始する事ができます。
今回述べたもの以外にも、様々な同様のものがあります(もっともっと良い物をご存じなら、是非教えて下さい)。

そして、番外ではありますが、無料のホスティングサービス(勿論クレカの登録なども不要)もまだまだ存在するのがPHPです。実に気軽です。


ただまあ、はっきりいって今回紹介したこれらは、慣れてしまえば不便ですし使わなくなります。かく言う私も、自分のPCでPHPを開発できるので、自分ではつかいません。

しかし冒頭の通り、「Helloworldすら始める方法がよくわからない」、「お金を一銭も払いたくない*4」、「学生や子供でクレカがないから業者と契約できない」といった様々な理由で腰が重い人でも、これらならHelloworldくらいならできる…と思います。


勿論、始めるのが楽でも、実際に何でもつくる事ができるようになるのはーどう言いつくろったとしてもーやっぱり、すっごい大変なわけですが、何事も千里の道も一歩からです。

「後で読む」とせず、早速こういったサービスでPHP(等)をはじめて見るのはいかがでしょうか。

最後に、しなければならない宣伝

さて、宣伝タイムです。帰らないで下さい。

まず再度の書籍の宣伝です、本アドベントカレンダータイトルの書籍です。

このエントリが役立つ方には、まだちんぷんかんぷんかもしれません。即座に買えとはいいませんが、いつかは買って欲しいです。まあ、本屋にいって他の書籍のついでに立ち読みしてみるのも良いでしょう、買って欲しいですが。

もし、この書籍の内容が理解できれば、おそらく仕事でもなんとかやっていけるレベルにいるのではないでしょうか。そのようなベンチマークとしても役立つと考えております。つまりは買っていただきたい!ということです。

しなければならない宣伝2

来年の夏に開催されるYAPC::Asia Tokyo 2015についてです。


YAPC::Asia Tokyo 2015

YAPC::Asia Tokyoは世界最大級のエンジニアの手による草の根技術カンファレンスです。これまで9回開催され、様々な技術に関する発表そして技術者同士の出会いを生んできました。

「なんかエンジニアコミュニティってきいたことがあるけど…」「カンファレンスってどんなの?いったことない」という人でもきっと新しい発見があるイベントとなりますので是非ともチェックしてください。

f:id:uzulla:20141201013416p:plain

YAPCPerlのカンファレンスと思われがちですが(実際そうなのですが)、どんな言語の人でも、きっとPHPの人でも楽しめるイベントになっております。なにせ去年のベストトーク賞はPHPトークでした*5


来年は10年目かつ、今の運営における最後の開催となり、規模も、話題のバリエーションも間違いなくパワーアップしますので、是非来年のスケジュールにいれておいてはいかがでしょうか?

f:id:uzulla:20141201013436p:plain


…といっても、来年の話では忘れてしまうでしょう。近日中にお知らせをとどけるメールマガジン的なものができるはずです(鋭意作成中)

本日の所は、まずは公式Twitterアカウントのフォローなどをされてはいかがでしょうか?


といった宣伝をおこなった所で、こちらからは以上です。また次回お会いしましょう!

明日はゆーすけべーさんによる「Webアプリエンジニアな理由」です!

*1:思います、思ってはいます!

*2:エディタのキーバインディングvimEmacsみたいなのまであるのが日本人っぽいなとおもったらそうだった、というかxyzzyがある時点でウォッってなった、なつかしい

*3:とはいえ、どのタイミングのHEADかわからないので気を付けましょう

*4:ただし、ウェブアプリ養成読本は除いて貰いたいですが!

*5:というか私です