タグ TechAcademy(テックアカデミー)

インターネットとブラウザ ーー「非エンジニアの起業家が知っておくべきプログラミングの知識 #02」【ゲスト寄稿】

編集部注:本稿は初心者向けにプログラミングやWebデザインの講座を開催している TechAcademy(テックアカデミー)による連載企画。「非エンジニアの起業家が知っておくべきプログラミングの知識」というテーマで数回に分けて極めて基礎的なプログラミングの基礎知識をお伝えする。全連載はこちらから Image by Flickr ニュースレターの購読 注目すべき記事、世界のスタートアップシーンの話題、…

TechAcademy__テックアカデミー____ITに特化したスクール編集部注:本稿は初心者向けにプログラミングやWebデザインの講座を開催している TechAcademy(テックアカデミー)による連載企画。「非エンジニアの起業家が知っておくべきプログラミングの知識」というテーマで数回に分けて極めて基礎的なプログラミングの基礎知識をお伝えする。全連載はこちらから

3765063_808346c194_z

Image by Flickr

「非エンジニアが知っておくべきプログラミングの知識」というテーマで、10回に分けてお届けする連載企画。第2回目のテーマは「インターネットとブラウザ」です。

前回は導入テーマとして「起業家がプログラミングを学ぶべき3つの理由」という記事をお送りしました。2回目以降では、より具体的に、Webアプリケーションが動く仕組みや、プログラミングを学び始めるまでの前提知識について解説を始めます。

本連載は、エンジニアバックグラウンドがない「まったくの初心者」を対象としており、10回の記事を通して、最初の一歩を踏み出すためのきっかけとなることを目的としています。(※そのため一部説明を簡略化しているところがあります)

Web25周年の2014年 ─ 今年は、Webのスキルを学び始めるには最適なタイミング?

今から25年前の1989年3月、欧州原子核研究機構(CERN)の計算機科学者「ティム・バーナーズ=リー」は、World Wide Web(WWW)を草案しました。2014年は、Web業界にとって「Web25周年」の記念すべき年として、様々なイベントが催されたり、企画サイトまで立ち上がっています。

Web_at_25__Celebrating_the_25th_Anniversary_of_the_Invention_of_the_Web

Web at 25: Celebrating the 25th Anniversary of the Invention of the Web

世界が注目する節目の年である2014年に、Webのスキルについて学び始めるというのは、自分の背中を押してくれる一つの要素になるでしょう。

ティム・バーナーズ=リーを中心とする研究チームは、1989年にWWWの草案した時点で、すでにHTTPやURI(URL)、ハイパーリンクの概念について設計をしていました。彼の設計思想が、今でもWebを支える技術の基礎になっています。

サー・ティモシー・ジョン・バーナーズ=リーは、イギリスの計算機科学者。ロバート・カイリューとともに、World Wide Webを考案し、ハイパーテキストシステムを実装・開発した人物である。URL、HTTP、HTML の最初の設計は彼によるもの。

インターネットとWebの登場により、情報流通に革命が起こり、私たちの生活は大きく変わりました。この記事では改めて、インターネットとブラウザで、裏側でどのような処理が発生しているかについて、振り返ってみましょう。

インターネットの仕組みを知る

私たちは日常的に、インターネットのブラウザ(Chrome、Firefox、InternetExplorer、Safariなど)を使って、Webに掲載されている情報を閲覧しています。インターネットを通して得られる情報は、一体どこに存在しているのでしょうか?

それを知るには、「クライアント」と「サーバー」、そして「リクエスト」「レスポンス」という概念について、理解しておく必要があります。

サーバーとは、英語で「供給する」という意味です。クライアントは「顧客」を意味しています。私たちが手に持っているデバイス(PC/スマートフォン)のWebブラウザが、クライアントに相当します。

e05f87a35ab812c310e0c4baabc7137a

サーバーに対して、クライアントは「この情報を取得したい」というメッセージを送ります(リクエスト)。そしてサーバーでは、クライアントのリクエスト(要望)に応じて処理をおこない、その結果を返します(レスポンス)。

