CodeIQ MAGAZINECodeIQ MAGAZINE

及川卓也・増井雄一郎・白石俊平・湊川あい──新しい言語・フレームワークは何を選ぶ?どう学ぶ?

2017.11.13 Category:勉強会・イベント Tag: , , , ,

  • 63
  • このエントリーをはてなブックマークに追加

9月に開催されたCodeIQ感謝祭。その最後を飾ったのは及川卓也さん、白石俊平さん、増井雄一郎さん、湊川あいさんによるパネルディスカッション「新しい言語、開発ツール、どれが使える?どう勉強する?」。どんな言語、開発ツールを使ってきたのか。そしてこれから学びたいと思っている言語や技術について語り合った。 by 馬場美由紀 (CodeIQ中の人)

得意な言語と好きな言語

本セッションのファシリテーターを務めたのは、及川卓也さん。増井雄一郎さん、白石俊平さんがエンジニア枠、そして湊川あいさんはデザイナーという立場で語っていただいた。

☆登壇者プロフィール

プロダクト・エンジニアリングアドバイザー 及川 卓也さん
早稲田大学理工学部卒業後、日本DEC、マイクロソフトを経て、2006年にグーグルに転職し、プロダクトマネージャとエンジニアリングマネージャとして従事。2015年11月より、Incrementsにて「Qiita」のプロダクトマネージャとして勤務。2017年6月に独立し、エンジニア組織作りのエンジニアリングマネジメントとプロダクトマネジメント、技術アドバイスの領域で、IT系企業の顧問やアドバイザーとして活動中。

株式会社オープンウェブ・テクノロジー CEO 白石俊平さん
Web技術者向け情報メディア「HTML5 Experts.jp」編集長。日本最大(6,500名超)のHTML5開発者コミュニティ「html5j」ファウンダー、2014年7月までコミュニティリーダーを務める。Google社公認Developer Expert (HTML5)、Microsoft社公認 Most Valuable Professional (IE)などを歴任。著書に「HTML5&API入門」「Google Gearsスタートガイド」、監訳に「実践jQuery Mobile」など。2016年7月にテクノロジー情報に特化したキュレーションサービス「TechFeed」をリリース。

株式会社トレタ CTO 増井雄一郎さん
大学時代に起業しWebサイト制作などを行う傍ら、PukiWikiなどのオープンソース開発にも積極的に参加。2008年に渡米しiPhone向け写真共有アプリPhotoShareをリリース。2010年に帰国し、アプリSDK『Titanium Mobile』の伝道師として活動。2012年9月に退職、株式会社FrogApps(現 ミイル株式会社)を設立しiOS/Android向けにミイルをリリース現在は2013年に起業した株式会社トレタにてCTO。個人活動としてwri.peを作成。趣味はお風呂でコーディング。

湊川あいさん
フリーランスのWebデザイナー・マンガ家・イラストレーター。
マンガと図解で、Web技術をわかりやすく伝えることが好き。著書わかばちゃんと学ぶ Webサイト制作の基本・わかばちゃんと学ぶ Git使い方入門出版の他、SchooにてGit入門授業の講師も担当。CodeIQ MAGAZINEにてマンガでわかるGit・わかばちゃんが行くオフィス訪問マンガ連載中。

及川:まずは皆さんがこれまでどんなプログラミング言語を学んできたのか、「得意な言語と好きな言語」という表にまとめてみました。

私はずっとChromeの開発に携わってきたので、得意な言語はJavaScript。Node.jsやGoogle Apps Scriptを使ってダッシュボードを作っていました。

その他にメインで使っているのはR、Python、LUA。LUAはマイナーですが、Corona SDKで使っています。

得意な言語 好きな言語 メインで使っている言語
及川 JavaScript 特になし JavaScript, R, Python, LUA
増井 Ruby Ruby Swift, Ruby
白石 JavaScript / TypeScript TypeScript / Java TypeScript
湊川 Sass 言語ではありませんがGit PHP (前職)

増井:私の得意な言語はRuby。1998年頃から20年使っているため、隅から隅まで理解しています。関数型も好きですが、大規模なプロダクトを作るのは無理なので、得意とは言えません。

