ハイテクフリーランサーの雑ブログ

IT関係・残したいことなどを雑に投稿

MENU

Web系の開発をするためのお勧め言語

Web系の開発をするためのお勧め言語

Web系の開発をするためのお勧め言語

 はじめに

私が最初にプログラマーを目指したのはWEBサービスを作りたくなったのが始まりで、

独学でプログラミングの勉強を始めました。

その時に学んだのがC言語だったのですが、CでWEBサービスを作る事はそもそも困難です。

これに気づいたのは学習を始めて2ヶ月くらい経ってからのことで、完全に無駄ではなかったのですが、やる気が削がれました。

今回はWeb系、アプリ系(iOS,Android)に絞ってどのような言語を使われているのか、どのような特徴があるのかを説明していきます。

WEB系

WEBサイトを作るには大前提として以下の言語が必要です。

主にWEBサイトの見た目の部分を作る言語たちになります。

それぞれの言語はprogateやドットインストールでも学べます。

言語名:  HTML(HyperText Markup Language)

用途 : レイアウトの枠組みを組む

言語名:  CSS(Cascading Style Sheets)

用途 : レイアウトの枠組みに色や形などのスタイルを組み込む

言語名:  JavaScript

用途 : 作ったページに対して、アニメーションなどの動的な変化を組み込む

これらの言語はクライアント側(見る側)で時刻する言語になっており、実際にWEBサーバから、

htmlファイルやjavascriptファイルを各ブラウザに渡して、ブラウザの機能でこれらの言語を動かすことになります。

サーバサイド側から実行するWEBサーバ側の言語というものもあります。

サーバサイド側の言語の役割としては、色々ありますが、主にDBへのアクセスやユーザに動的にデータを返すことが挙げられます。

動的とはどういうことかというと、https://example.com/mypageというURLがあった時に、マイページの内容はログインしたユーザによって変わります。

これはサーバ側でユーザに合わせてデータを取得してきているからです。

次に紹介する言語は動的な部分を担う言語になります。

PHPで手軽にWeb開発

まずはPHP(ピーエイチピー)をご紹介します。

PHPはサーバサイド言語でDB(データベース)へのアクセスやHTMLを動的に作成するのに優れています。

例えば以下のように時間によってHTMLの内容を変えることができます。

ユーザは時間によって、異なる表示が見られるようになります。

<?php
$time = intval(date('H'));
if (4 <= $time && $time <= 12) {  ?>
  <p>おはよう。</p>
<?php } elseif (12 <= $time && $time <= 20) { ?>
  <p>こんにちわ。</p>
<?php } else {  ?>
  <p>こんばんわ。</p>
<?php } ?>
PHPのメリット

1 導入の手軽さ

PHPはxamppやmamppというツールを使えば簡単に実行環境を作ることができます。

2 言語の難易度

また言語的にも型などの制約が少なく記述の自由度が高いです

また学習難易度も他の言語と比べて圧倒的に簡単です。

PHP 入門などと調べれば、情報量も多くわかりやすいサイトもたくさん見つかります。

3 フレームワークが豊富

codeigniterやlaravelなど1から全ての機能を作らなくてもDBからのデータ取得、保存、更新、ページングの実装など全ての機能が一つになったフレームワークが豊富です。

言語的に柔軟でもフレームワークを使うことで書き方を統一することができるので案件や作るものによって柔軟に対応できます

xampp 参考サイト https://xn--web-oi9du9bc8tgu2a.com/windows-xampp-install/

PHPのデメリット

1 型がないのでバグに気づきにくい

PHPには型がありません。文字列の変数にも数字は入れられるし、配列の中に、オブジェクトや数字、文字を混在させることが出来ます。

これによって数字が入ってると思って行った計算処理が文字に適用されてしまってバグになったなどの問題が起こる可能性があります。

プログラムを一人で書いていたら用途を覚えているのかもしれないですが、複数人のプロジェクトになると、そういった問題は起こる可能性があります。

2 実行速度が遅い

PHPは書いたその瞬間から実行できます。

しかしコンパイル型といわれる言語は書いたプログラムをコンピューターの読める形に変換しなければなりません。

PHPでは実行時にその解読がされているので

速度的に少し遅くなっています。

リアルタイムで複数処理を行わなければならないプログラムには不向きな言語になるかと思います。

一般的なWEBサイト(SNSなど)ではさほど問題になりません。

スタートアップ系の企業で働く Ruby(Ruby on Rails) でWeb開発