例えばGoogleのトップページにアクセスするとき、ブラウザに入力されたURL「Googleのトップページの情報を取得する」というリクエストが送られ、Googleのサーバーでは「Webページが記述されているHTML文書」を、レスポンスとして返してきます。ブラウザは、受け取ったレスポンス結果を解析して表示するためのソフトウェアです。

※ Webページを記述するHTMLは、構造化言語(マークアップ言語)と呼ばれており、次回の記事にて解説します。

ここまでの流れを、箇条書きで整理してみます。

  1. ユーザーが、ブラウザ上にURLを入力する
  2. ブラウザ(クライアント)が、HTTPリクエストをサーバーに送る
  3. サーバーがリクエストを解析して処理を行う
  4. サーバーが処理結果のレスポンスをブラウザへ返信する
  5. ブラウザが受け取ったレスポンスを解析して、表示する

Webサイト1ページにアクセスするだけでも、上記のような手順が踏まれているのです。サーバーとクライアント、それをつなぐリクエスト・レスポンス、この考え方が、Webアプリケーションを開発する上で、もっとも基本的な考え方になります。

プログラミング言語における、 クライアントサイド処理とサーバーサイド処理

サーバー側のプログラムが処理を行い、結果をレスポンスとして返してクライアントに表示させる ─ これが一般的なクライアントとサーバーの構成ですが、最近ではスマートフォンアプリなど、「クライアントサイド」と「サーバーサイド」を柔軟に連携させるアプリケーションも増えてきました。

サーバーサイド・スクリプト

サーバサイド・スクリプトは、その名の通りサーバー上で処理を行うスクリプト言語です。Webサーバからブラウザ(クライアント)に送信される時点で、一定の必要な処理を完了させており、HTMLやjsonといったデータ形式として、レスポンスが返ってきます。主なサーバーサイドスクリプトに、以下のようなものがあります。

  • Perl
  • PHP
  • Python
  • Ruby

クライアントサイド・スクリプト

一方で、クライアントサイド・スクリプトは、サーバー上ではなく、Webブラウザやスマートフォンアプリなど、クライアント側で動作するスクリプトです。有名なものとして、JavaScriptが挙げられます。

例えば、「来年の誕生日までの日数を表示する」という処理を書こうと思ったとき、ちょっとした計算が必要なため、HTMLだけでは実現できません。ただ、この簡単な処理のために、わざわざサーバーを用意して結果を返すような仕組みを作る必要もありません。そこでJavaScriptで数行のコードを書くことで、インターネットに接続していない状態でも上記のような簡単な計算などの処理が実現できます。

スマートフォンアプリが流行(開発したいというニーズも急増)している昨今では、iOSクライアントエンジニア(Objective-C)/サーバーサイドエンジニア(Ruby on Rails)、といったように、業務の現場でもクライアント側とサーバー側で、それぞれ専属のエンジニアが担当することが増えています。

時代の変化とともに、新しい技術が登場するだけでなく、「より高速に処理するためには、どの処理をサーバー側に持たせて、クライアントでは何を処理するのか?そもそも並行して処理できないのか?」など、アプリケーションの設計そのものが、これまで以上に重要になっています。 Webサービスを提供する起業家・技術者がカバーするべき知識は、日々、増え続けています。

次回以降の記事について

この連載では今後、PHP、Rubyなどのスクリプト言語と、データベース(MySQL)を用いたWebアプリケーションの実装などを紹介していきますが、その中で「REST」「CRUD」「API」「リクエストパラメーター」といった、サーバー通信などに深く関係するような用語が出てきます。その都度、言葉の意味や仕組みについて解説はしますが、関連する用語として、事前に調べてみても良いでしょう。

次回は、Webページを作成する構造化言語である「HTML」について解説します。

※文中の図はTechAcademy(テックアカデミー)提供、同サービスを運営するキラメックスでは新たな人材も募集中。