トレタはiPadのアプリを使っていて、サーバ側もRuby、フロント側はSwiftを使っています。この1年は7割~8割はSwiftのコードを書いていますね。

白石:エンジニア括りにしてもらったんですが、最近は記事を書いたり、取材をしたりすることのほうが増えています。またオープンウェブ・テクノロジーではCEOに就いているので、雑用も多いですね。

現在好きな言語はTypeScriptです。最初はJavaプログラマとしてエンタープライズシステムを開発していました。TypeScriptは進化が速くて、Javaで不満だったり「こんな機能あったらいいのに」と思うところがほとんどカバーされていて、理想的な言語だと思っています。

湊川:得意な言語はSassです。デザイナーですがコーディングもします。CSSを手打ちで書いていた頃とは比べものにならないぐらい効率的に書けること、またCSSをコンパイルして作れるのもエンジニアぽくてかっこいいと思い、好きになりました。

言語ではないのですが、Gitも大好き。Gitを作ったのはLinuxを作ったリーナスなので、Gitにはエンジニアのマインドが詰まっていると思ったんです。

これまでどんな言語を学んできたか、その変遷

及川:続いては、初めて覚えた言語から現在、メインの言語に至るまでの経緯を聞かせてください。

初めて触った言語 初めて仕事で使った言語 今メインで使っている言語
及川 N88 Basic, Pascal Fortran, C JavaScript, R, Python, LUA
増井 Z80 アセンブラ, MSX BASIC C, dBASE言語 Ruby, Swift, JavaScript
白石 C, Java Java TypeScript
湊川 HTML/CSS HTML/CSS Sass

白石:言語を覚えたのは社会人になってから。コンピュータを知って仕事にしたいと思い、当時はそういった職業で思いつくのがプログラマーだけでした。2001年、新卒で入社した会社は派遣型のエンジニアリング会社。C言語の研修を2日、Java Appletの研修を2日ぐらいやって現場に派遣されました。初めて触ったコマンドはbcc32(Borland C++)。WindowsでCを使って開発をしていました。

及川:白石さんは、そこからどういう経緯でJavaScriptに至ったのでしょうか。

白石:その後はずっとJavaで金融系のエンタープライズシステムの開発をしていましたが、Ajaxの流行に乗って、JavaScriptもかなり書いていたんです。

エンジニアをやめてテクノロジーのライターになった頃は、Googleが毎週のようにリリースするWebAPIの記事を書いていました。その記事を書くために、毎日JavaScriptを触るようになった。現在、メインで使っているのはTypeScript。

TypeScriptはこれまでのJavaとJavaScriptを統合してさらにグレードアップした言語だから、今はハードに使っています。

増井:私は中学時代にまで遡ります。当時科学部に入ったら、部室にMSXという古いパソコンとアセンブラの本で勉強してアセンブラを触るようになり、その後に見つけた本にBasicがあったので、それでプログラミングするようになりました。

当時はインターネットがなかったので、書籍でプログラミングを覚えるしかなかった。雑誌を購入し、そこに書かれているゲームのプログラムを自分で入力し、敵の動きや色を変えたりして遊びながら勉強しました。1年後には本に作品を投稿するなど、何回か載ったことがあります。

高校生の時にはフリーランスとして、CとdBASE言語で業務アプリの開発をしていて、1998年ぐらいからはPHPを主にしていました。2005年のRails登場以後はRubyでの開発が多いですね。

湊川:私は中学生(2002年)の時に、当時は流行っていた素材屋さんのサイトを作るために、テンプレートサイトのソースコードをダウンロードし、それをローカルで立ち上げて、HTMLっぽいものを作ったのが始まりです。

そこから楽しさに目覚めて、Yahooジオシティーズでサイトを立ち上げたりして、Webの楽しさを知り、Webデザイナーとなりました。

及川:学んでおけばよかったと思うことはありますか?

増井:言語ではないのですが、ちゃんと英語をやっておけばよかったと思っています。