次はRubyという言語をご紹介します。

この言語はそれだけでWEBサイトを作ることは難しくRuby on Railsというフレームワークを使ってWEBサイトを作ることになります。

スタートアップ系の企業で使われる事が多く、rails wayとよばれる統一した書き方で、意志疎通が取りずらい環境でもフレームワークの固い規約により同じようなコードを書くことが可能です。

Ruby(Ruby on Rails)のメリット

1 自由な働き方に繋がりやすい

Railsを使っている企業はスタートアップ系企業が多いです。

業種にもよりますが、自宅勤務や時短勤務などが可能な会社も多く、自由な働き方を求めるならRailsを学ぶことはオススメです。

2 早く作れる

Railsはコマンドやライブラリ一つで、WEBでよく使用する機能(ログインやページング)などが導入できてしまいます。

作りたいサービスなどがあって、時間もない場合Railsがサービスリリースまで一番早く実現できてしまう可能性が高いです。

3 Rails wayで実装方針を統一

Railsを使用したプロジェクトは開発コードを統一的に書きやすいです。

自由すぎるコードでルールのない状態で複数人で開発すると、個々人が好きなように作るのでスパゲティコードと呼ばれるぐちゃぐちゃで読みにくいコードになってしまいがちです。

読みにくいコードはサービスを成長させる妨げになります。

Railsを使って成長しているサービスはたくさんあります。

このことからもRailsWEBサービスを作るフレームワークとして優秀なことがわかります。

参考サイト

skillhub.jp

Ruby(Ruby on Rails)のデメリット

1 実力がつきにくい

ログイン・認証の実装・ページングの実装・GETやPOSTの概念など

本質的な部分で理解しないとセキュリティ事故を起こしたり、新しい概念(新しいログイン方法の実装など)の理解ができなかったりなどという問題が起こります。

Railsはこれらの処理があまりにも簡単に実装できてしまいます。

他の言語の案件になると、途端にそれらができなくなってしまったりなどの危険性があります。

2 実行速度が遅い

PHP同様、実行速度が遅いです。

色々な処理が自動化されている分、PHPよりも遅くなっています。

しかし一般的なWEBサイトなら、速度的には問題なく大型のサービスでも導入されているのでそこまで心配することはありません。

3 型がないのでバグに気づきにくい

PHPと同様です。

手堅く JavaでWeb開発

Javaは基幹システム・Androidアプリ,WEBサイトなど幅広い分野で使われているコンパイル型の言語です。

Javaのメリット

1 型があるので堅く作れる

PHPRubyは型がありませんがJavaはあります。

バグ発生率はこれだけで大きく下がります。

大型案件で大人数で開発を行う場合、型があることのメリットは大きいです。

2 動作が速い

JavaPHPRubyと違いコンパイル型言語です。

一度、コンピュータに理解できる形にプログラムを変換するので実行速度が早くなります。

フレームワークによりますがjavaphpの実行速度は2倍以上差があると考えてよいと思われます。

3 その他のアプリ開発にも使える

JavaAndroid SDKを使ってAndroidアプリの開発やWindowsMacで動くGUIアプリの開発など幅広く使用できます。

Javaを学ぶだけであらゆるものが作れるようになるので、学習した後のコストパフォーマンスは高い言語だと思います。

Javaのデメリット

開発の時間がかかる

Javaコンパイル時間がかかるので、書いたらすぐに動くRubyPHPと比べて

書いたコードを実行するまでの時間がかかります。

上記の理由で開発時間がかかります。

*1

*1:フォトベンKoldeUnsplash

プログラミングを体験するのに適した無料サービス

f:id:yryuu:20190816091727p:plain

はじめに

プログラマーという職業に興味がある人やプログラミングに興味がある人向けに

プログラミングを体験できるサービスや動画コンテンツなどをご紹介していきます

WEBサービス

現在は講義を最初に読んでから問題を解いていきプログラミングを学んでいくという手法が流行っています。

プログラミングを始めるのに一番手っ取り早いのはWEBサービスになるかと思います。

1 圧倒的に手軽 progate(プロゲート)

まず現在一番プログラミングを簡単に体験できるサービスとしてprogateはあげられます。

こちらのサービスの特徴はとにかく簡単に始められる事です。

prog-8.com

こちらのサービスは無料で取り組むことができ(一部有料)、

簡単で分かりやすい講義の後、実際にブラウザ上でプログラミング言語を書いて動かすことができます。