コードを書けない起業家が、プログラミングを学ぶべき3つの理由ーー「非エンジニアの起業家が知っておくべきプログラミングの知識」【ゲスト寄稿】

SHARE:

編集部注:本稿は初心者向けにプログラミングやWebデザインの講座を開催している TechAcademy(テックアカデミー)による連載企画。「非エンジニアの起業家が知っておくべきプログラミングの知識」というテーマで数回に分けて極めて基礎的なプログラミングの基礎知識をお伝えする。全連載はこちらから Image by Flickr ニュースレターの購読 注目すべき記事、世界のスタートアップシーンの話題、…

TechAcademy__テックアカデミー____ITに特化したスクール編集部注:本稿は初心者向けにプログラミングやWebデザインの講座を開催している TechAcademy(テックアカデミー)による連載企画。「非エンジニアの起業家が知っておくべきプログラミングの知識」というテーマで数回に分けて極めて基礎的なプログラミングの基礎知識をお伝えする。全連載はこちらから

8409313926_33626e3a62_z

Image by Flickr

第1回目のテーマは「起業家がプログラミングを学ぶべき3つの理由」。インターネット業界で、これまで技術的なバックグラウンドを持たないまま起業した方や、これから独立・起業しようと思い立った方をサポートするための、連載記事です。

「自分のアイデアが、思い描いたように自由に実現できたらいいのに…」

技術スキルの無い起業家や、作りたいサービスがある読者の方の中には、そんな行き場のない歯痒い気持ち、コンプレックスのような感情も抱いたことがあるかもしれません。

プログラミングは、自分一人の空想だけでアイデアを具現化する方法はありません。ある日の朝、目が覚めたら英語が流暢に話せるようになる… そんな魔法のような出来事は起こらないのと同じで、プログラミングも「地道に積み重ねていく」ことでしか身につかないスキルです。

一方で、ある日から真剣に勉強を始めて、6カ月後には自分のアイデアを実現するための「魔法」を、自身の武器として身に付けることができるとしたら、どうでしょうか。もしチャレンジしてみたいと思えたなら、あなたにとって今日がその日です。

8624443762_93a5fd9ce1_z

Image by Flickr

「起業しやすい」は本当か?

インターネット業界における「起業」を取り巻く周辺環境は、ここ数年間で大きく変わりました。「Amazon Web Service」の導入などで、運用するサーバーも「低価格でスモールスタート」「流行ったときには、すぐにスケール(拡大)できる」といった、過去のデメリットも解消され、「GitHub」のような技術者同士のコラボレーションツールが定番となったほか、小規模事業者を支援するためのネット上のグループウェアが、たくさん登場しました。

経営管理という側面でも「freee」や「Money Forwerd for Business」といった金融機関と自動連携したクラウド会計サービスの登場や、開発者がWebサービス上でクレジットカード決済システムをAPIとして簡単に実装できる「Webpay」「Stripe」などが話題を呼んでおり、ここ3〜4年間だけでも、スタートアップを取り巻くビジネスモデルが大きく変わっています。これらのサービス自体もまた、「起業家」そして「エンジニア(ハッカー)」たちによって生み出されてきた製品ということを、忘れてはいけません。

さらには、シードアクセラレーターと呼ばれる、会社の創業期に少額投資とメンタリングをおこなう特化型のファンドも多く誕生し、日本でも「起業しやすい環境」がほとんど出揃っていると言われ始めました。無料で使える学習教材はウェブに溢れており、クラウドソーシング市場も急拡大を遂げていて、業務の一部をアウトソースすることで、限られた経営資源も効率的にコントロールできるようになっています。

一方で、なかなか肌感覚としては、人々の生活に影響を与えたような起業家が今いるか? と質問されると、答えに躊躇してしまいます。LINE などの急成長を遂げた世界規模のサービスが、日本の現役大学生などのスタートアップチームによって作られていたら、日本中の若者を奮い立たせ熱狂させるような、非常に面白いエピソードになったことでしょう。

