キャリアVol.88

「今年こそは……」やるやる詐欺になりがちなプログラマー向け、サーバサイド言語入門【連載:えふしん⑩】

藤川真一(えふしん)FA装置メーカー、Web制作のベンチャーを経て、2006年にpaperboy&co.へ。ショッピングモールサービスにプロデューサーとして携わるかたわら、2007年からモバイル端末向けのTwitterウェブサービス型クライアント『モバツイ』の開発・運営を個人で開始。2010年、想創社(現・マインドスコープ)を設立し、2012年4月30日まで代表取締役社長を務める。その後しばらくフリーランスエンジニアとして活躍し、2012年11月6日に想創社(version2)設立

皆様、あけましておめでとうございます。

年が明けると、心も新たに何かにチャレンジしてみたい!って思いますよね!? ね!?

でも、いざ仕事が始まると、あっという間に1日8時間(くらい)の「日常業務」に戻ってしまい、その日常についつい流される1年を送ってしまうものです。

しかし、何もしなければ進化しない現状だけが残ります。そうはならないように、これからWebのサービス開発をもっと勉強したいなぁと思う人のために、サーバサイドのプログラミング言語を勉強する取っ掛かりになる記事を書いてみたいと思います。

勉強すべき言語は、PHP? Ruby? Perl?

結論は、「好きな言語を選べばそれが正解」です。

From tttallis サーバサイドのプログラミングを覚えるには、まずは「やりたい」と思える言語を扱うのが吉
From tttallis サーバサイドのプログラミングを覚えるには、まずは「やりたい」と思える言語を扱うのが吉

選ぶ理由は、一番使いたいと思ったものにしたら良いと思います。流行りでも、「この人すごいなぁ」と思った人が使っている言語の真似でも、きっかけは何でもOKです。

プログラミング言語を学ぶ時には、いくつかの構成要素がありまして、

1. 文法レベルの問題
2. ライブラリやフレームワークの問題
3. 実行環境の問題

これらのコツを理解するのがポイントになります。

1.文法レベルの問題

文法とは、要するに「書き方」ですよね。書き方を学ぶというのは、プログラミング言語を学ぶことの主軸のように見えて、実は、そんなに本質的な問題ではないと思っています。

例えば、プログラマーで「自分はPHPしか書けない」と言う人がいます。それは、ほかの言語では「今すぐ最高のパフォーマンスを発揮するほど書けない」というのはありますが、未来永劫書けないかというと、決してそんなことはないわけです。

英単語を覚えるようなノリで文法を覚える必要はありません。リファレンスを見ながらでも、プログラムを作れることが大事です。とにかく1つの言語が使えるようになれば、そこを軸足にしてほかの言語を学ぶコストはかなり下がります。

言語仕様についても、特定の言語で有用だと思われて流行った機能は、だいたいほかの言語にも取り入れられます。クロージャと呼ばれる、JavaScriptでその有用性が認知された書き方は、今ではほかの言語にも取り入れられています。トレンドは相互に影響し合い、違う言語を使っている不利というのは、そうそうありません。

本質的に学ぶべきことは、プログラミング言語の仕様ではなくて、「Webプログラミング」や「アプリプログラミング」なので、そこに使える言語であれば、どれでもいいんじゃないの? というのが僕の考え方です。

初心者本を開いて文法の書き方を読んでいても、一向にプログラミングをすることはできません。

これは恥ずかしいお話なのですが、モバツイはPHPで作っていましたが、僕はPHPのメソッドの引数を覚えるのが苦手です。PHPにはたくさんの便利命令がありますが、使う時はphp.netのリファレンスを見ながら書いています。引数の仕様が覚えられないからです。

Visual BasicやJavaなどの開発環境で入力補完に慣れてしまって覚える力を失ったというのと、PHPの引数仕様がバラバラなので、覚えられないものがほとんどです。preg_matchのように何度も書いてるものはさすがに覚えますが、そうでないものはその都度調べながら書いていました。

2.ライブラリやフレームワークの問題

ここが一番大事だと思います。

オープンソースで公開されているライブラリをどう活用させていただくか、というのは重要なスキルになっています。また、特定のフレームワークを学ぶことで、転職の際などに有利になることもあります。

From sansfaim 転職を視野に入れると、フレームワークを使いこなすスキルは大事だと話す藤川氏
From sansfaim 転職を視野に入れると、フレームワークを使いこなすスキルは大事だと話す藤川氏

例えばRubyの言語を学ぶことより、Ruby on Railsを覚える方がけっこう大変です。それは単純に情報量が多いので、何をどう組み合わせたらいいかという部分に手間が掛かるからです。こればかりはRuby on Railsにかかわっている時間が、ノウハウに直結してきます。

また、適切なライブラリを使うという選択も、1つの「スキル」になっています。サーバリソースは有限ですから、非効率なプログラムは、コストに直結します。サイトが一定の規模を超えた段階で効率的なコードは、利益にも貢献できる重要な要素といえるでしょう。

ちなみに、エンジニア自身の評価につなげるためにオープンソースでライブラリを公開したり、特定のプロダクトに貢献するといった活動も、自身のキャリアに良い影響を与えるでしょう。