まったくプログラミングというものがわからない人はまずこちらのHTML講座などをやってみてプログラミングを体験してみるとよいと思います。

2 学習支援から就職支援まで paiza ラーニング

paizaは学習支援や転職支援などITエンジニア向けの学習から就職まで一貫してサポートしているサービスになります。

学ぶこともできるし、web上でコードテストを行い、その結果を企業に提出することでエンジニアとしてスカウトしてもらうこともできる素晴らしいサービスになります。

私も何度かテストを行いスカウトをいただきました(実際に入社する事はありませんでした)が、学習してある程度のテスト結果を残せば未経験でも就職する事は可能かと思います。

paizaラーニングではHTMLやPHPなどのWEBサービスから、AWS機械学習などの最終技術まで幅広く学べます。

難易度は若干progateより高いように見えますが、十分に初めての方が始められるサービスになっていると思いますのでぜひお試しください。

paiza.jp

動画コンテンツ

Webサービスはわかりやすいですが、実際に開発環境を作らずにWEB上の簡易的な実行環境を使ってプログラムを動かすので、本当にプログラミングで何かを作るときに、つまづくこともあります。

動画コンテンツなら実際に開発環境を用意するところから開設されていることも多く、

そういったつまづきは少なくなるかと思います。

1 圧倒的なコンテンツ量 ドットインストール

私が新しい言語を始める時にまず調べるのはドットインストールに動画がないかどうかです。

ドットインストールの特徴は、1講義3分という短さで学べることです。

あと、とにかく早口なので何回も繰り返して聞くことになるかと思いますが、それが反復練習になって、知識を定着させます。

コンテンツ量も圧倒的に多く、何を学びたいのか何を作りたいのかによって学ぶコースなども決めることができるので、作りたいものや学びたいことの目標が定まっている人には最適な動画サービスかと思います。

https://dotinstall.com

2 ミクと学ぶC言語入門

私が最初に学んだ言語はC言語です。

その時に配列や構造体、関数などの概念がわからず挫折しましたが、ミクと学ぶC言語入門を見て理解しプログラマーの第一歩を歩むことができました。

とにかくわかりやすいのでぜひ参考にしてみてください。

www.nicovideo.jp

本で学ぶ

一番最初にプログラミングを学ぶ時に本で学ぶ事はお勧めしません。

なぜかというと難しい本が多すぎるからです。

今回ご紹介する本は圧倒的に簡単に書かれているものなので、ぜひ読んでいただきたい本になります。

1 絵本シリーズ プログラムの絵本

こちらは絵本シリーズといって、プログラミング言語や概念的なものをわかりやすく説明した本になっています。

40代、50代のベテランプログラマーの方なども、まずは言語を新しく始める時に絵本シリーズを読む事をお勧めしていることが多いです。

今回ご紹介している絵本はプログラムの概念的なところやどこで使われているかソフトウェアとはそもそも何なのかを分かりやすく説明しており、

プログラミングを始める方やプログラマー・IT関係の職業に興味を持っている方に最適な本になります。

ぜひ読んでみてください。損はしない本です。

*1

現役フリーランスエンジニアがWEB系のITエンジニアになるまでの道のり1 ITエンジニアと目指すきっかけとC言語の学習

ITエンジニアになるまでの道のり

自己紹介

初めまして、私は大学新卒からITエンジニアの職業につき、

現在はフリーランスのエンジニアとして月額百万円ほど稼いでいるフリーランスのITエンジニアです。

最近は ITエンジニアに転職しようとしている方やこれからITの勉強を始めようとしている人が増えているみたいなので、今回は私がITエンジニアになるまでに行なったことをご紹介しようかと思います。

ITエンジニアになったのが4年前なので、少し技術体系などが少し変わっていることもあるかもしれませんが、なるべく普遍的に役立ちそうなことを話していきます。

ITエンジニアを目指した安直な理由

まず私がなぜITエンジニアを目指したかというと、以下の三点になります。

  • サービスを立ち上げたら儲かりそう
  • プログラマのかっこいいイメージ
  • パソコン操作がなぜかうまかった

といったものすごく安直な考えですが、高校1年の時にmixiというSNSサービスを利用してから上記の3点のイメージが強くなりITエンジニア(プログラマ)を目指すようになりました。

mixiについて

当時のmixiの勢いはすごく、共通の趣味の仲間がSNS上で集まれたり、卒業した中学のメンバーなどが集まって同窓会の計画なども立ててました。

