様々な言語がありますが、どれを覚えるべきでしょうか?
なお、条件は下記の通りです。
やりたいこと
・Webサービス(AmazonやGoogleなど)を使った簡単なWebアプリが作れるようになりたい。
私のスペック
・プロとしてのWebデザイン経験があり、現在はWebディレクタ的な職にある。
・システム関係の簡単な要件定義等は行ったことがあるが、あくまで発注側。
・あえていうならJavaScriptの知識がある程度。SQLとかまったくわからない。
Web屋なので普通に考えるとPHPと言うことになるかとは思うのですが、
最初からならrubyとかPythonとかのほうが面白いという意見も聞きます。
「覚えやすさ」「開発の簡単さ」あたりを重視してご回答いただければうれしいです。
覚えやすさで言えばRubyだと思います。
Rubyでマッシュアップならこちらのサイトが参考になるかも知れません。
http://www.mashupedia.jp/wikis/view/%E3%83%97%E3%83%AD%E3%82%B0%...
◆RUBY で Google API をいじって遊ぶためのメモ◆
これから始めると言うことなので多分、サーバを自分で用意するのではなくどこかのレンタルサーバを借りて開発をしてみるんだと思われます。
その場合、多くのレンタルサーバで使える言語という観点ではやはり PHP もしくは Perl が無難なんじゃないでしょうか?
CGI が使えるサーバなら実は ruby や python も使える可能性は高いですが、明示的に「Ruby や Python が使えます」と謳っているところは少ない気がするので。
覚えやすさとかは他の人が答えてくれると思うのでちょっと違った観点の意見を言ってみました。
ありがとうございます。
Linuxはちょっとわかりますので、サーバは問題ないかと思います。
ありきたりですが、PHPがいいかと思います。
自分も勉強を始めたばかりですが、すごくとっつきやすく、それでいて奥が深い言語だと思います。
ちょうど「http://lovecall.14.dtiblog.com/」な企画(?)も始まったところで、いい機会じゃないでしょうか。
ありがとうございます。
やはりPHPですかねえ。
リンク先ありがとうございます。
今後の展開が楽しみですね。
Webアプリは詳しくないので単にプログラミングの始め方になってしまいますがご了承ください。
第1段階:まずC言語で基本を学ぶ
あたりを学んでおけば、基礎を身に付けるには十分かと思います。
で、これだけの内容でも、難解な文法とか不可解なバグとかで「死ぬほど」苦労するとおもいます。
http://www.codegear.com/jp/downloads/free/cppbuilder
第2段階:Webアプリ構築に使う言語で応用する
私が知っているWebアプリに使えそうな言語はJava(含むEJB/Servlet/JSP)位ですが、他の言語でもCよりははるかに開発の効率が上がると思います。
重要なのは、C言語(とか似た性格の言語)で苦労した経験がないと、開発効率を上げる為の言語の機能が、単なる不可解な仕様にしか思えない、と言う事です。
# 例えとして適当かどうかは分かりませんが、料理を覚える時に包丁で野菜の皮むきの練習をした後にピーラーを使い始めたほうが良い、と言うのと似た感じです。
ありがとうございます。
おっしゃられることはよくわかるのですが、やはり楽をしたいなというのが正直なところです。
再度回答いたします。
>「なんでRubyが覚えやすいのか」あたりを解説していただけるとありがたいです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060919/248312/
>Rubyの生産性はJavaの10倍とさえいわれます。
>なぜRubyは生産性が高いのでしょうか。それは,Rubyはいろいろな言語から優れた所を集めた「いいとこ取り」言語だからです
例えば以下はRubyの関数です。
def add(a,b)
a+b
end
これは2つの物を加えるという関数ですが、add(1,2)は3になりadd("ABC","DEF")は"ABCDEF"になります。
他の言語の関数と比べるとすごく単純なことがわかると思います。
例えばCの場合はこうなります。しかもこの関数は文字列は扱えません。
int add(int x,int y)
{
return x+y;
}
Rubyは数字も文字列も全てオブジェクト型として扱われます。
そのためRubyは人にやさしくマシンに厳しい言語になります。
(型の判定などを全て動的にマシンが行っているわけです)
また、単純な簡易言語ではなくて、緻密に設計されたオブジェクト指向言語なので
使っているだけで楽しくなる言語です。
以下に私が最初にRubyを勉強したページを紹介します。
http://www.altum.jp/math/ruby/index.html
以下のサイトではインストールなしでオンラインでRubyが試せるので試してみてください。
ありがとうございます。
Rubyのメリットがとても良くわかりました。
文字列も数字も同じ扱いというのは面白いですねえ。
>「覚えやすさ」「開発の簡単さ」あたりを重視してご回答いただければうれしいです。
PHPにとりあえずしておいたらOKです。
PHPからRubyに移行するのはそれほど苦にはならないので。
>最初からならrubyとかPythonとかのほうが面白いという意見も聞きます。
最初の選択の言語には、要望から考えてお勧めできないですね。
面白いというのは、つぶしがききにくいので、どうかなと。
言語の難易度から考えてもPHPでしょうね。
ありがとうございます。
「PHPの難易度の低さ」についてもう少し解説していただければありがたいです。
Rubyをお勧めします!
私見ですが習得のしやすさという観点であると言語使用ではPHP、Ruby、Pythonあたり(LL)はそれほど学習コストは変わらないと思います。個人的にはPerlは柔軟すぎて少し面倒でしょうか(読みづらい)。Javaは多少学習コストは高いと思います。
http://q.hatena.ne.jp/1155616381
にある質問が参考になると思います。
とりあえずWEBアプリに利用するという前提であればRuby on Railsがあるので(PHPでもRailsライクなSymfonyとかありますが完成度的にはRailsの方がやはり上だと思います)Rubyがいいような気がします。
>>これから始めると言うことなので多分、サーバを自分で用意するのではなくどこかのレンタルサーバを借りて開発をしてみるんだと思われます<<
上記はまさにそのとおりでRuby on RailsでWEBアプリの開発をすると、作ったアプリを公開するときのレンタルサーバの選定では無料ということにこだわると多少困るかもしれません。ただ無料にこだわらなければ問題ありません(5$/月程度でもあります)。また開発段階ではローカルでテストをして開発をされると思うのでその段階では変わりません。
あとPHPはWEB専用ですが、Ruby、Python、PerlはWEB以外の用途でも利用できます。LINUXは問題ないとのことなので、どれでも問題ないですが個人的な好みでRubyをお勧めします。
残念ながら実行速度についてはPHP、Perl、Pythonに比べては現在のところRubyは劣ります。ただそれも今年末で解消されるかもしれません。
ありがとうございます。
Ruby、やはり有力ですねえ。
Webサービスとのことですが、REST APIを利用してつなぐとかであれば、PHPやRubyなどで十分かと思いますが、SOAP/WSDLやBPELをもてあそびたいと考えるのであれば、Javaがよいと思います。
NetBeans + Enterprise Packを使用すると、比較的簡単にWebサービスの開発、及び、連携ができ
ます。
http://www.netbeans.org/products/enterprise/index_ja.html
目的にはよりますが、この場合純粋にJavaでプログラミングできる(オブジェクト指向を理解するなど・・・)というレベルでなくても、ウィザードなどに従ってちょっとした処理を追記するだけでプログラミングができてしまいます。
何かの参考になれば。
Javaは正直考えていませんでした。
Web屋からすると大型案件向きという先入観があるのですが、他の言語と習得の平易さを比較するといかがでしょうか?
連続ですみません。
Javaについてですが、お手軽さは正直PHP、Ruby、Pythonと言ったスクリプト言語にかないません。
大型案件向けというのも間違っていません。
ただ、逆に勝っている点は、開発環境が充実していると思います。もちろん、スクリプト言語の開発環境も存在しますが、まだ不十分な部分があるかと思います。
その点、Javaですとデファクトスタンダードとしてのeclipseがあり、Sunが開発しているNetBeansも有効な開発環境かと思います。そのため、Webサービスを利用したアプリケーションという形に特化した場合には、よしあしは別として、ツールのサポートにより、かなりの部分を自動化ができると言えます。
この時点で、Javaでプログラミングするというよりは、ツールの使い方を覚えるに近くなってしまうのですが、用途によってはありだと思います。
例えばですが、クラスを新規作成し、メソッド(関数)を追加すると、それがWebサービスとして配備できてしまうなんてことができます。
これだけみると、PHPで、PEARのSOAP_Serverなどを使うよりは分かりやすいかなぁと個人的には思います。
また、Webサービスを利用するクライアントは、Javaといいつつも実際の表示部分はJSPで書けるので、そうすると、記述としてスクリプト言語とそれほど大差ないかとも思います。
この場合NetBeansであれば、JSPを作成して、WSDLファイルを指定して、Webサービスクライアントの追加といった操作をすると、Webサービスを呼び出す雛形が生成されます。
最終的には目的に依存すると思うのですが、PHP、Rubyなどが言語仕様から来る手軽さを持っているのに対して、Javaにはツールによるサポートの恩恵にあずかれるという利点があると思っています。
速攻でご回答いただきありがとうございます。
やはり手軽さという面でいまいちなのかなあと思うのですが、ある程度他の言語がわかってきたところでJAVAにチャレンジしてみると面白そうだなと感じました。
Rubyをお勧めするもうひとつの理由。
http://www.atmarkit.co.jp/news/200707/24/msruby.html
http://journal.mycom.co.jp/articles/2007/05/08/silverlight11/001...
http://tobysoft.net/diary/archives/2007/08/ironruby.html
ただいまMicrosoftが.NETで実行できるIronRubyを開発中。
IronPythonってのもあるんですが、Javascript/C#/Python/RubyでWindows用のクライアントが書けるようになります。
これらは今一部で話題のSilverlightの制御言語としても利用可能です。つまり今までサーバ用処理言語またはちょっとしたクライアントサイド処理を行うための言語だったRubyの応用範囲が一気に広がる気配があります。
RoRとSilverlight(w/IronRuby)の組み合わせなんて相当強力そうに思えます。
同じ理由でPythonもいいかもしれません。ただあのインデントでブロック構造、という記法が嫌か嫌でないか…かな。
おおっ。それはすごいですね。
でも、Adobeの方でもそういう動きはありますね。
あっちはPHPでも良かったような。
今更ですが、Perlをおすすめします。今更感がある、というのは逆に考えれば枯れていて十分蓄積された"素材"がそろっていることだとも言えます。このページ自体もPerlで出来ていますし。
特にPerlにはみんなが蓄積してきたCPANがありますし、ちょっとしたサービスを、わずか数行でこなしてしまえるところがそら恐ろしい言語だなと思う次第です。昔あった、電子ブロックを組み合わせる感覚、でしょうか。
最近、社内で使っているWebメーラーに勝手にログインして情報を取得できないかなと思っていたら、WWW::Mechanizeというモジュールを知りました。
use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $mech->get( $url ); my $res = $mech->submit_form( form_name => 'login', fields => { username => 'user', pass => '1234' }, button => 'ログイン' );
この時点で、既に$resにはログイン後のHTML情報が入っています。あとは、必要とする調理を行なえばいいのです。情報としてはちょっと古いかもしれませんが、こちらもご覧頂ければ幸いです。このモジュールを使えば、Googleの検索結果を3行ぐらいで取得できるかと思います。
Perlが絶対ではありませんが、一考の価値はあると思いますよ。こんな意見でもお役に立てれば幸いです。
確かに、結構Perlの案件は多いので、それだけでもメリットはあるんですよね。
ううむ、悩むところです。
JavaScriptも立派なプログラミング言語です。
基本的になにもセットアップせずとも使える言語なので、
環境のセットアップが面倒な場合にとてもいいでしょう。
テキストフォームなど、要素をコピーして、
それに対してプログラムを埋め込んでいくイメージは、
他の言語にあまりないものですが、
プログラミングに対する知恵は十分に学べます。
GmailのUIがJavaScriptで作られていることを考慮すると
結構強力な言語であることがお分かりいただけると思います。
データの保存に弱い面がありますが、
Webサービスを利用するとのことでしたので、
そのあたりも大丈夫だと思います。
JavaScriptはやはりサーバサイドのシステムと組み合わせた方が面白いことが出来るなと言うのが正直なところで、その辺もふまえてサーバサイド側の言語を勉強したいと考えています。
>「PHPの難易度の低さ」についてもう少し解説していただければありがたいです。
難易度の低さを説明すれば、そのままPHPの勉強が終わってしまうほど簡単だと
いうことです。もちろん、Ruby(Java)ライクにもコーディングは可能ですよ。
Rubyなら、オブジェクト指向でないとプログラム作れない
Rubyは、言語使用として少しマニアックだと思う。
Ruby、Javaも言語仕様として、コーディングが制約されてしまうため
よほどの初心者でない限り、オブジェクト指向ライクなコーディングになりますし
そうしないとプログラム組めません。
PHPなら、言語の習得率が未熟でもコードかけますし、ほかの言語よりやっぱり
手軽です。
>SQLとかまったくわからない
なので、言語習得に時間をかけるより、SQLの勉強したほうがトータル有益だと思います。
Javaも勉強の範疇にいれれるのなら
PHP->Java->Rubyの順に覚えるのが良いと思います。
Javaも、オブジェクト指向でないとプログラム作れないですけど。
http://www.kbmj.com/tech/index.php?itemid=25
Javaが使える環境なら、Javaをお勧めしますけど。
ありがとうございます。
なんとなく、PHPとRubyの攻防っぽくなってきましたね。
Webデザインの経験がおありで、Webディレクターをされているなら、PHPが良いのではないでしょうか。
例えば、Movable Typeで一部にPHPを使ったりするのにも役立ちますし、WordPressのテンプレートやプラグイン等を思い通りに作ったりするのにも役立つと思います。私はWebデザインが専門ですが、最近は低コストでWordPressを使った企業サイトの案件などもうまく行っています。
WordPress Japan
Wikipediaで使われているMediaWiki、ECサイトアプリケーションとして定番の(おすすめはしませんが)oSCommerce、GeekLog、Nucleus CMSといったCMS、phpBB、phpMyFAQ、ソーシャルネットワーキングのOpenPNE、XOOPSなど、様々な定番オープンソースアプリケーションがPHPで作られています。これらのソフトをうまくカスタマイズしたり、拡張したりするのにもPHPは役立ちますし、また日本語での情報も手に入りやすい状態にあると思います。
フレームワークも充実してきて、Ruby on Railsに影響を受けたSymfonyやCakePHPなど、1から作るアプリも素早く開発できる環境が整っています。
CakePHP Users in Japan
http://cakephp.jp/modules/newbb/
Symfonyの日本語情報
反面、PHPはアプリケーションが簡単に作れてしまうので、知識が少ない人が作った危険なコードが氾濫しがちですので、信頼できる情報源からきちんと学ぶ必要もあるとは思います。
なるほど。
確かにそのあたりがPHPであることを考えると、PHPをとりあえず始めるのが良さそうですね。
最近はWordPressの案件も増えていますし。
個人的には、PHPをおすすめします。
benjamintokyoさんの要望の場合、Rubyは合わないでしょう。
理由:
Rubyは新しく、書き易く、生産性も高いと思いますが、言語初心者には向かないと思います。
Webだけで良く、楽をしたいのであれば、PHP4 or 5しかないと思います。
入門であれば、perlもいいと思いますが、Webアプリを作るのであれば、Webに特化している言語だけあって、それ用の関数があるので、PHPの方が楽かと。
Webアプリに関しては、Ruby,Python,PerlよりPHPの方が環境としても何かと使えるかと思います。
あと、周りに聞ける人がいるかどうかも重要です。
言語を知っている人にとっては、「開発の簡単さ」は、Rubyが上かと思いますが、言語初心者にとっては、「覚えやすさ」も「開発の簡単さ」もRubyよりPHPと思います。
「覚えやすさ」だけだったら、Perlかなぁという感じです。
#一応、全て個人的な意見ですからね。
ありがとうございます。
とりあえずPHPかなあと考えがシフトしております。
rubyをお勧めします。
11番の回答者の方がCPANをあげられていますが、RubyにもRubygems(宝石箱)があります。
Mechanizeモジュールもありますので
http://mono.kmc.gr.jp/~yhara/rubyscraping/?Mechanize
以下を実行するだけで必要なモジュールをダウンロードして使えるようになります。
gems install mechanize
13番の回答者が言われている
>PHPなら、言語の習得率が未熟でもコードかけますし
こちらを読むとRubyではオブジェクト指向のプログラムしか書けないように読めますが、
Rubyは元々オブジェクト指向で設計されているので、オブジェクト指向で使うのも楽しいですが、
クラスを使わずべた書きのスクリプトとして書いても全然問題ないです。
これは日常的に簡単な小物のツールが欲しい時にすごく便利です。
最新の言語なので最新の技術を簡単に扱えるのがいいですね。
一番のお勧めは「プログラムを作るのが楽しくなる」という点です。
昔のrubyには「驚き最小の法則」というのがあり
プログラマが気持ちよくプログラムが組めるように設計してあります。
私も最初WEB APIのプログラムをやってみたくて
はてなのAPIの例がperlとrubyだったので初めてrubyを使ってみて
あまりにも面白くてはまりました。
ぜひ、一度試しに簡単なプログラムでも動かしてみてください。
ありがとうございます。
こういう意見を伺うと、やはりRubyもいいなあと迷いますね。
JavaScript(各種ライブラリを含む)やFlashに習熟しておくと、インターフェースを柔軟に組めるようになるかと思います。色んなプログラミングを試してみて、自分にフィットしたものを選ぶのが良いと思うので、表面的な言語間の対立に惑わされない方がいいかもしれません。取りあえず、Perlを覚えておくと小回りが効くイメージがあります。あと、作りたいアプリケーションが決まっているのであれば、ネットや書籍を調べて、どの言語が一番簡単に作れそうか調べてはどうでしょうか?下地に使えそうなサンプルがあると、開発がグッと楽になりますね。以上、個人的な感想です。ご参考までに。
ダミーURL(CPANのくだりはPerlのメリットを語っているかも)
ありがとうございます。
実際のデザインやコーディングは他のスタッフに振る立場になってしまったので、その辺は現在あまり重要性が高くないのです。Perlはなんとなく今更な感じが・・・。
phpがお勧めですね。
学習とアウトプットまでが短いので、事業の可能性を見るには良いです。
ずっと腰をすえてやっていくつもりならhttp://hatena.ne.jp/, gree, mixiといったところが使っていますし、ライブラリの充実度等々によりperlをお勧めしますが、perlはいろんなやり方があるとはいえ(下級者でも使える)、上級者レベルと下級レベルに絶大なる差がある言語なので、その道にそんなに行く気が無い人にはお勧めしません。
rubyは言語/開発コミュニティ自体が開発状態みたいなようなものなので自分ならお勧めしません。
遊びに比重を置くのでなければ、枯れている言語を使うのが普通です。
javaはチームで開発するのならありだと思いますが、個人でやるのなら使う必要はないでしょう。
ありがとうございます。
やはりPHPかなあと思いつつ、回答数制限が残り二つになりました。
たくさんの意見がお伺いできて本当にありがとうございます。
Rubyをお勧めしますね。
PHPからRubyは楽だけど、逆は難しいという回答がありますが、確かにそうだと思います。
Rubyを一度使うと他の言語で考えるのがおっくうになります。
まあこれはC++を使う前にCを覚えろというのと同じで
PHPよりRubyが使い易いことを意味しています。
仕事でPHPを使わないといけないのであれば仕方がないですが、本業とは別に言語を覚えるわけですよね。
楽しく学べるというのも重要ではないでしょうか。
Rubyはオブジェクト指向を学ぶのに適しているため、学生が最初に学ぶ言語に最適だという意見もあります。
Perlの使い易さとLispの抽象性とJavaのオブジェクト指向を引き継いだRubyは今も進化し続けています。
仕事としてやられるのであればPHPも良いかも知れませんが、自分の興味で覚えるのであればRubyをお勧めします。
http://itpro.nikkeibp.co.jp/a/it/alacarte/iv1221/matsumoto_1.sht...
ありがとうございます。
基本的に遊びなのですが、将来商売に発展しない可能性もないかなという状況なので、PHP>Rubyの順の方がいいのかなという感じです。
Webディレクタ的な職にありシステム関係の簡単な要件定義等を行われたことがあるということですのでRubyをお勧めします。
以下の記事参照してみてください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248638/
Rubyはとても簡単にプログラムが組めるので、まずRubyでプロトタイプを組んでみるという記事です。
Rubyを仕様記述言語として使えないかという研究も行われているほどです。
自分の手で簡単にシステムのプロトタイプを組んで、実装はPHPなりJavaなりで作ってもらうというのはどうですか。
ありがとうございます。
ここまでの要件定義はしてないので、まだ荷が重いかなと思います。
たくさんの方にお答えいただきありがとうございました。
「とりあえずPHPに手をつけて、将来的にRubyにも流れていく」
というのが一番よさそうかなと思いました。
全くの趣味ならばいきなりRubyを選択したと思いますが、
本職がWeb屋なので、そちらでメジャー感のあるPHPから入ろうかと思います。
また、1年くらいたって、PHPがそこそこわかったころ、Rubyを巡る状況もさらに良くなっているのではと思いました。そのころから入る方が楽かなと想像しました。
回答をいただいた皆様に深く感謝します。
また、回答が締め切られたのでポイントでお送りいただいた方もいらっしゃいました。
後ほどポイントでお返しいたします。
本当にありがとうございました。
ありがとうございます。
「なんでRubyが覚えやすいのか」あたりを解説していただけるとありがたいです。