白石:先日、懐かしのWeb技術を振り返るイベント「懐テク#2」でFlashをテーマに開催したんですが、ちゃんとFlashを学んでおけばよかったと思いました。

及川:湊川さんはFlash系に進むことは考えなかったですか。

湊川:Flashにも憧れはありました。大学生の時に高校教員の免許を取るのに奔走していて、Web系のインターシップに行くのを見失ってしまい、それが心残りになっています。

増井:あと、大学が文系だったので、コンピュータサイエンスを学んでいればよかったなと。コンパイラとかの基礎技術は教科書で学びたかったですね。

今学んでいる言語、次に学びたい言語

及川:今学んでいる言語と、次に学びたい言語についても表にまとめてみました。

今学んでいる言語 次に学びたい言語
及川 特になし 関数型言語、Swift
増井 Elixir PHP7
白石 特になし Rust
湊川 Ruby Processing

増井:言語パラダイムが異なり、関数型の要素を持つElixirの学習を再開させたいと思っています。Elixirを作った人はRubyのコミッターの一人なので、僕の好きな言語のエッセンスが入っている。PukiWikiというWikiのエンジンを作っているときは、PHP(2~4)を使っていました。

その当時の使い勝手から、あまり良い印象がないんですよね。とはいえ、これだけの人がちゃんと使うのは評価すべきところがあるからだと思うので、もう一度学び直したいと思っています。

及川:湊川さんProcessingを学びたいとありますね。

湊川:Processingはデジタルアートが作れるプログラミング言語。先ほどFlashの話が出ましたが、Processingを使って音楽のPVを作っている人がいるんです。私は絵を描いたり動画を試したりしたいので、気になっている言語の一つです。

及川:IEEEが毎年出している言語のトレンドがあります。これを見ての感想を聞かせてください。

1位:Python
2位:C
3位:Java
4位:C++
5位:C#
6位:R
7位:JavaScript
8位:PHP
9位:Go
10位:Swift

※出典:The 2017 Top Programming Languages

増井:日本とは傾向が違う気がしますね。これを見ると、PythonとかRはあまり評価されていない。

及川:こういうデータから考えて、若いエンジニアは何を読み取り、どこを目指すべきでしょうか。

白石:自分の興味の赴くままにいろいろやった方がいいですね。僕はEmacsというエディターが好きで、EmacsLispを勉強しました。そういう言語はこういうランキングには入ってこない。そういうものでもやりたければやればいいと思います。

及川:さらに高給が取れるプログラミング言語のランキングもChallengeRocketから出ています。Javaは1位。感覚的に合っているところがありますか。

1位:Java
2位:Objective-C
3位:Python
4位:C++
5位:Perl
6位:C
7位:R
8位:JavaScript
9位:C#
10位:SQL

※出典:Top 10 of Programming Languages With The Highest Salaries In 2017

増井:同じ言語でもどういう現場で働くか、例えば金融系なのか組み込み系なのかによって報酬は変わると思います。例えば金融系であれば、金融の知識がないとできないので、この表の裏側には隠れたパラメータがあるのではないでしょうか。

及川:デザイナーの場合、この技術を持っていると報酬が高いとかありますか。

湊川:見た目だけをデザインする人もいれば、コーディングまで落とし込める人もいます。デザインを渡すときによりスムーズな方がエンジニアも嬉しいと思うので、プログラミング知識のある人が優秀なデザイナーとして評価されやすいと思います。

及川:湊川さんはPHPができる。それは強みになっていますか。

湊川:私の書くPHPは品質が高いわけではないですが、配列でここは繰り返しになるだろうなというところは事前にわかるので、組み込みやすいCSSの設計に役立っていたりします。

及川:それはエンジニア側にも言えることかもしれないですね。Gitができるのは強みになっていますか。

湊川:デザイナーがGitを使わない職場もあるかもしれないのですが、情報が一元管理できるのでGitを使えた方がよいと思います。

白石:デザイナーがコーディングするかにもよるのではないでしょうか。PhotoshopのファイルなどをGitに入れるかというと、そこは悩みどころだと思う。

湊川:そこはキャプチャーしてissueなどで情報共有しています。

