期間限定アマゾンギフト券プレゼントキャンペーン

期間限定アマゾンギフト券プレゼントキャンペーン

キャンペーンの利用規約(注意事項)

レバテック株式会社(以下、「当社」といいます。)が実施する「Amazonギフト券プレゼントキャンペーン」(以下、「本キャンペーン」といいます。)に参加し、会員登録される方(以下、「登録者」といいます。)は、以下をよくお読みいただきご登録ください。ご登録を以って、本規約に同意されたものとみなします。
本キャンペーンは、以下の条件を満たす方全員にアマゾンギフト券5,000円分をプレゼントするものです。

条件について
以下のすべての条件を満たされた方が対象となります
2019年9月17日(火)~9月30日(月)の期間中にレバテックフリーランス(https://freelance.levtech.jp/)またはレバテッククリエイター(https://creator.levtech.jp/)に会員登録された方
2019年11月29日(金)までにカウンセリングを終えられた方
※過去にレバテックフリーランスのカウンセリングを受けられた方は対象外です。
※ご友人紹介(https://freelance.levtech.jp/friend/)で登録された方は対象外です。
※当社が保有する案件状況等により、カウンセリングをご案内できない場合もございます。予めご了承ください。
賞品の発送について
本キャンペーン条件に該当する方には、2019年11月4日(月)~2019年11月8日(金)注1または2019年12月2日(月)~2019年12月6日(金)注2の期間中にアマゾンギフト券5,000円分利用コードをメールでお送りいたします。
注1) 9/17(火)~10/31(木)にカウンセリングを受けられた方が対象
注2) 11/1(金)~11/29(金)にカウンセリングを受けられた方が対象
注意事項
お一人様、1回までの登録が可能です。
本キャンペーンの参加において、登録者が真実かつ正確なデータを入力していないこと、または登録者から提供された情報が不十分であったことによって賞品が届かない場合、あるいは登録者の転居や長期の不在などの事由によって当社所定の期間内に登録者が賞品を受領できない場合は、キャンペーン該当者の権利が失効・削除されることがあります。
キャンペーン該当者の権利を第三者に譲渡等はできません。
本キャンペーンの賞品の返品・交換は致しかねます。
当社は登録者の個人情報(本キャンペーンの登録時に登録者が提供した情報)を、当社の「個人情報の取り扱いについて(https://freelance.levtech.jp/privacy/)」に従い適切に取扱うものと致します。
当社は、本キャンペーンにおけるサービスの一部または全てを事前に通知することなく変更・中止・終了することができるものとします。なお、変更・中断あるいは中止または終了により生じた損害については、当社は一切責任を負いません。
細心の注意を払って情報を掲載していますが、当社は、提供する情報、プログラム、各種サービス、その他本キャンペーンに関するすべての事項について、その完全性、正確性、安全性、有用性等について、いかなる保証も行うものではありません。また、登録者または第三者が被った以下の事例により発生した損害については、当社は責任を負いません。
登録者間または登録者と第三者の間におけるトラブル等が生じた場合。
第三者による本キャンペーンのサービスの妨害、情報改変などによりサービスが中断もしくは遅延し、何らかの欠陥が生じた場合。
故意または重過失なくして、当社が提供する本キャンペーンの情報が誤送信されるか、もしくは欠陥があった場合。
レバレジーズグループ社員・関係者からのご登録は無効とさせていただきます。
本規約は日本法を準拠法とし、これに従い解釈されるものとします。また、本キャンペーンに関連して生じた紛争は、東京簡易裁判所または東京地方裁判所の専属的合意管轄に属するものとします。

「PHPカンファレンス2016」講演後スペシャルインタビュー
「テストを書けば、コードの質が高くなるわけじゃない」。和田卓人氏が語る「堅牢なコード」の本質

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

メイン画像

2016年11月3日(祝)、大田区産業プラザPiOにて開催された国内最大のPHPイベント「PHPカンファレンス2016」。レバテックフリーランスでは、カンファレンスセッションの登壇者のひとり・和田卓人氏にインタビューを実施しました。

テスト駆動開発の先駆者として知られる和田氏ですが、今回の講演テーマは「PHP7で堅牢なコードを書く-例外処理、表明プログラミング、契約による設計」。あえてテスト以外のテーマを設定した理由をはじめ、PHPの優位性や今注目している言語、初心者エンジニアへのアドバイスなど、幅広くお話を伺ってきました。

<この記事の要約>
1. PHPの良い点は、ゆるふわな言語に見せかけて堅牢なコードも書けるところ。悪い点は、覚えることが多くて難しいところ。
2. テストを書いていればコードの品質が高いわけではない。また、テストが書けないくらい問題を抱えたコードでも、中から改善していくことは可能である。
3. 他の言語と比較したときのPHPの優位性は、圧倒的な技術者数の多さと裾野の広さである。
4. 和田氏が今注目している言語は、引き算のセンスが抜群のGo。
5. 初心者エンジニアは、身近に助言を求められる人がいるかどうかを基準に言語・フレームワークを選んだほうがよい。

フリーランス専門エージェントに無料相談する

 



タワーズ・クエスト株式会社取締役社長、和田卓人氏の画像
和田 卓人(わだ たくと)氏
1977年生まれ。タワーズ・クエスト株式会社取締役社長。テスト駆動開発(TDD)の先駆者として知られ、講演活動やハンズオンイベントを精力的に行いながら、テストの重要性を説いている。監修した書籍に「SQLアンチパターン」、「プログラマが知るべき97のこと」がある。


 インタビュアー
レバテックキャリアシステム責任者、福田 健一の画像
福田 健一(ふくだ けんいち)
SEとしてITベンチャーを渡り歩いた後、2014年にレバレジーズ入社。レバテックでは複数メディアの新規立ち上げを行った後、レバテックキャリアのシステム責任者に就任。エンジニアリングだけでなくデザイン、マーケティングなど幅広い業務に携わっている。




<和田氏の「PHPカンファレンス2016」の講演スライドはこちら>

 

https://speakerdeck.com/twada/php-conference-2016

 

<当日の講演動画はこちら>

 


PHP7で堅牢なコードを書く-例外処理、表明プログラミング、契約による設計/和田卓人

「自分のスキルの相場をしりたい」と思う方へ

簡単4ステップ!スキルや経験年数をポチポチ選ぶだけで、あなたのフリーランスとしての単価相場を算出します!

※相場算出に個人情報の取得はおこないません。

 

目次

 PHPはゆるふわに見せかけて堅牢なコードも書ける、懐の深い言語
 テストが書けないくらい問題を抱えたコードでも、中から改善していくことはできる
 圧倒的な技術者数の多さと裾野の広さが、PHPの信頼を支えている
 今、注目している言語は引き算のセンスが抜群なGo
 駆け出しのエンジニアは、身近なところに師がいる言語・フレームワークを選ぼう

 

 
PHPはゆるふわに見せかけて堅牢なコードも書ける、懐の深い言語

-本日は講演お疲れ様でした。このインタビューでは、今日の講演内容に関するお話をはじめ、PHPやその他の言語に関する和田さんの考えを伺いたいと思っています。まず、和田さんがPHPを使い始めたきっかけについて教えていただけますか。
 
和田氏:PHPを使い始めたきっかけは、僕自身が選んだというよりお客様が使われていたからですね。僕は主にコンサルタントという立場でお客様の現場やコードを改善する仕事をしてきて、担当したお客様がPHPでコードを書いていたので、必然的に僕もPHPを覚えて書くようになりました。
 
PHPを始めてみて、良かったところ・悪かったところというと、どういったことが挙げられますか。
 
和田氏:僕が仕事で最初に使った言語はJavaで、その後RubyやJavaScriptを使うようになり、PHPは4番目に使いはじめた言語だったんです。そういった背景をふまえた上でPHPの良いところを挙げると、PHPは意外と手堅い言語だというところですね。PHPはゆるふわな言語で誰でも簡単に書ける、というイメージが強いですが、意外と手堅く、かっちりとしたコードも書ける言語だということに気づきました。だから、JavaとRuby、どっちに似ているかと言われたら、Javaに似ているんですよ。
 
例えば、最近は開発環境でもPhpStormがとてもよくできていて、間違いの入りにくいプログラミングができ、言語の解析機能が強いという利点があります。PHPは、ふわっとニュアンスで書こうと思えば書けるし、手堅く書こうと思えば手堅く書ける、その懐の深さに興味を覚えました。
 
まさに今日の講演のテーマに通じていますね。
 
和田氏:そうなんです。堅牢なコードを書こうとしたときに、必要な考え方やテクニックがちゃんと適用できるようになっているのがPHPです。
 
反対にPHPのここは良くないな、と感じるところはありますか。

 
和田氏:うーん、覚えることが多くて難しいところですね。PHPならではのルールを正しく覚えていないと、実際にシステムを動かしたとき、自分の想像とは違う動き方をするような仕様になっていることがあるんです。そういった部分では、他の言語を経験してきた身としては面食らいましたね。

オフィス内で話をする和田氏の横顔の画像

カンファレンスの講演は、大展示ホールを満席にする盛況ぶりだった和田氏。


いいところの裏返しでもありますよね。ふわっと書くこともできるし、かっちり書くこともできるから選択肢が多いんですよね。
 
和田氏:そうなんです。だから、いざかっちりとしたコードを書こうと思ったときに、足元をすくわれることがあります。比較演算子やキャストといった「色々な動きができるけれど、これだけは特別です」というPHP独自のルールをたくさん覚えないといけなくて、それはPHPの難しいところだと思います。

テストが書けないくらい問題を抱えたコードでも、中から改善していくことはできる

和田さんといえば、テスト駆動開発を啓蒙するエンジニアというイメージが強いと思うのですが、今回のPHPカンファレンスの講演テーマに「テスト」ではなく「堅牢なコーディング」を選ばれた理由はあるのでしょうか。
 
和田氏:理由はいくつかあって、ひとつは「テストを書いていれば品質が高い」という誤解を解きたいと思ったからです。「テストを書いているから質が高い」、「テストを書くことのみが仕事をきちんとやっていることの証明」といった空気を最近は感じるようになっていて、それだけではダメだということを伝えたかったんです。
 
というよりも、テストは”質の高いコードを書くための一部”でしかないんです。テストは外部から見た質の高さや使いやすさを調べているのであって、内部の品質を高めたり、中から調査したりするのとは別物です。今日の講演は、内部の品質も含めてプログラミング全体の質を高くするためにはどうすべきか、ということを考えるきっかけにしたかった。だから、あえて今回はテストの話は一切しませんでした。
 
なるほど。だから講演で「動くプログラムを書くことと、正しいプログラムを書くことは違う」というお話をされていたんですね。
 
和田氏:少し難しい言葉で言うと、自動テストコードは動的検証というジャンルなんです。つまり、対象を動かして、対象が思ったとおりに動いているかどうかを確かめるという検証手法なんですね。ということは、テストでは動きが期待通りかどうかを調べているだけであって、それが正しいコードであるかの確証を得ることとは別なんです。だから、テスト以外にも正しいコードや使いやすいコード、間違いにくいコードや前提のないコードなど、考える事はたくさんあるぞ、ということを示したかった。
 
チームで作るシステムや長く運営されるシステムは、後から人が触るものだと思ってコードを書けと言われますが、まさにそれを実現するのに必要なお話ですね。
 
和田氏:そうですね。また、講演では言わなかったのですが、今日の講演の裏テーマとして「テストが書けないくらい問題を抱えたコードであっても、中から改善していくことは可能である」ということを掲げていました。
 
例えば、既存コードが雑すぎるとか設計が古すぎるといった理由で、テストを書くことを諦めてしまっている人がいます。でも、今日の講演でお話ししたアサーションや例外の話は、テストが書けないと諦めている人達に、突破口を見つけるヒントにしてもらえれば良いと思っています。
 

長机に向き合って座り、身振りを交えて話をする和田氏と、パソコンに打ち込みながら話を聞く福田の画像

「テストを書くだけに留まらず、コード全体の質を向上させる方法を考えてほしい」と熱く語ってくれた。


和田さんはどのような経験を通して、テストやコーディングの堅牢さを重要視するようになったのですか?色んな失敗や試行錯誤があって、今のスタイルにたどり着いたのかなと想像しているのですが。
 
和田氏:きっかけのひとつは、テストが書きにくいプロジェクトをたくさん見てきたことですね。僕に仕事の依頼があるのは、組織やプロジェクトが何らかの改善を必要としているときなんですよ。コードの質を上げるためにテストを書く文化を根付かせてほしい、という依頼があったとしても、そもそもテストが書ける状態じゃない場合もあるんです。そうなると、テストを書く以外の方法で立て直しを図らなければならない。
 
コードの質を上げるのはテストだけではないので、テスト以外の手法を身に付けて自分の引き出しの中身を増やしておこうと思ったんです。だから、個人的に何か失敗をして、というきっかけはあまりなくて、目の前にある課題を解決する方法を探しているうちにたどり着いたという方が強いですね。
 

フリーランス専門エージェントに無料相談する

 
圧倒的な技術者数の多さと裾野の広さが、PHPの信頼を支えている

これは個人的な興味でもあるのですが、数年前まではwebを作るのに使われていた言語はPHP一択だったと思うんです。でも、最近だとスタートアップの多くがRubyやGo言語、Node.jsを選んでいて、PHPがなかなか選ばれない環境になってきているのかなと感じていまして。そういった変化が訪れる中で、和田さんの考えるPHPの優位性はどこにあるのでしょうか。
 
和田氏:PHPの優位性は非常にシンプルで、圧倒的な技術者数の多さと裾野の広さです。数は力なので、言語の世界に限らず使っている人が多いものは、それだけでも選ぶメリットはあります。圧倒的多数の人に使われ、鍛えられているということは、OSSモデルにとっては信頼の基盤です。たとえPHPにバグがあったとしても、誰かが気づいてくれるだろうと期待できるわけですから。
 
スタートアップにとって人材の獲得というのは緊急の課題なので、言語を扱える人が圧倒的に多いのは、言語選択を行う上で大きなメリットになります。書ける人がいないというのは企業にとって致命傷で、立ち上げを行ったエンジニアが別の企業に行ってしまって残された人で詰んでしまう、というのはよくある話です。
  
ただ、技術レベルの幅でいうと、他の言語と比較するとPHPは上から下までかなりバラつきがありますよね。
 
和田氏:そうですね。本当に色んなレベルの人がいます。それでも、書ける人がいなくなることはないという安心感は大きいと思いますね。
 
技術レベルの差が大きい中で、和田さんの考える優れたPHPプログラマの条件は何ですか?
 
和田氏:今日の僕の講演内容に近づけて言うと、“ただ動くコードではなく、後々のことまで考えたコードが書ける人”ですね。後々のこと、というのは将来の自分のことかもしれないし、今後そのコードを触るチームメイトのことかもしれないけれど、書き捨てのコードではなく、後で誰が触っても困らない、バランスのとれたコードが書ける人が優れたプログラマだと思います。
 

フリーランス専門エージェントに無料相談する

今、注目している言語は引き算のセンスが抜群なGo

 
PHPの話題とは少しずれるのですが、和田さんが今後伸びていきそうだと注目している言語はありますか。
 
和田氏:2014年頃に受けた取材で、今後トレンドになる技術としてGo言語を挙げたのですが、Goはこれからも伸びていくと思います。
 
Goに注目する理由は何なのでしょうか。
 
和田氏:Goが引き算の言語であるところですね。ある意味、Goはベテラン言語設計者の壮大な実験場だと思うんです。PHPを含めたこれまでの言語は、良いと思われる仕様やパラダイムをどんどん取り込み、規模を大きくしてきました。それに対して新しい言語であるGoは、これまでの言語の歴史を振り返り、“昔はよかったけど、今の時代にはそぐわないもの”はバッサリ削ぎ落とした仕様になっています。つまり、Goは全部入りじゃなくて、NOが多い言語なんです。
 
例えば、Goには例外がないんですよ。昔は良い機能だったかもしれないけれど、マルチコアの時代に例外はそぐわないから、僕が今日の講演で散々コテンパンにした戻り値を例外の代わりに使う、という選択をしています。それにはちゃんと理由があって、例外というのはシングルスレッドの言語の世界の話であって、マルチスレッドやゴルーチンの中で例外が出たらどうするのか、という問題が出てきます。それならば、使わない方が迷わなくて済む、という判断をGoは下しているんです。
 
Goの言語仕様には「みんなが当たり前のように大事だと思っていたものは、実はなくてもいいのではないか」という挑戦的なメッセージで満ちています。こういった引き算の仕方にセンスがあるので、Goはすごく面白いんですよ。

オフィス内で微笑みながら話をする和田氏と、パソコンを机の上に置きその話を聞く福田の後ろ姿の画像

和田氏いわく「過激にも思えるGoの言語仕様は、よくよく考えると納得できることが多い」という。


さらに、Goにはgofmtというツールがあり、言語自身が公式のコーディングスタイルを決めてしまっているところも斬新ですね。例えば、よくエンジニア間で起きるくだらないケンカのひとつに、インデントにタブを使う派かスペースを使う派かといったものがありますが、gofmtを使うと全てタブインデントになります。だから、Goを書いていると徐々にみんなが書くコードが似てくるんですよ。みんなで同じ目的を達成するのであれば、自分と他人のコードが似ていた方がコードの境目がなくなっていって再利用しやすくなる、という考えに基づいた判断です。Goはこういった割り切り方や決め打ちの仕方が過激で、そこがまた面白いんですよね。
 
PHPとは真逆の文化ですね。
 
和田氏:真逆です。Goは仕様の小さい言語ですが、PHPは大きい言語です。もし、PHPが今から仕様を小さくしようとすると、技術者人口が多いことも相まって、相当揉めると思いますね。だから、Goは最初から大きくしないという選択をしています。
 
言語関連のトレンドでいうと、2010年代は企業が言語を作る時代になりました。これまでの言語、例えばPHPやRuby、Pythonなんかは開発母体がOSSコミュニティでしたが、GoをGoogleが、SwiftをAppleが開発したように、企業が開発母体になることが増えました。それ自体は良いところも悩ましいところも両方あるのですが、総じて2010年代の言語は、僕が今日の講演で話したような手堅いコードが書きやすくなっています。つまり、間違ったコードを後から直すのではなく、最初から間違わないように書ける言語が増えてきているんです。
 
僕はSwiftを書いたことはほとんどありませんが、コードレビューやペアプロをする機会はあって、そういったときにコードを見てみると「あ、手堅いな」と感じるところがあります。そういった部分は、モダン言語の良いところだなと思っています。

駆け出しのエンジニアは、身近なところに師がいる言語・フレームワークを選ぼう

ありがとうございました。私が所属しているレバテックはエンジニア人材の転職や案件提案サービスを行っていまして、弊社に相談に来る方の中には、これからwebエンジニアとしてがんばっていきたいと考えている若手の方も多くいます。そういった駆け出しのエンジニアに向けて、最後にアドバイスをいただけないでしょうか。
 
和田氏:今、webプログラミングの世界に新たに飛び込んでいくことは、状況としては結構大変だと思うんです。昔、例えばPHP3や4の時代のwebプログラミングは牧歌的な世界で、セキュリティホールがあってもそんなに問題にならなかったし、覚えることもそこまで多くなくて、今よりもっと簡単でした。でも、今はXSS(クロスサイトスクリプティング)のようなセキュリティ対策もきちんとしなきゃいけないし、サーバー環境構築関連で覚えることもたくさんあるしで、難しいを通り越して圧倒されると思うんですよ。

だから、駆け出しのエンジニアにアドバイスを言うならば、初心者のうちはプログラミング言語やフレームワークを選ぶ基準を「その言語についてわからないことがあったとき、近くに聞ける人がいるかどうか」にする、ということです。
 
つまり、言語やフレームワークの良し悪しではなくて、困ったときに頼りにできる人が身近にいるかどうかを基準にすべきということです。そうやって身近なエンジニアから色んなことを学んだ後に、自分の考えで選んだ言語やフレームワークにチャレンジしていけばいいと思います。

オフィス内で真剣な面持ちで話をする和田氏の画像

身近に頼れる人がいないと、プログラミングを始めても途中でくじけてしまう可能性が高いという。

 
今はエンジニア向けの情報サイトがたくさんあり、SNS上では影響力の大きい技術者たちの意見も容易に得られますが、それは、それぞれの立場や状況によって述べられているものです。初心者にとっては、何が自分にとって最適な意見か判断しにくいことも多いでしょう。だから、まずは身近な人がPHPを使っているならPHPを、Rubyを使っているならRubyを使うことをおすすめします。どうしても特定の言語を学びたくて身近にアドバイスをもらえる人がいないのであれば、今日のようなカンファレンスや勉強会に参加して、信頼できる知り合いを作る必要があります。それくらい、身近に質問できる人がいるかどうかは重要です。
 
さらに、今のwebの世界はやるべきことも考えるべきことも多すぎるので、初めから全部を自分ひとりでやるのは無理なんですよ。だから、自分では対応しきれないという壁にぶつかったとき、そこで諦めるんじゃなくて、自分でできない部分は他の人やツールに委ねる判断をすることも必要です。PaaS(Platform as a Service)のようなものを使って、作るものの質を落とさずに手数を減らしていく。そのためにかかるお金は必要経費だと思いますね。

最後に

簡単4ステップ!スキルや経験年数をポチポチ選ぶだけで、あなたのフリーランスとしての単価相場を算出します!

※相場算出に個人情報の取得はおこないません。

フリーランス専門エージェントに無料相談する

 
 

■求人・案件をお探しの方へ
PHPの求人・案件
業務委託の求人・案件

  • このエントリーをはてなブックマークに追加
いきなり相談するのは不安な方へ フリーランスになった時にどんな案件を提案されるのかメールでわかる! 詳しくはこちらから

関連記事

関連案件

もっと案件を見る

プライバシーマーク

© 2014-2019 Levtech Co., Ltd.

はじめまして、フリーランスに
興味が少しでもあれば、
無料相談してみませんか?