この記事では、起業家がプログラミングを学ぶべき3つの理由について、考察してみます。

8417742500_0beacf6a00_z

Image by Flickr

1:アイデアの連鎖 – アウトプットで生まれる着想

新規事業への参入障壁が低いインターネット業界では、「アイデアそのものに価値はない」と繰り返し言われ続けてきました。

自分のアイデアをいくら雄弁に語れたとしても、同じことを考えている人なんて世界中にたくさんいるから、実際に作ったサービスの品質やユーザー体験になって初めて価値として認められる ─ とても説得力のあるメッセージですが、それ以上に重要な側面もあります。

それは「アイデアの連鎖」です。自分の中にあった最初の着想は、実際に「目に見える形」に落としこんでいく作業の過程でどんどん膨れ上がり、最終的に仕上がったモノを見回してみると、最初に考えていた要素は全体の15%にも満たなかったということが、日々改良を重ねるスタートアップのソフトウェア開発の世界においては、しばしば起こり得るのです。

これは新規事業のプランナー、そしてチーム(組織)をつくり上げる重要人物である起業家・CEOにとって、経験を通して、知っておくべき重要なポイントです。発案者自身の手によって、アイデアを形にするという作業の過程では、アイデアに命が吹き込まれて、成長していきます。

あるいはスピンオフして、新しい視点からの着想が得られることもあるでしょう。「世界のどこかで、同じようなアイデアを考えて人はたくさんいる」というのは前提として、この「アイデアの連鎖」のプロセスを、最初に企画した当事者が経験する事こそが、起業家の人物像としての成長 にも欠かせない要素の一つといえるでしょう。

7304157828_37c0a97080_z

Image by Flickr

2:チームワーク – 相手を理解する

大きなビジョン・アイデアを掲げた起業家が、気の合う友人のエンジニアと2人、3人で会社を立ち上げた場合、最初の1年くらいは、きっと楽しい思い出になるでしょう。創業の準備中は、みんなが成功するシナリオを空想しています。

順調な滑り出しとなれば、その後は様々なミートアップイベント、同じタイミングで起業した仲間との情報交換、メディアの取材、「投資家」という未知の存在との接触、サービスをローンチするときの高揚感、最初のユーザーが1万人に達したときの達成感・・・。これらの出来事が1年間に立て続けに起こり、刺激的で濃厚な日々を送っている起業家の脳内には、多くのアドレナリンのようなもので満たされています。

そんな滑り出し順調に見えた会社も、さらに一年が経ったとき、どうなっているでしょうか。

当初のアイデアをもとにしたサービスが、世の中の「時勢」「市場のニーズ」と絶妙に一致するタイミングであり、キャッシュフロー計画など入念に練られた事業計画をもとに進められていたら、成長し続けて外部からも優秀な人たちが自ら「関わりたい」とコンタクトがあるかもしれません。しかし、残念ながら、その可能性は非常に低いのが実情 です。多くの起業家・チームが、スタートダッシュを切ったあとに感じること、それは「閉塞感」です。

成功とも失敗とも定義できない状態が続くこと、それが最も苦しい時期かもしれません。失敗だとはっきりと言い切れない、「思い入れ」という名のバイアスとの戦いであり、スタートアップ用語の中では「ピボット(方針転換)」というキーワードも話題になりました。(ピボットの厳密な意味は “軸をもとに方針転換する” なので、組織文化やプロダクトの設計思想はそのまま尊重しつつ、プロセスや方法論を見直すという解釈もあります。)

停滞する時期には、「コードの品質が悪かったのかもしれない」「メディアに取り上げられたときに、サーバーがダウンしてしまったのが機会損失だった」「この機能のユーザー体験が設計ミスだった」いろんな反省点が上がり、チームバランスが崩れ始めます。

もしあなたがコードが書けない、あるいは読めない起業家だったとしたら、このとき仕事が無くなるのです。