増井:GitHubも画像の差分も取れるようになっているので、デザイナーを意識しているんじゃないでしょうか。

及川:Git、GitHubは共通言語になりつつありますね。

下記の表が最適かどうかは別として、言語にはパラダイムがあります。学びやすさという点では同じパラダイムの言語を学んだ方がいい。また幅を広げたいのであれば、異なるパラダイムの言語を学ぶことになります。言語を学ぶときにアドバイスをするとすれば何でしょうか。


※出典:Compiled vs. interpreted programming languages (source)

増井:先のIEEEのリストでトップ10に上がっていた言語は、ほとんどがオブジェクト指向。パラダイム的には同じ。したがって、オブジェクト指向を一度きちんと学んでおくことをお勧めします。その上でパラダイムを増やすという意味では、関数型を学ぶことも一つだが、関数型がトップ10を占めるようにはならないでしょうね。

及川:オブジェクト指向の中で学んだほうがいいと思う言語は何ですか?

増井:どれを学んでもそれほど変わらないと思います。ただ、使っているケースやライブラリ、書籍、コミュニティが多いものを選ぶことが大事。僕は言語を選ぶときコミュニティを見ています。例えば、PythonやJava、Rubyもお勧めです。

白石:パラダイムの異なる言語を習得しようとして苦労したことが何度もあります。例えば型ありと型なし。僕はJavaのエンジニアだったので、JavaScriptを始めるときにJavaぽく書いてしまっていました。

もう一つがガベージコレクションのあるなし。フリーランスになったときにガベージコレクションのない言語で仕事をしてみたくて、C言語を使ったLinuxカーネルに関わる仕事をしたのですが、考えるコトが違うので楽しかった。

次にやりたい言語はRust。Rustもガベージコレクションとは異なるパラダイムを採用しているそうなのでやりたいと思っています。リアクティブ・プログラミングにも最近感銘を受けました。RxJSというライブラリを使っているのですが、コードの書き方がかなり変わってくる。最初は違和感がありましたが、最近ようやく慣れてきました。

及川:デザインにはパラダイムというようなものはないのでしょうか。

湊川:デザインはツールになってしまうことがほとんどですね。次学びたい言語はRuby。若葉ちゃんと学ぶシリーズをRubyもしくはRuby on Railsを書きたいと思っています。

これまで学んできたフレームワーク

及川:続いては、フレームワークは何を学んできたかですが、白石さんはAngularのどこが気に入っているのでしょうか。

得意な
フレームワーク
好きな
フレームワーク
メインで使っている
フレームワーク
及川 特になし Node.js Node.js
増井 Ruby on Rails Ruby on Rails Ruby on Rails
白石 Angular Angular Angular / Ionic / Loopback
湊川 Compass フレームワークではないが、
CIツールのTravisCI、静的サイトジェネレータのHexo

白石:Angularの気に入っている点は自分でいろんなライブラリを選ぶ必要のないところ。Angularが用意してくれたものをそのまま使うだけで良いので、面倒なことを考える必要がないことです。IonicはAngularの上で動くUIフレームワークで、モバイルアプリ的なものをWebで作れます。

ただ、IonicがAngularに依存していたのは3まで。4からはAngularとの依存がなくなり、Angularはもちろん、ReactでもVueでも使えるフレームワークになります。LoopbackはNode.jsのサーバーサイドのフレームワークで、Express.jsというNode.jsのWebフレームワークを作っているチームが作りました。

実はこれがあまりいけていないフレームワークなんです。設計思想はいいのですが、いかんせんバグが多すぎる。個人的な感想ですが、Loopbackをはじめとして、Node.jsのエコシステムは全体的に品質がイマイチだな〜と感じています。こういう品質の問題って、使ってみるまで中々わからないですよね。

及川:知っていたら使わなかった?

白石:Loopbackは今なら使わないと思います。Javaが好きだったのは、品質に対するみんなの感覚が鋭かったから。Javaのライブラリと言えば、Apacheソフトウェアファンデーション製のものが多いのですが、商用品質のプロダクトを提供すると宣言している通り、品質がすごく高かったと思います。エコシステム全体でどういう傾向があるのかは、経験を積むことでわかってくることかもしれない。