もしかしたら、どの言語であれば自分が目立って活躍しやすいかというのは、戦術として考えてもいいかもしれません。若干いやらしいように思われるかもしれませんが、注目されるような活動をすることで得られることは多いですから。

昨年は、PerlのイベントであるYAPCにお邪魔して、その雰囲気がすごくいいなぁと思っていました。ここであれば、自分の気持ち次第で一歩前に進めるだろうなぁと思いましたね。YAPCでプレゼンしてみたいなぁって思うんですよね。意外にも初心者セッションに人が多く、開発者の層の厚さを実感しました。

今年はRuby会議も復活するようなので、注目かもしれませんね。

3.実行環境の問題

僕がモバツイを作った理由の1つに、人に使っていただくWebサービスを自分で運用してみたかったというのがありました。ただ、当時はpaperboy&co.の社員でしたので、サーバはサーバチームに管理をお願いしていて、インフラの部分のノウハウはなかなか身に付きませんでした。

たまに彼らに質問をしながら、一通りのことは全部自分でやりたいと思っていて、メールサーバからWebサーバまで全部管理していましたが、世の中、必ずしもそう思ってる人は多くはないようなのです。

そもそも、これから勉強する人は、Webアプリケーションを学ぶのでさえ忙しいのに、その下のWebサーバやメールサーバまで面倒見きれないという現実があるでしょう。だからこそ、サクッと実行できる環境をネット上に確保できることは、やっぱり重要です。

そういう部分を低コストに支えてきたのは、レンタルサーバだと思います。

レンタルサーバの環境においては、PHPが一番使いやすいと思います。特にモダンな開発フレームワークなどがレンタルサーバでの設置を考慮しているのは、とても大きいかなと思っています。

ただ、PHPは基本的にコア機能の設定をコンパイルに依存しており、コンパイルオプションによってはどうしても使えない機能というのが出てきてしまいます。レンタルサーバのコンパイルオプションを変えてもらうのは基本的に不可能で、売り上げに直結するぐらい重要な変更以外はなかなか要望が通りません。

ゆえに、ニッチな機能の追加・変更をしたいがために、VPSなどに移行していくこともあると思います。

Ruby on Railsなどは、レンタルサーバで汎用的に動かすにはヘビーな構造で作られており、向いていませんでした。しかし、Railsで開発する人の増加により、RubyのWebアプリを専門にホスティングするHerokuSqaleと行ったホスティングサービスも出てきています。無料プランがあったり、使えても月1000円ぐらいだったりするので、勉強には持って来いだと思います。

今年前半はコードをがっつり書こうと思う

本エントリーで、今後の期待の星であるNode.jsのことに触れたかったのですが、文章量が多くなり過ぎてしまったので、また今後書きたいと思っています。

わたくしごとですが、2013年の前半はコードをがっつり書いてスマートフォンのアプリをリリースしたいと思っており、これまでずっと企画や設計の準備をしてきました。モバツイはPHPで書いていましたが、モバツイを手放した後に、Ruby on Railsを覚えて利用するサーバサイド言語を切り替えています。

ビジネス面では、PHPで何も困らないのですが、あまりに困らな過ぎて切り替えるタイミングというのがないので、エイヤーで切り替えることにしました。 合理的に考えて一番早い選択を取るのではなく、時には、そういうことも必要だと思うのです。

今年の豊富としては、とにかくアプリをちゃんと完成させてリリースするぞ! ということで締めさせていただきます。本年もよろしくお願い申し上げます。

この記事が気に入ったらいいね!しよう

エンジニアtypeの最新情報をお届けします

RELATED POSTS関連記事

JOB BOARD編集部おすすめ求人

この記事に関連する求人・キャリア特集


記事検索

サイトマップ



株式会社富士通エフサス【ポジションマッチ登録】 オープンポジション

株式会社スタッフサービス エンジニアリング事業本部(リクルートグループ…

NEXT株式会社【ITbookグループ重要戦略子会社】 ITエンジニア/東証マザ…

ライフネット生命保険株式会社【ポジションマッチ登録】 オープンポジション

CLINKS株式会社 テレワークエンジニア(SE・PG・デザイン)/在宅勤務で上流…

富士ゼロックス東京株式会社 カストマーエンジニア(サービスエンジニア)◆…

株式会社スタッフサービス エンジニアリング事業本部(リクルートグループ…

株式会社永田製作所 機械設計/創業112年/業界のニッチトップ企業/大手企…

株式会社NCM/株式会社日本汽缶【合同募集】 技術職/設計・製缶・溶…

イーター国際核融合エネルギー機構 技術職/世界35ヶ国が参加する国際プロジ…

「視点を変えればエンジニアのキャリアは激変する」LIFULL...

SIerって本当にヤバいの? ひろゆきが語る、業界ごと沈まな...

及川卓也×澤円が語る、エンジニアの成長に必要な条件「ぼんやり...

シリコンバレーで働いて気付いた「技術力向上」だけに固執するエ...

英文メールでよく見る「略語」の意味は? 海外エンジニアに聞い...

エンジニア転職フェア開催 IT&モノづくりエンジニアを求める優良企業が大集結!