初心者向けにHerokuを使ってHTMLのwebサイトを公開する方法について解説しています。HerokuはWebサイトやアプリケーションの開発、実行、運用をクラウドで行うことができるサービスです。ここではHerokuを導入してサイトの作成と公開を行う手順を説明します。2018/4/20テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。調査手法:インターネット調査Herokuを使ってHTMLのwebサイトを公開する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。HTMLの書き方について解説した記事を読むとさらに理解が深まります。本記事は、TechAcademyのオンラインブートキャンプ、Webデザイン講座のHTMLカリキュラムをもとに執筆しています。活用場面webサイトを公開する場合にはレンタルサーバなどのwebサーバを容易しなければなりません。Postpres」があり、アプリ開発などの開発環境で使い勝手のよいサービスです。通常のwebサイトの表示に比べ表示速度が遅い場合もあるため、あくまで開発用として使うものになります。Webデザインで副業する学習方法を動画で公開中herokuとはherokuとは開発環境用のサーバサービスです。通常、サーバは月額や年額などで利用料金が決められていますが、herokuでは開発用としてクラウドサーバを利用する場合は、多少の条件はありますが無料で利用することができ気軽にデプロイを試すことが出来ます。herokuはサーバを使ってアプリを表示するためのものなのでRuby,PHP,Javaなどの言語の場合に開発用と利用しやすいものになります。HTMLのような静的なwebサイトの場合にはPHPなどでファイルを作成し、heroku側にアプリだと認識させることでHTML表示をさせることが出来るようになります。herokuを使ってwebサイトを公開する方法herokuとgitを自分のエディタ上で使えるようにインストールをしなければなりません。メールアドレスや名前等を入力し、herokuからメールが来ます。割り当てられたherokuログイン用のURLからwebサイトを開き、パスワードを入力すると利用を出来るようになります。同様にherokuを利用するにはgitも使えるようにしなけれなりません。version上記をエディタのターミナル上で実行した場合にバージョン名が出ない場合は、その環境にインストールが出来ていないので、両方ともインストールをしておきます。loginと打つと、ブラウザ画面が開きherokuにログインをすることが出来るようになります。herokuは前述したようにアプリを表示するためのものなので、空のindex.phpを作成しておくことで、heroku側でアプリだと認識をされるようになります。空のPHPファイルを作成後、ログインが出来たら続いてローカル環境で記述したコードをherokuへフォルダごと送ります。コードを送られる側のherokuの空のアプリを作成します。create次に作成した空のアプリにコードを送信します。masterこれでherokuの方へコードが送信されました。openと打つことでherokuが表示されました。ブラウザの一番上に表示されるアドレスの最後尾に今回作成したファイル名の「/index.html」を書き足すことで、HTMLファイルを表示することが出来ます。表示する方法としては、作成したPHPファイルの中にindex.htmlを呼び出す記述をすることでも実現出来ます。?>そしてこの場合には空のcomposer.jsonファイルを作成し、以下のように記述をしておくことでheroku側でアプリだと認識されるようになります。(composer.json){}今回はcssで文字が赤くなるようにしていますが、このように表示されていれば成功です。「スクールは高いから独学で成功する」という気持ちの方は多いと思います。その方が金額は低く抑えられるでしょう。独学には向き不向きがあり、実はスクールが向いている人も大勢います。スクールが向いているかもしれません。お気軽にご参加ください。木村勇土TechAcademyの現役メンター。現在は行政書士事務所を運営しており、お客様にはプログラマーやフリーランサーも多い。WordPressを中心とした自社のWebサイトの修正などを行なっている。大石ゆかり内容分かりやすくて良かったです!田島悠介ゆかりちゃんも分からないことがあったら質問してね!大石ゆかり分かりました。ありがとうございます!TechAcademyでは初心者でも、オリジナルWebサイトを公開できる、オンラインブートキャンプを開催しています。現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。30分間、オンラインでどんなことでも質問し放題です。あなたの相談に真摯に向き合います。「漠然としているがプロの話を聞いてみたい」こんな気持ちでも大丈夫です。お気軽にご参加ください。※体験用のカリキュラムも無料で配布いたします。静的HTMLの共通部分をincludeして使う方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。...HTMLHTMLでクリック開閉する多階層ツリーのリストを作る方法を現役エンジニアが解説【初心者向け】HTMLでクリック開閉する多階層ツリーのリストを作る方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説しま...HTMLHTMLのimgタグにURLを設定する方法を現役エンジニアが解説【初心者向け】HTMLのimgタグにURLを設定する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。...HTMLHTMLで正しくパーマリンクを設定する方法を現役エンジニアが解説【初心者向け】HTMLで正しくパーマリンクを設定する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。...HTMLアンケートなどに役立つ!HTMLでチェックボックスを作成する方法【初心者向け】HTMLでチェックボックスを作成する方法webページでよく見かけるチェックボックス。自分で作成するとなると一見難しそうですが、実はHTMLで簡単に書くことがで...HTMLHTML5でvideoタグのposter属性で動画のヒント画像を表示する方法を現役デザイナーが解説【初心者向けHTML5でvideoタグのposter属性で動画のヒント画像を表示する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して...HTMLあわせてよく読まれている記事Webサービスをすぐに動かせる!HerokuでRailsアプリを公開する方法【初心者向け】Webサービスを自分の開発環境で開発できたら、いよいよ公開ということになります。この際レンタルサーバーを借りたり、AWSを使ったりすることもできますが、もっと手軽に公開してみたいということもあるでしょう。Railsで開発したアプリケーションを公開する方法をご紹介します。サーバーなどの知識がない初心者でも、手順に沿って操作をすれば簡単に公開することが可能です。この記事を参考にHerokuの使い方を覚えていきましょう。本記事は、オンラインブートキャンプのHerokuのカリキュラムをもとに執筆しています。Service)と呼ばれるサービスで、アプリケーションを実行するためのプラットフォームです。開発したWebアプリケーションを比較的簡単に公開することができます。独自ドメインを割り当てて、Herokuでサービスを運用することも可能です。Herokuではアプリケーションの実行環境やデータベースなどを提供してくれるため、アプリの開発に集中することができます。4つのプランがあり、今回は無料のフリープランを使います。Herokuを使う準備としてアカウントを登録しましょう。Herokuのアカウント登録ページにアクセスしてください。アンケートとして使うプログラミング言語が聞かれます。Railsを使うので、Rubyを選択しました。Account」をクリックして次に進みましょう。ここで登録したメールアドレスにメールが届きます。メールのリンクをクリックするとパスワード入力画面へ遷移するので、パスワードを決めて次に進んでください。Heroku」と表示されればアカウント登録が完了です。アカウント登録は特別な操作はなく簡単ですね。Railsのアプリケーションを用意しましょう。今回はサンプルとして、heroku_first_sampleというファイルを作成しました。Railsの開発環境を用意する、または、Cloud9で開発するなどの方法で自分で用意しましょう。適当な場所にrailsのプロジェクトファイルを作成します。続いて簡単なビューを生成するためにControllerを作成していきます。ここで一度ローカルサーバーを立ち上げてみましょう。この状態でローカルホストにアクセスし、テンプレートが表示されればOKです。アプリケーションらしく動作させるよう、少しだけ手を加えていきます。「Sample#index」のままだとアプリケーションということがわかりずらいので、テンプレートを修正していきましょう。app/views/sample/index.html.erbを編集します。Application!」と表示されるようになります。ルートも書き換えておきます。TOPページにアクセスした際にアプリケーションが表示されるようにするためです。config/routes.rbを編集します。Application!」と表示できるようになったはずです。実は私も!?独学で損する人の特徴プログラミングherokuを利用したPythonアプリケーションのデプロイ方法を現役エンジニアが解説【初心者向け】herokuを利用したPythonアプリケーションのデプロイ方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。自分が作ったアプリを外部に公開する際にはレンタルサーバーを使用して公開しますが、月額で利用料を払いアプリをサーバーの初期設定やデプロイ(アプリを実行可能状態にする作業)、メンテナンスを行う必要があり運用コストがかかり個人で手軽に始めるには障壁があります。最近ではアプリの実行環境が予め設定されているクラウドを利用することで面倒な設定をすることなく手軽にアプリを公開できるようになりました。そこで本記事では無料で利用する事のできるherokuを使用してPythonで作成したWebアプリケーションを公開する方法を解説します。Service)です。PaaSとは、サーバーの初期設定をすることなく、アプリを公開することのできるサービスのことです。これにより、開発者はアプリケーションの開発に集中することが可能です。herokuは数あるPaaSの中で無料で使うことができることがメリットです。タイムアウト等、実運用するにはデメリットもありますが、趣味でアプリを公開するには十分なサービスです。Flaskで簡単なアプリケーションを作成していきます。以下のコードをherokuで動かせるように設定をしていきます。ファイル名はapp.pyとします。続いてherokuにデプロイする際にインストールするPythonライブラリの一覧をテキストファイルを用意します。ファイル名はrequirements.txtとします。この中にあるgunicornは簡単に言うとサーバとアプリケーションを接続するためのインターフェースのライブラリです。デプロイしたファイルを動かすためには、Procfileというファイルを用意する必要があります。中身は以下の通りです。これでアプリケーションを動作するために必要なファイルが用意出来ました。以下のコマンドでrequirements.txtに記載したライブラリをまとめてインストールします。Pythonの環境をご自身のパソコンでセットアップしていることを前提にしています。それでは、動作確認です。以下のコマンドを実行しアプリケーションを立ち上げます。World!」と表示されたらローカルでの動作確認が出来ています。それではherokuの登録をします。下記のリンクからherokuにアクセスします。その後下図のような画面が表示されるので名前、メールアドレス等必要事項を記入して登録します。続いて、herokuへデプロイしていきます。デプロイするためには専用のコマンドラインツールを使って行う方法が簡単です。こちらにアクセスしてherokuのコマンドラインツールをお使いのOSに合わせてインストールしていきます。インストールを終えたら、以下のコマンドを実行しherokuへログインします。以下の1行が表示されたら、q以外のキーをタイプして、ブラウザでログイン画面を表示させます。in】ボタンを押してherokuにログインします。先程作成したコードを保存しているディレクトリに移動し、以下のコマンドを使用しherokuアプリの作成をします。アプリ名がそのままURLになるので、他と被らないものを設定してください。成功すると、左側にアプリのURL、右側にデプロイのためのgitのリンクがそれぞれ表示されます。試しに左側のリンクをブラウザでアクセスしてみましょう。すると以下の画面が出力されて問題なくアプリが作成されていることがわかります。確認できたところで、ファイルのデプロイを行います。以下のコマンドを実行しherokuのgitのレポジトリをフォルダに定義します。gitPython非エンジニアがWebプログラミングで勉強すべき10のことまったくのプログラミング未経験の非エンジニアだと、「いったい何を勉強をすればいいのか」がわからないということもあるでしょう。そこで今回は、現役のエンジニアから、Webプログラミング習得のために何を勉強すればいいか伺いました。伺ったのは、自身もプログラミング未経験から楽天のエンジニアに転身した経験を持つ村田佑介氏です。株式会社AIトラベルCTO。2010年に楽天株式会社に新卒で入社し、最初は新卒採用の部署に所属。その後、開発部門の部署に異動して楽天ツールバーなどの開発に関わる。現在は株式会社AIトラベルのCTOとして活躍中。自身のブログで書いた、プログラミング未経験者がWEBエンジニアになるためにやるべきことが以前に話題になりました。本記事ではこの内容をもとにお話を伺い、TechAcademyで再度まとめています。以前の村田氏のインタビューによると、もともと非エンジニアの友人に「プログラミングを勉強するためにどうすればいいか」を聞かれて紹介していたものをまとめた記事だそうです。ここからは自力でWebサービスを作りたいならこれくらいを勉強しておいた方がいいという項目を10あげてみました。村田氏のもとの記事ではドットインストールなどプログラミングのオンライン学習サービスのリンクが紹介されていますが、本記事では、今すぐ読んで大まかな内容がわかるよう、TechAcademyマガジンの記事・TechAcademyが寄稿した記事をリンクで紹介しています。10項目は上から順番に勉強することがおすすめとのことです。プログラマーが使っているような黒い画面に慣れましょう。そのために、MacのPCを使っている場合はターミナルをどんどん使いましょう。WindowsのPCであってもクラウド上で開発環境が用意できるCloud9を使うと、ブラウザ上でターミナルを動かせます。Vagrantというツールを使ってローカルに仮想環境を構築しておくこともおすすめです。主要なUNIXコマンドは下記の参考ページにも書いてありますので、フォルダを作る、ファイルをコピーする、編集するなど自分で操作してみてください。最初はエラーが出て戸惑うところもあるかもしれませんが、エラーメッセージを読んだり、調べたりして解決することが大事です。Webページを作るためにベースとなる技術です。Webサービスは基本的にRubyやPHPといったプログラムでHTMLを動的に作るものですので、まずはHTMLとCSSを理解しておく必要があります。書き方の基本をおさえてから、どこかのサイトを真似てもいいので、自分でWebサイトを作ってみるといいでしょう。HTMLとCSSはブラウザとテキストエディタがあればPC上で簡単に表示できるので、特別な準備も必要ありません。完璧でなくても大丈夫ですのでHTMLとCSSを書けるようになったら、何か1つプログラミング言語を使ってみましょう。言語は何でもいいそうですが、PHPとJavaScriptはWebと親和性が高く、作ったHTMLに埋め込みやすいのが特徴です。PHPの場合は開発環境の準備が必要になるので、XAMPPやMAMPを用意するのがいいでしょう。JavaScriptはHTML/CSSのようにテキストエディタがあれば、ブラウザ上で実行できます。村田さんの個人的な趣味としてはRubyがおすすめだそうです。こちらも開発環境が必要ですが、Cloud9など統合開発環境を使うのも有効です。ループなどの基礎をおさえておくといいでしょう。Gitとは、プログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システムです。いつ/誰が/どこを/どのようにファイルを変更したかを、変更履歴として記録することができます。これにより、編集したファイルを過去の状態に戻したり、どこを編集したかの差分を表示したりすることができます。個人の開発でもチームの開発でも活躍するので、早い段階で使えるようにしておきましょう。これはテキストを読むよりも、GitHubなどを使いながら覚えるのがよさそうです。GitHubはGitの仕組みを利用できるWebサービスです。下記の参考ページにGitの主要コマンドも紹介しているのでチェックしてみましょう。普段Webサイトを見ていても、どうやって動いているのかわからない人もいるのではないでしょうか。書籍としては「Webを支える技術」がおすすめだそうです。書籍を読むと時間がかかるという人は下記の参考ページをまずは見ておきましょう。ある程度動くプログラムが書けるようになったら、情報を保存するためのデータベースについて学びましょう。ユーザーのログイン機能を作る時もメールアドレスやパスワードの保存が必要です。データベースを操作するための言語としてSQLがあります。オープンソース・ソフトウェアの「MySQL」あたりから使い始めるのがよいでしょう。Railsのデフォルトで使われるSQLiteなどもあります。コマンドをいちいち覚えるのは大変ですので、調べながら使うことをおすすめします。本格的なWebアプリケーションを作るために必要な機能は様々ありますが、あらかじめ必要機能をまとめているフレームワークがほとんどのプログラミング言語にあります。フレームワークというだけあり、フレームワークの作法にしたがって開発すれば無駄な手間なくWebアプリケーションを作ることができます。RailsやSinatraというフレームワークがあり、PHPにはCakePHPやFuelPHPといったフレームワークがあります。Railsは日本語に対応したチュートリアルサイトも充実しているので、それを見ながらまずは動かしてみるのがいいでしょう。動かすことができたら、自分でどう作ればいいかを考えてみることをおすすめします。することで、徐々に応用ができるようになるそうです。Webアプリケーションを作れるようになったらいよいよ公開です。方法はたくさんありますが、外部のレンタルサーバーを借りてアプリを置くのが一般的です。他にも、Herokuを使って簡単に公開する方法もあります。Service)と呼ばれるサービスで、アプリケーションを実行するためのプラットフォームです。Railsで作ったアプリケーションはHeroku上で簡単に動かすことができるため、独自ドメインを割り当てて、Herokuでサービスを運用することも可能です。無料でも使えるので、最初はHerokuで試してみてもいいかもしれません。Linuxをいじって勉強するならさくらVPS、本格的にWebサービスを運用したいならAWSを使ってみましょう。Webサービスを公開する以上は、何かしらの攻撃を受ける可能性があります。そのため、攻撃でどんな被害があるか、どう対策すればいいかは知っておく必要があります。このあたりはまとまって学ぶ必要があるので、書籍を読むのがいいでしょう。最初はコードをただ書くだけになってしまいがちですが、自分で書いたコードであってもすぐに意味がわからなくなることがあります。書籍「達人プログラマー」を書いたデビッド・トーマスがこんなことを言っています。コードの読みやすさ、すなわち可読性はこの変更のしやすさの重要なファクターです。そんなコードの読みさすさを学ぶ書籍がこちらです。後ほど紹介するリブセンスのスライドでも、繰り返し読んでコードを見返してもらうためにおすすめされていました。ここまでプログラミングを独学で進める前提で紹介してきましたが、より効率的に学ぶにはメンターをつけるという手段もあります。詳細解説」の資料でもメンターをつける重要性が紹介されています。この資料ではメンターをつけることで、教材を選んでもらえる、質問することで躓いている時間をなくすことができる点をメリットとしてあげていました。身近にメンターをしてくれる人がいればお願いすることをおすすめします。この記事を参考にプログラミングの勉強を進めてみてください。[お知らせ]TechAcademyでは、Webサービスを1人で開発できるまでのスキルが身につくオンラインブートキャンプを開催しています。現役エンジニアのパーソナルメンターが毎日の学習をサポートします。Railsを使いHerokuで公開するまでを学習するので、本記事の内容は網羅されています。プログラミングを独学していて、このように感じた経験はないでしょうか?プログラミングこれからのエンジニアに必要なスキルとは【非エンジニアサミット・イベントレポート】TechAcademyでは、2015年6月14日に『非エンジニアサミット「プログラミングをシゴトにする」』というイベントを開催しました。これからプログラミングの学習を始める方を対象に、第一線で活躍するエンジニアから直接話を聞けるイベントです。Fablicの堀井雄太氏をゲストとしてお迎えしました。本記事ではイベントレポートをお届けします。これからプログラミングの学習を始める方は参考にしてみてください。2001年、伊藤忠テクノソリューションズ株式会社へ入社。在職中、Rubyの導入支援やRubyを用いたクラウドサービスの開発・運用に従事。Enterpriseの導入による開発品質の向上や、デプロイメント支援システムをRubyで開発。Rubyやソースコード管理に関する講演、著書多数。2014年1月、株式会社クラウドワークスに参画、執行役員CTOに就任。「Fril(フリル)」を開発しているエンジニア。GROUP)に新卒入社。比較サイトの運営やディレクトリ検索サービス、広告配信システムの開発などを経験。向けのフリマアプリ「Fril」を開発、インフラ、サーバーサイドの開発担当。大場光一郎氏から講演いただきました。講演では、エンジニアになったきっかけ、社内の開発体制、これからエンジニアを目指す人に期待することをお話しいただきました。学研の教材に載っていたマンガがきっかけでBASICを使ってプログラムを書いてゲームを作りながら自分でやってみようと思ったのが、一番最初にプログラムを書くことのスタートだったとのこと。その後は、ハードウェアを組み合わせた業務システムを開発している会社に入社。当時は「プログラムさえ書ければいい」と思って社会人をスタートしたそうです。その時のことを大場氏は「今から考えると当たり前ですが振り返るとコードを書けるだけで会社を選ぶのは良くない」とも語りました。その頃、働いていた会社とは別に、オープンソースを開発するプロジェクトに入り、そのプロジェクトの開発者との交流を通じて、組織の垣根を越えてプロジェクトを進めることを経験したそうです。そのため、大場氏の考え方の根本は「オープン」。実際仕事の中でもオープンソースのように仕事をしているのが特徴なんだそうです。クラウドソーシングサービスのクラウドワークスの開発体制はどうなっているのでしょうか。特徴は、UX改善会を開催してユーザー体験を大切にした開発を重視していること。「UX改善会」は、3、4人のチームを組んで、ユーザー視点でサービスを使い、サービスにおける課題を見つけ、改善案などをプレゼンテーションに落とし込んで全社員に発表するというもの。社員はもちろん、エンジニアインターンの学生から率直な意見を聞いて改善に役立てているといいます。この取り組みにより、サービスを使い続けていると当たり前になって気づかないことを、改めてフレッシュな気持ちでサービスを見つめられ、実際にサービス落としこんで、日々改善ができているんだそうです。開発分野の他に、クラウドワークスでは日報の書き方にも工夫があり、お互いがどんな仕事をしているか共有し合えるように、他の部署の人でもわかる言葉で伝えることを推奨しているそうです。大場氏は「今は技術が折り重なってできているので、深堀りすればするほど深いし、技術の移り変わりも早いので、エンジニアとしては多層的に折り重なる技術を同時に理解できないといけない状況です。」とエンジニアとして必要なことを語りました。そのような状況の中で、初心者としてプログラミングをはじめるのは、チュートリアルなどが充実しているため、比較的簡単で、初心者から中級者に上がるにはいろいろな技術をキャッチアップする必要がでてくるため、1人では限界があるとのこと。そのため大場氏は、勉強会を通して仲間を見つけることや、プログラミング学習のサービスの活用などを推奨しているそうです。JavaもRubyも最初は「おもちゃ」と言われていた背景があり、「おもちゃ」と言われているような技術を使ってみることの大切なんだそうです。「イノベーションを起こすようなものは最初おもちゃのように思われがちですが、だからこそチャレンジすることが今後のエンジニアに必要なのではないか」と大場氏は締めくくりました。続いて、堀井雄太氏に講演いただきました。大場氏と同じく、エンジニアになったきっかけ、社内の開発体制、これからエンジニアを目指す人に期待することお話しいただきました。経済学部出身で、大学でもプログラミングの授業で受けていたわけではない、いわゆる文系プログラマーだという堀井氏。それでも大学生のころから漠然とWebサービスを作ってみたいと思っていたそうです。そこで大学生のうちにいろいろな会社でインターンをとして働いていたのがプログラミングを学ぶきっかけ。最初はHTML/CSSを使ってWebサイトを作るところからはじめ、本を読み込んでサービスを作ってみるなど独学で学んだとのことです。GROUP)に新卒で入社し、自社プロダクトの開発と運用をして、後半の2年はインフラの部署に所属されていました。会社に所属することのメリットとしては、独学よりも体系的に学べる、先輩や同僚がいることで成長できるなどを挙げていました。堀井氏が講演の中で話した、「エンジニアとしては遅咲きだが、遅いということはない。意志があれば、とりあえずやってみるのが大事」という言葉が印象的でした。株式会社Fablicは、2012年7月にフリマアプリのFril(フリル)をリリース。累計ダウンロード数が300万を越えているといいます。現在は、12、13人のメンバーで開発しているそうです。エンジニアはまだまだ増やしたいとのことで、募集も随時行っているとのこと。開発体制として特徴的なことは、ユーザーと一緒に開発すること。実際にFrilを使っているユーザーをカスタマサポートとして採用しているそうです。開発の現場にユーザーがいて、「困ったことがあったらユーザーに聞く」が信条で、実際の開発フローにユーザーが関わるようにしているといいます。どんなエンジニアになるかを意識することが大事とのことです。会社のフェーズによってエンジニアに求められることは違うので、技術の経験たくさんを積むことが大事。堀井氏自体も、サーバーサイドもインフラも関わってきましたが、今では全てが関係しているそうです。それぞれの領域を学んでいく中で、強みを形成していくのが良いとのことでした。技術を学ぶだけでなく、行動して実践することも大事。チームで開発できる、社内で共有できる、社外にアウトプットできる、リーダーシップを発揮できるなど、技術をもとに行動することが今後のエンジニアに求められていると語っていました。最後には「ものづくりは楽しいので、楽しみながら開発していくのが大事」というメッセージで堀井氏は締めくくりました。続いて、大場氏、堀井氏によるパネルディスカッションです。モデレーターはTechAcademyを運営するキラメックス株式会社の代表取締役社長の村田がつとめました。パネルディスカッションでは、事前に参加者から募集した質問をもとに回答いただきました。質問はこれからエンジニアになっていくことを想定して、下記のセクションに分けて進めています。(村田)それではパネルディスカッションを始めていきます。非エンジニアの方のプログラミング学習が一歩前に進むきっかけになればいいなあと思っています。最後には会場のみなさんからの質問も受け付けます。(村田)まず1つ目の質問ですが、「どのプログラム言語から勉強するべきか」という疑問にお答えいただこうと思います。(堀井)最初はPHP、Perl、Rubyあたりから始めるといいのかなあと思っています。理由は、コミュニティが活発なので困ったらそういうコミュニティに相談して聞く環境があることですね。あとは、実際に企業に入ってみて使われていることも多いです。実際、私が新卒で入った会社も主要な言語がPHPであとPerlとRubyも少しあったので就職するときも有利だと感じています。大場さんはいかがでしょうか?エンジニア歴も長いと思いますが。(大場)最初に触る言語としては僕はなんでもいいかなと思ってるんですけど、子供向けや教育向けと呼ばれる機能が制限された言語よりは汎用的な言語を使った方がいいかなと思っています。それがコンピュータが本来持っている能力を引き出せる可能性があるという理由です。学びやすさとか初心者向けといった軸で選ぶよりは、なんでもできるような言語を選ぶのがいいのではないでしょうか。(村田)では続いてプログラミングを勉強する段階になった際に「どこから着手すればいいか」という質問に入っていきたいと思います。(大場)さっき話したことと関係しているのですが、一つのサービスを成り立たさせるためにはいろんな技術の積み重ねがあって、一部分だけわかっててもサービスとしては成り立たないことがあります。どこからというよりは「これが作りたい」とか「こんなサービスをやってみたい」といったところを目指して、それに足りないのはどこなのか、簡単そうなのはどこなのか、一番難しそうなのはどこなのか、そういう切り分けでちょっとずつ自分がどこにいるかわかるように進めるのがいいんじゃないかなと思います。この言語を覚えたいといった学習の仕方だとモチベーションが続かないと思うんですよね。(村田)それはありますよね。(大場)コンピュータという分野も3ヶ月勉強した人や10年仕事で使ってますという人とか経験にいろいろあっても、その中で「マスターしました」って自分で言える人はあんまりいないと思うんですよね。すごい奥が深い世界なんで。この言語をマスターするまでやろうとなると結構どこまでいっていいかわからない。道具として何をやりたいかというところを目標にすると続きやすいんじゃないかなと思います。(村田)目的ありきでその言語をツールとして使って、形にしていくところから足りない部分を補うのがいいんじゃないかということですよね。(堀井)大場さんも仰ったように一つを学べば終わりというものではないですね。プログラミングをするモチベーションを保たないと結局意味ないので、自分がこういうのがあったら便利だなというものをとりあえず手を動かしながら作るのがいいと思います。(大場)さっきTechAcademyのオンラインブートキャンプの説明の中で、Twitterクローンを作るというお話しでしたが、あれってどこまでのクローンなんですかね?投稿するだけだと簡単だけどTwitterを真面目に作ると結構難しいと思うのですが。Railsチュートリアルに載ってるくらいのマイクロポストみたいなレベル感ですね。ユーザー登録ができてフォローして、その投稿がそれぞれタイムラインに一列に出てくるクローンです。(大場)フォローもするということは、ある程度データベースの関係性もグラフみたいなところもやるんですね。いう意味では歯ごたえのある感じですね。実際に世界中で使われているようなサービスに近い形で作る方がモチベーションが上がると思っています。使わなそうな図書館データベースを作るよりもTwitterクローン作る方がイメージがわきやすいし面白いなと感じてもらえるはずです。プログラミングを学習するときのモチベーション、特に一人で勉強する時間が長いので、自分がやる気になるようなところから始めるのがいいのかもしれませんね。(村田)では次にいきましょう。「プログラミング習得をする上でつまずきやすいポイントとその解決方法」について聞いてみたいと思います。(堀井)つまずくところいっぱいありますね。環境構築が一つのハードルになるかなと思ってます。弊社でもインターンに来てもらうことが多いのですが、プログラミングを書き始めるまでの開発体制を整えるところで時間がかかることがあります。今はEC2とかHerokuとか、必要なパッケージがそろっている状態で始められるものもありますね。無料プランを使うか、少しお金を出せばサーバーが簡単に手に入るので、うまく使って最初のハードルを乗り越えてから本を一冊写経してみるといったことから始めるのがいいのかなと思ったりしますね。(大場)個人的には難しいところって技術と技術の境目の部分かなと。Rubyだとアプリケーション開発の知識がいるし、データベースにアクセスするときにSQLみたいな言語をわかってないといけないし、両方わかってないといけないようなシチュエーションがサービス開発の中でたくさんあります。両方の知識が求められるところでハードルがぐっと上がって、新しいことを覚えるのが難しいのかなと思いますね。その解決方法としては繰り返すということですかね。繰り返していると、「これはこのことだったんだ」みたいに理解できることもあるので、反復するところがコツかなと思っています。一つつまずきやすいところとしては、技術の中でそもそも難しいところです。C言語だったらポインタ、Rubyだったらブロックとかですね。そもそも考え方が難しいものがいくつかあって、それを変な例えで理解しようとしても、結局どこかで嘘が入っていたりして本質的には理解できないところがあります。それは難しいものだと受け入れて、わかるまで何回も繰り返すところが必要なんじゃないかなと思っています。(村田さん)そうですね。僕も最初はPHPから始めたんですけど、クラスみたいな概念がそもそも理解できなかったです。その時は、10日くらいわからないまま続けたら理解できました。繰り返しながらやっていくと、ピーンとわかるときがくるので諦めずに繰り返すのが重要ですね。(村田)悟りが降りてきますからね。次の質問ですが、「おすすめのプログラミング学習方法はありますか」ということです。いま繰り返しやるとありましたけれど、もうちょっと具体的に聞きたいと思います。(大場)まあプログラムを書くのがもともと好きでゲームをつくるなかで学びました。Windows3.1が出たときに「マインスイーパ」というゲームが入っていたのですが、当時Windowsが動くパソコンがすごい高かったんですよね。みんなができるように、MS-DOSのキャラクターベースでできるマインスイーパを開発してみんなに配ったとか、そのなかでいろんな技法みたいなものを学んでいったというところです。今はほんと一つのアプリケーションを成立させるのにいろんな技術が必要なので、競争仲間であるとか教えてくれる先輩とかそういう人がいる環境に身を置くところが大事かなという気がします。(堀井)小さいところから考えて手を動かすのがいいかなと思っています。会社に入ってみて思ったのが、システムって完璧じゃなくてすでに困っている人がいるんですね。そこで私もわからないなりに、管理画面にあったらいい機能とかを他の部署の人から聞いたりして、改善や機能追加できるところを調べながら徐々に開発技術を学んでいくところがありました。あとは、勉強会もおすすめです。新卒で入った会社では勉強会を定期的に開催していたので、自分の回が来たら学んできたことを発表しなきゃいけない場がありました。いう半ば強制的にでも自分のスキルを底上げするようなイベントに身を置いてステップアップしていくのはいいかなと思います。僕も自分で学習してきていたときは、何かインターネット上で気になるサービスをまねてそれと同じ動きを作ってみることをしていました。あとは、わからないところでずっと迷ってるとやる気がなくなっていくので、すぐ人に聞くというのは結構重要ですね。僕は新卒で楽天に入ったので、エンジニアの部署にいる同期を休日にカフェとかに呼び出して、わからないことを聞くというのを結構な頻度でやってました。(大場)あとはオープンソースの開発に関わっていくこともいいですね。そんなに難しくなくても手が足りないというプロジェクトはたくさんあって、それこそプログラムだけじゃなくてドキュメントの追加みたいな簡単なところから手伝うこともできます。それでコミュニティの人たちの顔がわかってきて、だんだん開発に協力していく中でいいプログラムをたくさん読んで、自分がやるならどうしようみたいなことを考えたりすることがスキルアップにつながると思います。(村田)では次の項目に入っていきますね。「採用したいと思うエンジニアの特徴」について聞いてみたいと思います。(堀井)大前提としてプログラミングが好きなことが当てはまるのかなと思っています。好きな人って勝手に自分でどんどん技術習得して、自分自身でスキルアップしていくので根本的にプログラミングが好き、ものづくりが好きという素養はまず見てますね。あとは、Githubとかを使って自分が書いたコードを他の人に見てもらう、シェアするみたいな文化があると思うんですけど、自分の恥をさらすことができる、自分の持っていることをシェアするとかオープンさみたいなものを持っている人は素晴らしいかなと思いますね。(大場)堀井さんのお話の中でもサービス志向のエンジニアみたいな話題がありましたけども、スキルはすごい優秀だけどうちの事業にそんなに興味ないみたいな人は今のステージでは採用が難しいです。なにかしら共感をもってるところのプラスアルファでエンジニアリングを見て採用してます。(村田)会社の規模とかフェーズによっても変わってくるかなと思うんですけれども、やっぱりそのそもそものエンジニアとしてのプログラミングが好きであったりとか、サービスが好きみたいなところは基本的には重要ですよっていうことですね。「優秀なエンジニアはどうやって見極めているんですか?」という質問です。(大場)正直言って僕もこれだというものはないですけど、一番確実なのは一緒に働いたことがある人ですよね。いろんな会社にいると、こいつは本当にすごいみたいな人が何人かいたりします。(堀井)優秀の定義にもよるかなと思うんですが、見極めるとしたら今はGitHubとかあるので、どういうコードをその人が書いているのか、アプリなど個人でプロダクトを出しているのかとか見たりしますね。(村田)結局その人がどういう人かとか、どれくらいできるのかっていうのが見えるかどうかっていうのは結構重要なのかもしれませんね。ポートフォリオなりGitHubなり、今だとそういうのが結構アピールしやすい時代かなと思います。(村田)次に行きますね。「プログラミングスキル以外でエンジニアに求めることはありますでしょうか」という質問です。(堀井)これはもうたくさんあります。弊社もベンチャーなのでプログラミングだけできる人は結構厳しいのかなと。具体的に言うと、やっぱコミュニケーション能力が高い人がいたら嬉しいです。実際、弊社はユーザーにヒアリングすることがあるので、ちゃんとそのユーザーさんとコミュニケーションが取れるかとか、仕様が上から降ってくるのを待つのではなくて自分で考えたものをデザイナーやディレクターに発表して巻き込んでいく力みたいなのが問われるシーンが多いです。(大場)エンジニアに求めるコミュニケーション能力でいうと、そもそも人と話すのが苦手だからコンピュータを扱う仕事を選んだみたいなところもあると思うんですよね。立ち上げ初期のベンチャーだと、とにかく作るというところがメインになっていて、そんなにコミュニケーションする必要がなかったりします。組織がちょっと大きくなってサービスが伸びてくると、ある時点からチーム開発みたいなものが求められて個人技だけでは限界がきたりします。いう時にちゃんと自分に求められている役割の変化を感じて、それについてこれるかは考えてほしいなと思ったりします。具体的にはさっきの仕様の話だと、ゆるふわで落ちてきた仕様に対してこんな仕様でできるかと思うか、僕が決めてもいいんだというように受け止めるかで大きな違いがあると思うんですよ。それってエンジニアリングのバックグラウンドがあって、そういう幅のある仕様のなかで可能性として見られるかどうかっていうのは大きな違いじゃないかなと。(村田)自分から能動的に動いて、与えられたものだけじゃなくてしっかりそれ以外も自分で発信できるっていうことを理解した上でスキルを上げていけるような方が優秀になってくるし、それが求められるかもしれないですね。(村田)次の質問ですが、「エンジニアとして働き始めてからどんな勉強が必要ですか」とのことです。(大場)最近だとエンジニアの向かう方向性としてフルスタックみたいに、いろんな層の技術をまたがって自分一人でもサービス立ち上げができるみたいなところを目指したりもしますけど、実際本当に伸びてくサービス開発のなかでフルスタックになっていくのはめちゃくちゃ難しいと思っています。他に得意な人がいればなかなか手を出すのも難しい、どこをやってもいいよと言われても躊躇してしまうというところがあったりします。その中でできることは、一つひとつ極めていくところだと思っています。一個の技術だけで戦ってるとやっぱりリスクも高いので、次はこの専門家になろうみたいな二つ掛け合わせるものが何かあるといいんじゃないかと思います。(堀井)私はどういう勉強をしてたかなと思い返してみると、やっぱり学んでいくには段階的になると思うんですよね。一つの言語を学んで、データベースのことも学んで、今度はその言語の上に動いているフレームワークのことを学んだりと段階的に自分が学んだことに派生して勉強してきました。最終的に自分が得意であると言えるくらいのところまで行けるように深掘りして、一つの技術を学んでいくのがいいのかなと思いますね。エンジニアにもスペシャリストを目指すのか、ジェネラリストを目指すのかいろいろ方向性があると思うんですけど、ひとつ自分はこういうエンジニアだとか自分の代表するプロダクトはこれだとか、そういうものを作れるようになるまでは深掘りすることがいいかなと思いますね。(村田)やっぱりエンジニアとしてどこか一つでもいいので、ある程度極めるというか、できたというところまでやって、そこからスキルの掛け算みたいなところが重要になってくるということですよね。(村田)最後の項目に入っていきたいと思います。「エンジニアとしてどんなキャリアパスが描けると思いますか」という質問ですが、エンジニアとしてキャリアの長い大場さんお願いできますか。(大場)いまエンジニアの責任者として会社の中での役割を担っていますが、究極的には「事業のためにエンジニアリングをどうするのか」みたいな話になっていくかなと思っています。技術だけではなくて、最近だとよく読んでいるのはマネジメントの本とかビジネス書みたいなところからキャッチアップするような勉強をしたりしてます。(村田)技術だけではなくて、その先の事業をテクノロジーで解決していくみたいなところに進めるようなパスがいいんじゃないかという話ですよね。(村田)では次に、「エンジニアが仕事したいと思う環境はどんなところですか」という質問です。(堀井)やっぱりエンジニア目線でいうと自由度が高いであるとか、個人の裁量が大きい方がチャレンジングなことがしやすいですよね。いう環境をいまの会社で作っていきたいと思ってます。弊社ののコアバリューがいくつかあるんですが、「エンジニアもチャレンジする」というのもあります。ある程度エンジニアの裁量でどういう設計をするかなど決められるような体制になっているので、自分がいいと思ったものをすぐ試せる環境があるのはエンジニアにとっていいのかなと思いますね。最後の質問として「エンジニアとして成長するためにどんな人がいる会社で働くべきだと思いますか」という質問です。(大場)前職のように本当にエンジニアリングに関して職人みたいな人がいっぱいいるところにいて感じるのは、自分より優秀な人がいるところに身を置くことですね。自分が一番下手になって、あとは登っていくしかないみたいなイメージです。学生時代にインターンで初めてプログラミングをして、ベンチャー企業を手伝いながら一番下っ端でがんばってたらいつの間にか自分が一番詳しくなっていた。その後、さらに強い奴に会いにいきたいと言って弊社にジョインしてくれたエンジニアがいます。僕自身もいかに自分より優秀な人に来てもらうか、自分自身がキャップにならないようにすごく気をつけていて、優秀な人が活躍できるような環境や会社やサービスが大事だなと思っています。(堀井)これは私もほとんど同意見なんですけれども、自分よりも技術において素晴らしいと思った人がいるところですね。あとは、自分のスキルセットに近しいのを持っている人がいるような環境にいくと、自分のやろうと思っていることが一段引き上げられるのでいいのかなと思っています。あと最近は勉強会とか発表された資料とかがWebサイトにいっぱい上がっているので、そういうのを参考にしながら企業を選んだりするのはいいかなと思ってます。(村田)ここからは会場からの質問を受け付けたいと思います。ーー大場さんにお伺いしたいのですが、ご自身が英語情報で技術をキャッチアップするために気をつけられていることや、社内の方に英語の情報をキャッチアップするためにどんなことをしているのか教えていただけますでしょうか。(大場)今やってることでいうと、オープンソースコミュニティがだいたい英語ベースになっています。日本人しかエンジニアがいないプロダクトでもコミットとかは英語じゃないと受け付けない感じだったりします。社内に関しては、こうしないとみたいなものは今はないのですが、今週の気になる技術みたいなのを社内のGitHubにスレを立てて共有して、みんなが気になった技術は突っ込むようにしています。いうときに情報ソースが英語のものがたくさんあるので、おのずと危機感が醸成されればと思っています。(村田)まず育てる側の僕の方から話をさせていただきますね。エンジニアが足りてないところは事実です。エンジニアの採用が難しいっていうのは、そもそもマーケットに人材が少ないから取り合いになってるっていうのが一つあります。あとは統計的にもアメリカでは2020年には100万人エンジニアが足りなくなると言われています。日本でも2020年には20〜30万人ぐらいは足りなくなると言われています。インターネットを使ったビジネスはすごい盛り上がって市場も拡大しているのに、そこで働く人が増えていなければ足りなくなりますよね。僕らはそれをエンジニアを増やすことで解決したいと思っています。エンジニアになりたいという方は多いと思っていて、それでも増えないのは仕組みの問題もあると思っています。それが解決できる仕組みがあれば、人が足りないということに対してひとつの力になれるんじゃないかなと。(大場)エンジニアが足りないと言ってる会社も、2種類あるかなと思っています。1つはよくよく聞いてみると、あまりエンジニアを大切にするような文化がなくてエンジニアが定着しない会社です。いう会社の方は、「来てくれても半年くらいで辞めるから、辞めると思ってアウトソースすればいい」といったことを仰る場合もあります。いったことが負の循環になって常にエンジニアが足りないことが常態化してしまう。僕らみたいなエンジニアリングの重要性を理解していて、Webサービス中心の会社だとまったく事情は違っていて、サービスの成長にともなって、さらに成長させるためにエンジニアは、明確に足りていなくてまだまだ必要だと思っています。TechAcademyさんみたいな取り組みでエンジニアが増えていくのはこれからの日本にはものすごい必要だなと思っています。(堀井)ベンチャーで最近伸びているサービスであれば、やっぱりどうしても人が必要になってきて、実際に弊社でもエンジニアは常にどの職種も募集しています。私もベンチャーの友達とか知り合いも多くて起業する人もいるのですが、その立ち上げにはやっぱりそれなりにWebのことがわかる人がどうしても欲しくなるんですけど、そういうスキルの高い人たちは大手であるとか名の知れた会社とかに勤めています。そもそもその会社からあまり転職市場に出てこないというのは肌感としてはあるので、僕らみたいなベンチャーはいかにいい人たちを見つけて会社のことを知ってもらって、採用につなげるかについていつも苦労しています。需要はかなりあると認識しています。(村田)最後付け加えますね。プログラミングを習い事の視点でみると、換金性の高い習い事だと思うんですね。いうのも、例えば10万円払って勉強してプログラミングが習得できれば10万円以上稼げると思うんですね。クラウドワークスさんのようなクラウドソーシングサービスで仕事を探してそれに応募して自分で遠隔の仕事をするのも一つだと思いますし、自分でメディアを立ち上げるのというのも一つでしょうし。いった意味でも企業に入るだけじゃなくて働く方法はいくつかあると思います。(村田)お時間になりましたので、最後にこの会の締めくくりということで「これからプログラミングを学習するみなさんへのメッセージ」をお二方からお願いします。堀井さんお願いします。(堀井)私も最初はプログラミング初心者だったんですけど、いろいろ学びながら実際にものづくりができるようになりました。最初はハードルの高い部分もあるのかなと思いますが、楽しみながら学んでいくと自分の可能性も広がって、キャリアを積む上でもいい経験だと思います。みなさんがんばって欲しいです。プログラミングは楽しいです。(大場)僕からは作るだけじゃなくて問題解決していこうみたいな話もしましたけれども、一方で何かを作り出す・生み出すということは本質的に楽しいことだなと思っています。快適に作るための環境を整えることに丸一日費やすとか、自分のエディタの設定とか、これだから開発しやすいみたいなことを考えながらものづくりを純粋に楽しむところも実際にあるんですね。いった気持ちってなかなか社会人になってしまうと忘れてしまったり、思い出せなかったりとかあると思います。今だと、エンジニアになろうみたいなフェーズだといくらでも失敗できるので、何度も作ったり壊したりしながら、ぜひものづくりの楽しみというところを大切にエンジニアを目指していただければなと思いました。(村田)堀井さん、大場さん今日はどうもありがとうございました。イベントレポートは以上です。TechAcademyではこれからもプログラミング学習者のためのイベントを開催していきます。・目標への学習プランがわからず、迷子になりそうイベントレポートできる人に聞くことが大切!ユーザー数100万人のサービスを運営する起業家が語ったプログラミング習得のポイントとは【イベントレポート】TechAcademyでは、2015年5月に「テックアカデミーキャンプ」として1ヶ月間でプログラミングを習得するコースを開催しました。このコースの初日に行った特別対談の様子をまとめたレポート記事です。この対談では、株式会社Lang-8の代表取締役である喜洋洋氏をゲストとしてお迎えし、TechAcademyを運営するキラメックス株式会社の村田がモデレーターをつとめました。exchangeを行う。帰国後、お互いに母語を教えあう語学学習サービスLang-8の制作を始め、大学卒業と共に起業。現在200国以上にユーザーを誇る。その後2年間かけて独学でプログラミングを学び、現在はサーバー管理、開発も行う。2006年4月、楽天株式会社に入社。開発本部にてポータル事業のシステム構築・運用を担当。その後システムの調達、交渉、契約などシステムインテグレーションに従事。2008年4月、楽天株式会社を退社。2009年2月、キラメックス株式会社を設立し、代表取締役社長に就任。対談の前に、喜氏のからプログラミングの勉強を始めた経緯をお話しいただきました。本記事では、喜氏が話した言葉をそのまま記事にしています。起業した当初から運営してした、Lang-8(ランゲート)では、開発を担当していた共同創業者が半年ほどで会社を去ってしまいました。当時でもユーザー数は10万人を越えるほどいて、課金ユーザーもいたのにも関わらず急に1人だけになってしまったわけです。プログラマーと円滑なコミュニケーションが取れるのではないかと考え、プログラミングの勉強を始めてみました。あとは、自分がプログラミングをできれば、生きていけるだけの利益を出してサイトを運営していくことは可能という結論に至りましたね。サーバーへのログイン方法やバックアップの取り方などから学び始めました。全て学ぶ必要があたので、複数の本で多角的に勉強しました。他にやったこととしては、知人の会社で無償インターンをしたことがあります。インターンとして働くことで、複数人での開発方法などが学べました。WordPressなど、オープンソースの自分の興味のあるコードを読むコードリーディングの理解につながりましたね。その後人も増えて、現在運営しているHiNativeとLang-8は、僕とデザイナー、エンジニアの3人で運営しています。今はプログラミングの仕組みが理解できているので、エンジニアと円滑なコミュニケーションが取れるようになっています。これからプログラミングを勉強するみなさんへのおすすめは、達成目標を決めて勉強することです。Webサービスを作るために勉強しないといけないことは沢山ありますが、目標を決めるとやることが明確になります。僕の場合は、サーバーをなんとか管理できるようになった頃に、バグを起こしても動いてるコードを読んで修正できることを目標にしました。ゼロから作るほど難しくなかったので、当時の自分には良い訓練になりました。これを繰り返していくうちに、簡単な機能追加も徐々にできるようになりましたね。入門と謳っていても、実際に読んでみるとそうではないものがたくさんあります。環境があれば身近な人に聞くという手段もあるので、つまずいても諦めないでください。ここからは、モデレーターの村田が会場から質問を募集する形で対談しています。(村田)ちょうど、僕の地元の京都にLang-8のオフィスがあったので遊びに行ったことを覚えています。(喜)サーバーが落ちるのが怖くて、3時間以上寝れない日が続いてました。(喜)最初は「いざとなったら頼る人リスト」みたいのを作ってましたね。勉強するので毎回聞くのは申し訳ないんですけど、本当にサーバーが止まってどうしようもなくなったら、教えてもらってました。あとは、やっぱりググったりとか本を読んだりとかですね。(喜)一番は人に聞くことで、その時いた優秀なエンジニアのアルバイトに、時給よりもかなり高いお金を払って1ヶ月くらい家庭教師してもらったこともあります。プログラミングって最初は概念の理解が難しくて、それを独学でやると余計な時間がかかると今になって思うので、概念やよく使うツール、ちょっとした書き方はできる人から学ぶのが一番効率がいいですね。(喜)週1〜2回でRailsを学んで、わからないコードがあれば一行ずつ細かく教えてもらってました。(村田)それで理解できるようになったんですね。(喜)まずは、採用時にちゃんと判断できるようになりましたね。あとは、エンジニアの方に仕事をお願いするときも、以前はビジネスの優先順位しかわからなくて、技術的な難易度はわかりませんでした。今は、ビジネスにおける優先順位と技術的な難易度を比較できるよになりました。エンジニアと関わるときも役立つということですね。サービスに目を向けると、もともと運営したいたのはWebサービスで、それとは別にスマホアプリのサービスを始めていると思います。(喜)最初はRailsから入って、今はスマホアプリのこともわかるようになりました。難しいのがプログラミング概念の理解で、それが一つ言語やフレームワークで理解していれば、あとは差分だけ理解すればいいのでだいぶやりやすいです。(村田)ここからは会場からの質問について聞いていきたいと思います。(村田)喜さんは先ほどお話されていたので、僕から回答しますね。僕も喜さんと同じように、手段としてプログラミングをやっているタイプです。プログラムを書きたいためにエンジニアをしているというわけではないです。サービスを作ってリースするための手段としてプログラミングの勉強を始めました。学生時代は、HTMLとCSSを使って簡単なホームページを作りました。それに付随して、ユーザーのためになる情報を掲載誌て、SEOを勉強して、アクセス数を増やして広告で稼ぐみたいなことをやっていました。価値のあるサービスを作りたいと思いましたが、その時の技量では足りないのでプログラミング能力が必要だと思ったのがきっかけです。起業した当初は一人で会社を始めたので、自分でやるしかないと思っていました。その点は喜さんと似てますね。(喜)まずプログラミングの概念を理解することに苦労しましたね。メソッドを実行するための入力とかです。基礎中の基礎だったために、どの本にも載っておらず、基礎を理解するための本を見つけるのが大変でした。(村田)そもそも、知りたいことが載っている本を見つけるのに苦労した、と。いう基礎って、教えてくれる人がいたら1分で解決するのに、まわりにそういった人がいなかったので概念を理解するにも時間がかかりましたね。基礎中の基礎を知る、という初歩的なところでつまずいていました。僕も、喜さんが仰っていたように概念の理解が難しかったです。僕の場合は当時楽天の開発部門にいたので会社の同期をカフェなどに呼び出して、聞きたいことを全部聞くみたいなことをやってましたね。概念理解って、どこをどう調べたらいいか、ということ自体が分からないんですよ。概念なので言葉にしにくいですし。人と対面してると、感覚的に伝えられることもあるんですけどね。最初はそういった概念理解につまずいていました。自分で書き出してみると、汚いとか見にくいとかってわかるじゃないですか。その時に、どういった書き方がベストか聞いてました。あとは最近だとGithubとかで見れるので、いいサービスや有名なサービスのコードを見て学んでいます。最短なのは、自分の書いたものをコードレビューしてもらうことだと思います。それができない環境の場合は、オンラインに落ちているオープンソースを見ます。あとは自分で書き続けているうちに、同じこと繰り返してるとか見にくいなとか感じるので、似たようなコードを参考にして書き方を学びますね。喜さんは先ほど仰っていた通りなので、僕の場合についてお話させていただきます。プログラミングを学んでおいて良かったと今になって思うのは、なにかサービスを作りたい、事業にしたい、という時にミニマムスタートが出来ることです。人を雇うとお金もリスクも発生しますが、一人で完結できると、まずやってみようと思えます。成功するかしないかわからないので、とりあえず「やってみる」ことがとても重要なんですよね。自分でプログラミングができると、形にするまでの敷居が下がるので、トライしやいです。それに、エンジニアや開発に携わる人の気持ちがわかるので、話がしやすくなります。エンジニアが言われたら嫌なことがわかるので、円滑なコミュニケーションにつながることも、プログラミングを学ぶ利点だと思います。どちらかというと、デザインから始めました。高校生のときに、バンドのフライヤーを作るためにIllustratorなどを勉強していました。ホームページも作りたかったので、HTML/CSSも同時に勉強していました。最近では、Webデザインは簡易化されてBootstrapなどもあるので、プログラミングさえ勉強すればある程度のクオリティーは担保されると思います。テキストでやり取りすることが多いので、エンジニアに限らず口調に気をつけてますね。テキストだけだと話し手のトーンが伝わらないので、相手に攻撃的な印象を与えてしまう可能性があります。出来るだけ顔文字を使ったりしています。あと、進捗確認の時、追加機能やバグ修正について聞きがちですが、将来的な事を考えて勉強に時間を割いたので進捗なし、という場合は許容しています。コードを見やすくするためのリファクタリングなど、目に見えないことも評価しています。手が動いてなくても、進捗がゼロでも特に咎めません。認めてあげるんですね。僕の場合だと、エンジニアと共に開発していく上で、出来ないこと・難しいことに直面したときは、一緒に考えるスタンスをとるようにしています。ケース・バイ・ケース、ですね。要は難易度が変わる話だと考えています。営業が重要な事業内容なら、社長に営業力があってお金が回っていれば、技術面は人を雇って賄えますよね。プログラミングスキルが無くとも問題ありません。先ほど村田さんが言っていた、スモールスタートが可能というのは重要だと思います。プログラミングができると、自分でぱっと作って、試行錯誤し、サービスの良さをプログラマに伝えて、どんどん改良していくことも可能です。起業したら、一番情熱を持っているのは、基本的に社長である自分です。空いた時間に自分が何かできると、情熱が会社の前進に直結する。そこでエンジニア一人分の仕事が出来れば、人件費を浮かせる事ができ、より潰れにくい会社にすることができる、ということもあります。なにか作れたらベストですが、プログラミングを理解して、エンジニアと円滑なコミュニケーションを取れる状態にしておくだけでもいいと思います。プログラミングは、自分の考えてるアイデアや考えてることを形にするツールだと思っています。その考えているもの次第で、必要な力量も変わってくると思います。Webに商品を載せるのであれば、HTML/CSSとデザインのみで綺麗に見せることはできます。アイデアを形にできるというツールを武器にすると、起業以外のこともできていいのかなとは思います。補足すると、外注では、ボタンを少しずらすだけでも見積もりが大変ですし、社内にエンジニアがいたとしても、細かい変更をいちいち頼まなければなりません。自分でパッと出来てしまうと、人に説明する必要がなく、手間も時間も省けます。スタートアップの場合は、早く試して早く結果を見ることが重要なので、ちょっとした変更に手間取ると、成功率が下がってしまいますしね。やろうと思えば全然いけます。食べていけるかいけないかと言われれば、食べていけますね。プログラマーは世界的に不足しています。職があるのに働き手がいないので、アメリカでは2020年までに100万人不足すると言われているほどで。その点、プログラマーに限らず、IT技術者は今後求人が増えていくと思うので、食べていけるでしょう。僕の意見としては、今後のプログラマーの需要は無くならないと思います。プログラムやソースコードを全部書くのではなく、単純化されたものを組み合わせるようになるのでは、と予想しています。それでもクリエイティブなことをする人の需要は増え続けるのではないかと思いますね。需要に関しては逸話があって、中国は物価が日本よりまだまだ安く、大学新卒の給料が2万〜6万なんですね。以前中国人フリーランスの方に、リモートでプログラミングの仕事を依頼していたところ、時給は4000円だと言われました。当時は日本人のエンジニアにもそこまでは出せてなかったので、うわ高え!と。理由を聞いたら、もっと割のいい仕事をもらっているから、とのことでした。日本も中国もアメリカもエンジニア不足、かつプログラミング言語は世界共通なので、プログラマは国や言語をを問わず仕事ができることを思い知りました。今は時給を上げていますが、起業した最初の頃に900円でアルバイトしていた人は、現在はアメリカから仕事をリモートで受けていて、時給7000円くらいもらっているそうです。ニーズは本当に無くならないと思います。Railsの求人が激しいかなと思います。僕のまわりのスタートアップ企業などでもよく聞きます。あとは大きな企業だと、PHPやJavaも人気がありますね。他にiPhoneアプリやAndroidアプリの開発も需要があると思います。僕らが知り得ない言語市場があるでしょうし、まだまだ出続けて無くならないので、需要がないということではないですね。今話したのは、Webやスタートアップ系の、オンラインサービスを作ったり個人で仕事をしたりするときの言語のことです。一方で、みずほ銀行のシステムエンジニアは、2020年には2万人不足するとニュースで流れていました。要は、基幹系のシステムを刷新するときにエンジニアがいないというような状況ですので、そのような視点もあったほうがいいと思います。僕もWebサービスを作りたいと思っているのですが、PHPとRubyのどちらがいいか分かりません。作るものによって違う、と仰っていましたが、色んなプログラマーに聞いているものの、2者の違いや良さ、これからの展望がいまいち分かりません。独断と偏見で言うと、今から勉強するならRubyがいいと思います。Railsというフレームワークが洗練されていて、Webサービスの開発に適していますし、Railsの求人の方が多く、盛り上がっている気がします。PHPのメリットもありますけどね。PHPは割りと規約がゆるいので、ある程度書いたら動くので取っ付き易い。これはいい面悪い面あるのですが。僕はもともとPHPから勉強を始めました。Railsというフレームワークが既にあるので、フレームに乗ればすぐにできるので楽ではあります。フレームワークを使うには、そもそもどうしたらプログラムを作れるか、を理解していないと難しいこともあります。今は、僕が始めた2008年頃に比べたらどちらのドキュメントも増えているので、PHP・Rubyのどちらでもいいと思います。補足すると、僕はPHP触ったことないのでRuby推しです。ちなみに、PHPのフレームワークでCakePHPというのがありますが、これはRailsを真似て作られたもので、構成がRailsと近いです。Web業界も営業中心だけど技術志向の高い会社だと、エンジニアの重要性もわかっているので給料も上がっています。日本でも外資系は特に高額ですし。アメリカのエンジニアが高給なのは、他にも理由があります。西海岸だと、ワンルーム20〜30万円かかることもあって生活コストが高いので給料もそれにともなって高額になる傾向があります。単純な比較は出来ないですけどね。あと、優秀な人は特に高給ですね。普通の人の二倍以上の仕事をしてくれるので、並の人の倍払っても雇う価値があるので。弊社も、エンジニアの給料は固定観念に縛られず、積極的に上げていっています。今後は日本でもエンジニア採用の競争激化が予想されるので、給料も順次上がっていくのではないかと思います。補足として、一概には言えないものの、アメリカでエンジニアが高給なのは、雇用体系の違いが挙げられます。能力が低ければすぐクビになりますし、保険がないので自分でやりくりしなければいけません。副業は余裕でできると思います。現代ほど美味しい時代はないですね。先に触れた弊社の元アルバイトも、ある程度経験を積んで、アメリカから時給7000円で受注していますし。自社でも、フリーランスのエンジニアに外注する場合はある程度優秀だと結構な額払ってるので余裕だと思います。僕も学生時代からプログラミングをやっていましたが、副業ではないものの、片手間のバイト感覚である程度は稼いでいました。15年程前からは、プログラミングが出来なくても、Webで何か形に出来ればお金が稼げる時代になったと感じています。最近では、クラウドソーシング、つまりオンラインでできる仕事が増えているので、活用のしがいがあるとも思いますね。対学習量では、英語などの語学よりプログラミングの方が換金性が高い思います。習い事としては一番いいのではないでしょうか。ーープログラマーとして副業で稼ぐに当たり、レベルによって給料が変わってくると仰っていました。具体的にはどういったところで判断しているのでしょうか。弊社では、経験があったり、ある程度できるようなら、一旦時給を固定し、一度仕事をしてみてもらいます。1、2個機能を追加してもらって、その作業スピードと質を見て判断します。あとはプログラマ自身の交渉力にもかかっていて、実力以上に見せることも可能です。ブログ等で本人の知名度が高められていると、給料が上がりやすいかもしれません。ブログで有益な情報を発信していたりとか。難しい内容じゃなくても、この人の名前良く見るな、という感覚を相手に持たせることが大事ですね。どれか一つがあればいいと思います。僕の当時の働き方は、半月は自社のサービス開発に時間を割き、残り半月は自分の食べる分だけを稼ぐ仕事をする、という動きをしていました。受託はやり過ぎると忙しくなってしまうので、仕事量は月に1つほどでした。受注数を決めていたわけではありません。どこまでの知識が必要なのでしょうか?プログラミングはもちろんだと思うのですが、サーバー等も含め、すべて一人で出来ないと、個人での立ち上げは厳しいのでしょうか。わかっているに越したことはありませんが、最近ではわからなくてもできるようになっています。Railsさえわかっていれば、サーバーのことを知らなくても、サービスを公開することが出来ます。アプリケーション側に専念できるようになってきていて、Bootstrapというものを使うと、デザインが出来なくともそれっぽい見た目のものを作る事ができます。形にすることだけ覚えれば、何かを表に出すということはできますよ。僕のおすすめは、何か作ってみてお金を得ることです。お金を稼ぐことはいいモチベーション維持につながると思います。お金をもらって嬉しくない人はいないと思います。学生時代、作ったサイトをたくさんのユーザーに見てもらえたのは嬉しかったし、またそれがビジネスになる、ということにすごく感動しました。自分みたいな平凡な学生でも、京都にいてパソコン1台で月に数万円稼げてしまう。自分の勉強したことが社会に繋がるんだ、ということは大きなモチベーションでした。趣味でもいいですけど、月1万円を稼いでみようという目標を立ててみてはいかがでしょうか。1万円稼ぐためには人に見てもらわなければならないですし、そのためには何が必要かを考え始めると、やるべきことも見えてきて、目標が立てやすくなると思います。これで対談は以上です。プログラミングを独学していて、このように感じた経験はないでしょうか?イベントレポートWordPressの使い方!初心者でもサイト作成が簡単に|現役エンジニアが解説WordPressを使用するとデザインの変更や機能のカスタマイズ、データの管理を手軽に行える多機能なブログサービスを作成することができます。実際、このTechAcademyマガジンもWordPressを使って作られたサイトです。他にも企業のコーポレートサイトやブログサイトなどの多くはWordPressを使われているのです。サイト作成に便利なプラットフォームなので、ぜひ使えるように理解していきましょう。そもそもWordPressとは何なのかよく分からない方は、今さら聞けない!WordPressとは【初心者向け】をご覧ください。本記事は、TechAcademyのオンラインブートキャンプ、WordPress講座の内容をもとに紹介しています。WordPressを使うにはインストールや初期設定が必要なんだ。なんだか難しそうですね・・・。手順に従えば簡単にできるよ。インストールさえしてしまえば、簡単に記事の作成とかサイトデザインとかもできるから。それじゃあ教えてあげるね。以下の条件があります。独自ドメイン、レンタルサーバーについては別途記事内で比較しています。合わせてご覧ください。WordPressの公式サイトのダウンロードページにアクセスしましょう。以下のボタンをクリックしてWordPress本体をダウンロードします。ダウンロードし、解凍した「wordpress」という名前のフォルダを任意の半角英数字の名前に変更します。ここではwpとしています。FTPクライアントを使用してサーバーに本体をアップロードします。今回はFileZillaを使用します。サーバーに接続し、WordPressを設置したい場所にフォルダごとアップロードします。アップロードしたフォルダのある場所にアクセスします。※例えばhttp://xxxx.ne.jp/に「wp」と名前変更したWordPressフォルダをアップロードした場合、アクセスする場所はhttp://xxxx.ne.jp/wpとなります。これがそのサイトのアドレスになります。データベースの設定を行います。「さあ、始めましょう!」のボタンをクリックします。データベース名・ユーザー名・パスワード・データベースのホスト名を入力し、「送信」ボタンをクリックします。これらは使用しているレンタルサーバーにより設定が異なります。以下は、レンタルサーバーのスターサーバーでの例です。パスワードはこのデータベースで設定したものを入力します。データベースの文字コードは「UTF-8」にしておきます。「インストールを実行」をクリックします。ここではWordPressサイトの基本的な設定を行います。これらの項目は全て後でいつでも変更できます。「検索エンジンがサイトをインデックスしないようにする」にチェックを入れるとサイトが検索エンジンに表示されない状態にしておくことができます。テスト導入時などにチェックします。入力後「WordPressをインストール」をクリックします。インストール完了のメッセージと、ログイン用のユーザー名とパスワードに関する情報が表示されます。続いてログイン画面が表示されます。設定したユーザー名とパスワードを入力し「ログイン」をクリックします。ログインするとWordPressの管理画面が表示されます。記事の投稿やサイトデザインの変更、プラグインの追加や各種設定はこの画面から行います。左メニューの「外観」から「カスタマイズ」を選択します。「サイト基本情報」を選択します。サイトのタイトルとキャッチフレーズはここからいつでも変更できます。管理画面からログアウトする場合は上メニューのユーザー名から「ログアウト」を選択します。管理画面にログインするときはサイト上の「ログイン」(テーマにより表示されないものもあります)か、WordPressフォルダ内にあるwp-login.phpにアクセスすることでログイン画面に移行することができます。※例えばhttp://xxxx.ne.jp/wpというサイトの場合はhttp://xxxx.ne.jp/wp/wp-login.phpがログイン画面へのアクセスになります。「スクールは高いから独学で成功する」という気持ちの方は多いと思います。その方が金額は低く抑えられるでしょう。独学には向き不向きがあり、実はスクールが向いている人も大勢います。条件を満たすことで支払った受講料の最大70%(最大306,460円)が給付金として支給されます。ページ内の注意事項をご確認ください。