及川:AngularとReactとあるが、Angularを選んで後悔はしていませんか。

白石:今は微妙ですが、当時の選定基準は、UIフレームワークがあるかどうかでした。選択肢としてはAngularとIonicの組み合わせしかなかったので、その組み合わせを選びました。

Angularそのものを選んだことは後悔していないのですが、エコシステム自体がAngular2以降、なかなか育たないことに歯がゆさを感じています。その理由は1と2がかい離しており、学習のハードルが高いこと。そしてTypeScriptは記述量が多くなるのでダサく見えることもあります。

及川:増井さんのフレームワークの選択はいかがですか。

増井:Ruby on Railsを選んだのは、Rubyをずっと使っているから。Rubyなら何があっても自分でどうにかできるという自信があるので、Ruby on Railsを使っています。フレームワークの選び方のポイントとしては、メインのコミッターの考え方をよく読むこと。

僕がRuby on RailsとRubyが好きなのも、メインコミッターのDHH(デイヴィッド・ハイネマイヤー・ハンソン)や松本さんの考えに共感できるから。その技術を手に入れるための投資をその人にしてよいかどうか、作者のブログをチェックします。

及川:それは先ほど、湊川さんが言ったGitのリーナスの哲学が好きだというのと通じるところがありますね。

湊川:私はオフィス訪問マンガをCodeIQで連載していますが、そこではプロダクトだけではなく、どういうことを考えて、どういう世界を実現したくてそういうプロダクトやサービスを提供しているのか、中で働いている人の気持ちまで掘りさげるようにしています。

次に学びたいフレームワーク

及川:次に学びたいフレームワークについてはいかがでしょう。

湊川:Ionicですね。IonicならHTML5でモバイルアプリが作れるから。アプリを作るのは、私のような人間からすると別世界のようですが、それを同じソースコードでできるのは良いと思っています。

増井:僕はReact派だけど、次に学びたいのがAngular。Reactは全部できないところがあります。Angularの方が得意なところがあるので、習得して利用シーンによって適切に使い分けたいと考えています。

白石:僕は逆にReactを知りたい。これから学びたいのはReact Navtive。今、CCordovaでアプリを作っていますが、Cordovaでネイティブに近い機能を開発しようとすると、Cordova Pluginを作らないといけない。

でも、Cordovaのプラグインづくりって、すごく大変なんです。癖もあるし、プラットフォームごとに開発していかなくちゃいけない。そこでReact Nativeをうまく組み合わせて、少しでもネイティブ機能の開発を楽にできないか…なんて思ったりしています。

エンジニアスキルを伸ばすために必要な技術・ソフトウェアスキルとは

及川:エンジニアスキルを伸ばすために必要な技術以外のスキルについて。私はコミュニケーション力、集中力、アウトプットから考える姿勢、失敗から学ぶ能力を挙げてみました。

増井:僕は人に聞けるということ。言語やフレームワークを学ぶときに、自分で考えても答えが出ないことがあります。だから人に聞くことは大事になる。人に聞くためには、課題抽出して、まとめて伝えて受け取るという高度なコミュニケーション力が求められます。

白石:そのスキルを必要とされる環境に自分を置くこと。必要なことは身につきやすいので、エンジニアスキルを伸ばすことに注目するとそれがお勧めです。

例えばこれから「Rustをやりたい」と思っていたとしたら、それをやらざるを得ないような環境に自分を置く。Rustをやっている会社に転職するか、Rustを使うような仕事を自分で作るかですね。コミュニティ活動に身を投じてみるのもいいと思います。やりたいことをやるのなら楽しいし、何かやる時に、使う技術は自由に選べますしね。

及川:コミュニティ活動もいいのですが、一方、平日の大半を過ごす職場のプロジェクトが、あまりにもいけていないこともあります。例えば3年やっても成長しないというような。そうした職場にいる人に対してアドバイスをするとしたら、どうしますか。