今はLINEやfacebookなど、もっと便利なものがありますが、当時はものすごい数の人たちが一つのサービスで動いているmixiというサービスに夢があると思いました。

ワープロ検定について

また高校1年の情報の授業でワープロ検定を受けられる授業があり、適当に取り組んでいましたが、ワープロ検定1級に合格できるまでタイピングやワードでの文章作成ができるようになり10分間で1000文字程度のタイピングができるようになりました。

これによりパソコンが苦手だという意識がなくなり、ITエンジニアを目指すという思いが強くなったと思います。

余談ですがタイピングが早いと、プログラミングも上達します。

なぜかというと、より早い時間で何回もプログラムを間違えられるからです。

天才とは、1%のひらめきと99%の努力である。

Thomas Edison (トーマス・エジソン

エジソンも言ってますが努力の99%を達成するためには、何回も間違えられるようにタイピング速度の向上は長期的にみたら効果が高いのです。

以下のe-typingというサイトの腕試しレベルチェックで正しいタイピングの方法で10分間で800文字くらいの入力速度を目指してみると良いかもしません。 

www.e-typing.ne.jp

まずはC言語を学び始める

いよいよITエンジニアを目指すことになった高校1年ですが、

その時は何をやれば分からなかったので、インターネットで

"プログラミング 入門"などと検索をして調べました。

ググる癖がなぜかついていたので、とにかく分からないことはまずググります。

その時にみたサイトはとにかくC言語を学習するというサイトばかりでした。

なので私も●でもわかるC言語みたいなサイトで勉強することにしました。

※ この時はC言語を学び始めましたが、今なら間違いなくC言語から学び始めることはお勧めしません。もっと簡単にプログラミングに触れられる言語、PHPRuby,JAVAなどの言語をお勧めします。

C言語で挫折

 ●でもわかるC言語をやってみたところ

C言語を動かすところ(Hello world)までは見よう見真似で取り組めましたが、

そもそも意味がわからないし、その後の配列、ポインタ、構造体などの理解はできずに挫折しました。

何回読んでも意味がわからなかったのです。

自分の脳は●以下なのか、プログラミングは向いていないのかなど、少しは考えましたが、もっとわかりやすい情報があるはずだと考え学習方法を再度探しました。

学び方を変えて成功 動画学習 ミクと学ぶC言語

文字ベースの教材はどうしてもイメージしずらく、視覚的に学ぶことが必要だろうということで、ニコニコ動画のミクと学ぶC言語という動画を参考に勉強することにしました。

これがものすごくわかりやすく説明されており、プログラミングを単なるコピーではなく、概念やコンピュータの仕組みなどをざっくり理解することができました。

学習範囲も後から通うことになる国立の情報系の大学の1年間ぐらいの学習内容とほぼ同等で、かなり高校1年の段階で基礎部分が気づけました。

ミクと学ぶC言語のリンクは以下に貼っておきます。

www.nicovideo.jp

C言語ではWEBサービスが作れないことがわかってしまう

C言語の基本をあらかた学ぶとではSNSサービスはどうやって作るのか

を調べてみました。

"C言語 WEBサイト"などでググってもWEBサービスC言語で作ることは難しいことがわかってしまいました。

そこで、せっかく学んだC言語WEBサービスが作れないことで少しやる気を失いましたが、そこから3ヶ月くらいプログラミングをやめてサボりました。

その後、熱が再燃し掲示板などのWEBサイトはPHPという言語を使われて作られることが多いとわかり、PHPを学習することにしました。

最後に

今回は高校1年からITのエンジニアを目指したところから

そこから1年くらいまでに無計画でC言語を学んだところまでを記載させていただきました。

今でもミクのC言語e-typingなどのタイピング練習はかなり有用だと思います。

今でも計画性というものがないと言われますが、

ITエンジニアとして仕事をするにも、何かしらの経験がないと雇ってもらえないだろうという事は考えておりました。

当時のその漠然とした認識は間違っておりませんでした。

実際に今の技術職は未経験で雇ってもらえるところは、ほとんどありませんし、少しの経験さでも採用に繋がったりなどはざらにあります。

なので高校の時から少しずつ学習してよかったと思っています。

次はPHPの学習から情報系の大学に行くまでの話をさせていただきます。

今後、有益な情報や面白い情報をどんどん発信していきますので、ぜひブックマークなどをしていただけらたと思います。