なぜなら、改善のために何をしたらよいか、ほとんど本質的に理解できないからです。プロダクトに対しての設計思想からフロントエンドのコーディングまで、全体像をおおまかに把握できていないと、どこに問題点があり、何を修正すればよいかという「改善のアイデア」は容易に浮かんできません。そんな起業家と働いているエンジニア達は、迷走する経営方針に居心地が悪くなり、ついにはチームバランスの崩壊が始まります。

チームを代表する起業家は、決して専門的なエンジニアである必要性はありません。経営者は、戦略策定・組織作り・採用計画・資金調達などやるべきことが常に山積みです。しかし、サービスの設計思想からユーザー体験まで、書かれている コードの意味を理解し、新機能のプロトタイプを作れる程度 のプログラミングスキルがあることが、周囲のエンジニアやデザイナーとの協調性や、相互理解においては、一助となるのは間違いないでしょう。

4092585825_e59c0442d3_z

Image by Flickr

3:最後の砦 – いざというとき、自分が陣頭指揮を取る

当初のアイデアは、新規性があって面白いとメディアに取り上げられ、アーリーアダプター層が試しにユーザー登録をして使ってみる。だけど、肝心の伝えたいユーザー層には届かなかったか、あるいは定着しない。ほとんどのアイデアの末路が、残念ながらこうした短い命 になってしまいます。

こんなとき、技術的なバックグラウンドがある起業家は、死にかけたアイデアに命を吹き返すための作業を、すぐに陣頭指揮をとって取り掛かることができます。パッケージソフトウェアと違い、Web上で動くソフトウェアは、自分が書いたコードによって、翌日には数値というフィードバックが得られます。それを分析して改善を繰り返す。

この時期に一番大事なことは、外に出て営業することでも、もっと優秀なエンジニアを採用するための資金調達の活動でも無く、ターゲットとする顧客・ユーザーの心理を掴んで、小さなフィードバックを頼りに改善し続けること。あるいは、一度壊して最初から作りなおすことです。

現在のインターネット業界のサービスは、革新的アイデアや機能性ではなく、ユーザー体験での差別化というフェーズに入ってきました。同じコンセプトのサービスでも、少しでも使いやすかったり、サポート体制が整っていたり、人間の深層心理に響いたものだけが受け入れられて、事業価値に変換されます。あなたが最後の砦となって、インフラ部分も見れることは、投資家がスタートアップの企業価値を算出する上での、一つ要因になります。

253424122_66dc1084a4_z

Image by Flickr

結局、自分の手で作ったほうが早いか?

最近ネットで話題になった、「アイデアだけの起業家」と「プログラマーが日曜日に趣味レベルで作るサービス」と比較したとき、圧倒的に後者のほうが魅力的だ、という内容の記事がありました。「アイデアの連鎖」「チームワーク」「最後の砦」の例にとどまらず、インターネット業界で起業家を名乗る上で、少なくとも最低限のプログラミングの技術があるだけで、多くのメリットをもたらします。それについて、実は心では分かっているけれど、最初の一歩が踏み出せないでいるだけかもしれません。

起業して数年後、「結局は自分自身でスキルを身につけたほうが早かったかも」と後悔することは、非常に残念なことです。頭の中では細部まで思い描けていても、他人に伝えるときに3割以上が損なわれてしまいます。

技術レイヤーに一切触れなくても、営業力や人望、コミュニケーションスキルなど、別の能力に尖っていた場合には、上手くいく場合もあります。一方で、現代では教養としてプログラミングを学ぶことは、起業家にとどまらず全ての職業の人が、地頭を良くしたり、問題解決スキルの醸成、自らで創意工夫する日々の習慣、ものづくりを通して顧客とつながる体験を通して、人生に良い影響を与えるだろう、という思想が、増えてきています。

この連載企画では、起業家をはじめとしたプログラミングに挑戦しようとする読者層(非常にニッチな読者層かも知れませんが)を対象として、インターネットの基礎、HTMLの基本など、最も低いレイヤーの話題から始まり、データベースの構造や最新のソフトウェア開発の動向まで、10回に分けてお送りする予定です。