白石:エネルギーはかかりますが、転職を考えてもいいんじゃないでしょうか。例えば、古くさい言語を使っているいけてない現場にいたのだとしても、正しく理解し十分、習得できていれば問題はないと思います。一つの言語を極めていれば、他の言語にコンバートすることはそんなに難しくないからです。

及川:極めていれば他の技術に転用できると。

増井:僕の場合、オブジェクト指向に近い言語だと、100時間あればちゃんと仕事で使えるようになるという試算が成り立つ。新しい言語を勉強するときに、仕事で使えるようになるまでにどのくらいの時間が必要か、自分で測定するようにするのはお勧めですね。

及川:湊川さんもアドバイスをお願いします。

湊川:私は「デザイナー」と技術書執筆者という2つの視点からアドバイスをしたい。前者は6W1H。「誰に」「何を」「なぜ」「どれを」「いつ」「どこで」「どう」伝えるのかを意識すること。後者の視点だと初心者の意識を忘れないこと。私も新しい技術を学ぶときは、疑問に思うところはメモっています。

及川:確かに改めて人に説明するとなると、自分が理解していないことが把握できたりなど、新たな学びを発見できることもあります。

湊川:後輩に説明することがあると、そのたびに学びがあるので、ぜひ、実践してほしいですね。

及川:今日のセッションがみなさんの技術の学びの参考になれば幸いです。

  • 63
  • このエントリーをはてなブックマークに追加

■関連記事

スタートアップ企業で入社一人目エンジニアに誘われたら、気をつけるべきことは何ですか?... パネラー、ファシリテータを務めた3人のプロフィール テクニカルなスタートアップは、技術のわかるエンジニアとビジネスを考える人材がセットとなって始まる。つまりそういう企業には必ず、「一人目のエンジニア」が存在する。 一人目のエンジニアにどんな経緯でなったのか。また一人目のエンジニアに向いているのは...
アドテクは新しい技術の宝庫!?──ヨッピーさんがインターネット広告の未来、面白さを探る... 1994年のバナー広告から始まったアドテク発展の歴史 今回インターネット広告とアドテクをテーマを選んだ理由は、「アドテクに携わっているエンジニアがすごく少ない」」っていう話を聞いたからなんですね。でもインターネットにおける広告の役割はビジネスにとってすごく大事なことだし、新しい技術もあれこれ入っ...
ドワンゴ塩谷啓氏が明かす──アンチパターンから探る、採用担当者が読みたくなる職務経歴書って?... フォーマットに気をつける 今回のセッションテーマは「採用担当者が読みたくてたまらなくなる職務経歴書を書くために絶対に外せない3つのポイント」。このようなテーマを掲げてはいるが、実は「読みたくてたまらなくなるポイント」というものはない。 それは応募書類自体に、価値があるわけではない。価値があるのは...
これからのマネジメントは面白い!?─多様化するエンジニアのキャリアパスのその先を考えてみた... エンジニアのタイプはさまざま。現在の職種と役割について 9月16日に開催されたCodeIQ感謝祭で、「多様化するエンジニアのキャリアパス、その先を考える」というテーマで行われたパネルディスカッション。 登壇したのは、2017年6月に独立し、現在はプロダクト・エンジニアリングアドバイザーとして活躍...
【CodeIQ感謝祭】豪華ゲスト&ギャル電もサプライズ登場して盛り上がりました!#codeiq39... エンジニアの"最先端"を見て学ぼう!をテーマに開催 2017年9月16日にCodeIQ感謝祭を開催しました。あいにくの雨にもかかわらず、たくさんのエンジニアの方にご来場いただき、本当にありがとうございました。 司会はきゃんちこと、CodeIQ MAGAZINEの公式アイドルレポーター喜屋武ちあき...
技術系コミュニティ運営者たちが語る、コミュニティの成長の軌跡──21cafe 4周年感謝祭レポート... あきらめずに続けることが大事  コミュニティ運営者によるLT大会のトップバッターは、「DevRel Meetup in Tokyo」の中津川氏。 毎月開催しているイベントの参加率はほぼ100%という特徴があり、東京にとどまらずアジア圏にも活動の場を広げている。 今回は「楽しいコミュニティの作り...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