MENU

Webプログラミングに必要な7つの知識とおすすめのプログラミング言語を徹底解説!

Webプログラミング

Webプログラミングとは、Webで使われるアプリケーションやサービスの開発を行うことです。Webプログラミングをするためには、いくつかの知識やスキルが必要になります。この記事では、Webプログラミングに必要な7つの知識と、おすすめのプログラミング言語を紹介します。

目次

Webプログラミングに必要な7つの知識

Webプログラミングには次の7つの知識が必要になります。

  • Webの仕組み
  • HTML/CSS
  • プログラミング言語
  • UNIXコマンド
  • データベース
  • フレームワーク
  • セキュリティ

それぞれについて詳しく見ていきましょう。

Webの仕組み

Webの仕組みとは、Webで情報がやりとりされる仕組みのことです。Webの仕組みを理解することで、Webプログラミングの基本を把握できます。

Webの仕組みは、クライアントとサーバーのやりとりによって成り立っています。クライアントとは、ユーザーが使うデバイスやブラウザのことで、サービスを受ける側です。サーバーとは、Webページやデータを保存するコンピュータのことで、サービスを提供する側です。

クライアントとサーバーのやりとりは、HTTPというプロトコルに従って行われます。HTTPとは、HyperText Transfer Protocolの略で、Webで文書や画像などのデータを転送するためのルールです。

クライアントがWebページを見たいときには、サーバーに対してリクエストを送ります。リクエストとは、サーバーに対する要求のことです。リクエストには、URLやメソッド、ヘッダー、ボディなどの情報が含まれます。

サーバーは、受け取ったリクエストを処理して、クライアントにレスポンスを返します。レスポンスとは、サーバーからの応答のことです。レスポンスには、ステータスコードやヘッダー、ボディなどの情報が含まれます。

クライアントは、レスポンスを受け取って、Webページを表示します。Webページは、HTMLやCSS、JavaScriptなどの言語で書かれた文書です。HTMLは、Webページの構造を表す言語です。CSSは、Webページの見た目を整える言語です。JavaScriptは、Webページに動きをつける言語です。

HTML/CSS

HTMLとCSSは、Webページを構成する代表的な言語です。Webプログラミングをするなら、2つの言語の習得は必須と言えます。

HTMLは、HyperText Markup Languageの略で、文章を構造化するためのマークアップ言語です。マークアップ言語とは、コンピュータが認識できるようにタグや目印をつけて構造化を行う言語を意味します。

HTMLでは、タグと呼ばれる記号を使って、Webページの要素を表現します。たとえば、<h1>タグは見出しを、<p>タグは段落を、<a>タグはリンクを表します。タグは、開始タグと終了タグで囲まれた部分に適用されます。たとえば、<h1>Webプログラミング</h1>と書くと、Webプログラミングという見出しが作られます。

CSSは、Cascading Style Sheetsの略で、Webページの要素の色や大きさ、位置を変えたり、見た目を整える言語です。ユーザーが見やすいWebページを作るために大切な役割を持っています。

CSSでは、セレクタと呼ばれる記号を使って、Webページの要素を指定します。たとえば、h1セレクタは見出しを、pセレクタは段落を、aセレクタはリンクを指定します。セレクタには、タグ名だけでなく、クラス名やID名なども使えます。セレクタに対して、プロパティと呼ばれるスタイルの設定を行います。たとえば、colorプロパティは文字色を、font-sizeプロパティは文字サイズを、marginプロパティは余白を設定します。プロパティは、セレクタと波括弧で囲まれた部分に記述します。たとえば、h1 { color: red; font-size: 24px; }と書くと、見出しの文字色を赤に、文字サイズを24ピクセルに設定します。

プログラミング言語

HTMLやCSSのほかにも、いくつかのプログラミング言語の知識は必要です。プログラミング言語とは、コンピュータに命令を与えるための言語です。プログラミング言語には、様々な種類がありますが、Webプログラミングには主に次の2種類の言語が使われます。

  • クライアントサイド言語
  • サーバーサイド言語

クライアントサイド言語とは、クライアント側で実行される言語のことです。クライアントサイド言語では、Webページに動きをつけたり、ユーザーとのインタラクションを行ったりできます。代表的なクライアントサイド言語は、JavaScriptです。JavaScriptは、Webブラウザで動作するプログラミング言語です。JavaScriptでは、Webページの要素を操作したり、イベントを処理したり、Ajaxという技術を使ってサーバーと非同期通信を行ったりできます。JavaScriptには、jQueryやReactなどのライブラリやフレームワークも多数あります。ライブラリやフレームワークとは、よく使う機能をまとめたもので、プログラミングの効率や品質を向上させることができます。

サーバーサイド言語とは、サーバー側で実行される言語のことです。サーバーサイド言語では、データベースの操作やビジネスロジックの処理などを行います。代表的なサーバーサイド言語は、PHPやRubyやPythonなどです。PHPは、Web開発に特化したプログラミング言語です。PHPでは、HTMLの中にプログラムを埋め込んで、動的なWebページを作ることができます。PHPには、WordPressやLaravelなどの有名なCMSやフレームワークもあります。CMSとは、Content Management Systemの略で、Webサイトのコンテンツを管理するためのシステムです。フレームワークとは、Webアプリケーションの開発に必要な機能や構造を提供するものです。

Rubyは、オブジェクト指向のプログラミング言語です。オブジェクト指向とは、プログラムをオブジェクトという単位に分けて、それぞれに属性や振る舞いを持たせるという考え方です。Rubyでは、シンプルで自然な文法を使って、高度なプログラムを書くことができます。Rubyには、Ruby on Railsという人気の高いフレームワークがあります。Ruby on Railsでは、MVCという設計パターンを採用しています。MVCとは、Model-View-Controllerの略で、プログラムをデータの処理、画面の表示、ユーザーの入力の3つの部分に分けるという設計パターンです。

Pythonは、汎用性の高いプログラミング言語です。汎用性とは、様々な分野や目的に使えるということです。Pythonでは、簡潔で読みやすい文法を使って、効率的にプログラムを書くことができます。Pythonには、DjangoやFlaskなどの優れたフレームワークがあります。Djangoは、高機能で安全なWebアプリケーションを素早く開発できるフレームワークです。Flaskは、シンプルで軽量なフレームワークで、自由度の高い開発ができます。

UNIXコマンド

UNIXコマンドとは、UNIXというオペレーティングシステムで使われるコマンドのことです。オペレーティングシステムとは、コンピュータの基本的な動作を管理するソフトウェアのことです。UNIXは、1970年代に開発されたオペレーティングシステムで、現在ではLinuxやMac OSなどの派生版が広く使われています。UNIXコマンドでは、テキストベースのインターフェイスで、ファイルの操作やプロセスの管理などを行うことができます。テキストベースのインターフェイスとは、キーボードでコマンドを入力して、画面に結果が表示されるというインターフェイスのことです。

UNIXコマンドには、様々な種類がありますが、Webプログラミングには主に次のようなコマンドが使われます。

  • lsコマンド: ファイルやディレクトリの一覧を表示するコマンドです。ディレクトリとは、ファイルをまとめるためのフォルダのことです。
  • cdコマンド: ディレクトリを移動するコマンドです。たとえば、cd Desktopと入力すると、デスクトップに移動します。
  • pwdコマンド: 現在のディレクトリの場所を表示するコマンドです。たとえば、/home/user/Desktopと表示されると、ホームディレクトリの中のユーザーディレクトリの中のデスクトップにいることがわかります。
  • mkdirコマンド: 新しいディレクトリを作成するコマンドです。たとえば、mkdir webと入力すると、webという名前のディレクトリが作られます。
  • cpコマンド: ファイルやディレクトリをコピーするコマンドです。たとえば、cp index.html webと入力すると、index.htmlというファイルをwebというディレクトリにコピーします。
  • mvコマンド: ファイルやディレクトリを移動するコマンドです。たとえば、mv index.html webと入力すると、index.htmlというファイルをwebというディレクトリに移動します。
  • rmコマンド: ファイルやディレクトリを削除するコマンドです。たとえば、rm index.htmlと入力すると、index.htmlというファイルを削除します。
  • catコマンド: ファイルの内容を表示するコマンドです。たとえば、cat index.htmlと入力すると、index.htmlというファイルの内容が画面に表示されます。
  • echoコマンド: 任意の文字列を表示するコマンドです。たとえば、echo Hello Worldと入力すると、Hello Worldという文字列が画面に表示されます。
  • grepコマンド: ファイルやディレクトリの中から、指定したパターンに一致する文字列を検索するコマンドです。たとえば、grep h1 index.htmlと入力すると、index.htmlというファイルの中で、h1という文字列が含まれる行が表示されます。
  • psコマンド: 実行中のプロセスの一覧を表示するコマンドです。プロセスとは、コンピュータが実行するプログラムのことです。
  • killコマンド: 指定したプロセスを終了するコマンドです。たとえば、kill 1234と入力すると、プロセスIDが1234のプロセスを終了します。プロセスIDとは、プロセスを識別するための番号のことです。
  • pingコマンド: 指定したホストに対して、ネットワークの疎通性を確認するコマンドです。ホストとは、ネットワーク上のコンピュータのことです。たとえば、ping www.google.comと入力すると、www.google.comというホストに対して、ネットワークの状態を測定します。
  • sshコマンド: ネットワーク上の別のホストに対して、安全にログインするコマンドです。たとえば、ssh user@hostと入力すると、userというユーザー名でhostというホストにログインします。
  • scpコマンド: ネットワーク上の別のホストに対して、ファイルやディレクトリをコピーするコマンドです。たとえば、scp index.html user@host:webと入力すると、index.htmlというファイルをuserというユーザー名でhostというホストのwebというディレクトリにコピーします。

データベース

データベースとは、データを整理して保存するためのシステムのことです。データベースには、様々な種類がありますが、Webプログラミングには主に次の2種類のデータベースが使われます。

  • 関係型データベース
  • NoSQLデータベース

関係型データベースとは、データを表と呼ばれる形式で保存するデータベースのことです。表とは、行と列で構成されるデータの集合のことです。表では、行にはレコードと呼ばれるデータの単位が、列にはフィールドと呼ばれるデータの属性が入ります。たとえば、ユーザーの情報を保存する表では、行にはユーザーのIDや名前やメールアドレスなどのレコードが、列にはIDや名前やメールアドレスなどのフィールドが入ります。関係型データベースでは、表同士の関係を定義することで、データの整合性や一貫性を保つことができます。関係型データベースには、SQLという言語を使って、データの操作や検索を行うことができます。SQLとは、Structured Query Languageの略で、データベースに対する問い合わせや命令を行うための言語です。代表的な関係型データベースは、MySQLやPostgreSQLやOracleなどです。

NoSQLデータベースとは、Not only SQLの略で、関係型データベースとは異なる形式でデータを保存するデータベースのことです。NoSQLデータベースには、様々な種類がありますが、Webプログラミングには主に次のようなデータベースが使われます。

  • キーバリューデータベース
  • ドキュメントデータベース
  • グラフデータベース

キーバリューデータベースとは、データをキーとバリューと呼ばれるペアで保存するデータベースのことです。キーとは、データを識別するための文字列のことで、バリューとは、データの内容のことです。キーバリューデータベースでは、キーを使って、バリューを素早く取得することができます。キーバリューデータベースには、RedisやMemcachedなどがあります。

ドキュメントデータベースとは、データをドキュメントと呼ばれる形式で保存するデータベースのことです。ドキュメントとは、JSONやXMLなどの形式で表現されるデータのことです。ドキュメントデータベースでは、ドキュメントに対して、様々な属性や値を付与することができます。ドキュメントデータベースには、MongoDBやCouchDBなどがあります。

グラフデータベースとは、データをノードとエッジと呼ばれる形式で保存するデータベースのことです。ノードとは、データの単位のことで、エッジとは、ノード同士の関係のことです。グラフデータベースでは、ノードやエッジに対して、様々な属性や値を付与することができます。グラフデータベースには、Neo4jやOrientDBなどがあります。

フレームワーク

フレームワークとは、Webアプリケーションの開発に必要な機能や構造を提供するものです。フレームワークを使うことで、開発の効率や品質を向上させることができます。フレームワークには、様々な種類がありますが、Webプログラミングには主に次の2種類のフレームワークが使われます。

  • フロントエンドフレームワーク
  • バックエンドフレームワーク

フロントエンドフレームワークとは、Webページの見た目や動きを作るためのフレームワークのことです。フロントエンドフレームワークでは、HTMLやCSSやJavaScriptなどの言語を使って、Webページの要素を操作したり、ユーザーとのインタラクションを行ったりできます。代表的なフロントエンドフレームワークは、BootstrapやReactやVueなどです。Bootstrapは、Webページのレイアウトやコンポーネントを簡単に作ることができるフレームワークです。Reactは、Webページの動的な部分を作ることができるフレームワークです。Vueは、Webページのインタラクティブな部分を作ることができるフレームワークです。

バックエンドフレームワークとは、Webアプリケーションの裏側で動く部分を作るためのフレームワークのことです。バックエンドフレームワークでは、PHPやRubyやPythonなどの言語を使って、データベースの操作やビジネスロジックの処理などを行います。代表的なバックエンドフレームワークは、LaravelやRuby on RailsやDjangoなどです。Laravelは、PHPでWebアプリケーションを開発するためのフレームワークです。Ruby on Railsは、RubyでWebアプリケーションを開発するためのフレームワークです。Djangoは、PythonでWebアプリケーションを開発するためのフレームワークです。

セキュリティ

セキュリティとは、Webアプリケーションを悪意のある攻撃から守るための対策のことです。セキュリティを無視すると、Webアプリケーションやユーザーのデータが危険にさらされる可能性があります。セキュリティには、様々な種類がありますが、Webプログラミングには主に次のようなセキュリティが重要です。

  • SSL/TLS
  • CSRF
  • XSS
  • SQLインジェクション

SSL/TLSとは、Secure Sockets Layer/Transport Layer Securityの略で、Webサイトとユーザーの間の通信を暗号化するための技術です。SSL/TLSを使うことで、通信内容を第三者に盗み見られたり、改ざんされたりするのを防ぐことができます。SSL/TLSを使っているWebサイトは、URLがhttpsで始まり、鍵のマークが表示されます。SSL/TLSを使うためには、Webサイトの運営者が、証明書と呼ばれる電子的な身分証明書を取得する必要があります。証明書は、信頼できる第三者機関によって発行されます。

CSRFとは、Cross-Site Request Forgeryの略で、Webサイトにログインしたユーザーが、別の悪意のあるWebサイトに誘導されて、本人の意図しないリクエストを送らせる攻撃のことです。たとえば、ユーザーが銀行のWebサイトにログインした状態で、攻撃者が用意したWebサイトにアクセスすると、そのWebサイトから銀行のWebサイトに対して、振り込みのリクエストが送られるということがあります。CSRFを防ぐためには、Webサイトのリクエストに対して、トークンと呼ばれる一意の文字列を付与することが有効です。トークンは、Webサイトの運営者が発行し、ユーザーが保持します。トークンが一致しない場合は、リクエストを拒否します。

XSSとは、Cross-Site Scriptingの略で、Webサイトに悪意のあるスクリプトを埋め込んで、ユーザーのブラウザで実行させる攻撃のことです。たとえば、ユーザーが掲示板のWebサイトにアクセスすると、攻撃者が投稿したスクリプトがブラウザで実行されて、ユーザーのクッキーなどの情報が盗まれるということがあります。クッキーとは、Webサイトがユーザーのブラウザに保存する小さなデータのことです。XSSを防ぐためには、Webサイトがユーザーからの入力を受け付けるときに、スクリプトとして実行されないようにエスケープすることが有効です。エスケープとは、特殊な意味を持つ文字を別の文字に置き換えることです。

SQLインジェクションとは、Webサイトがデータベースに対してSQLという言語を使って問い合わせるときに、悪意のあるSQL文を埋め込んで、データベースの内容を改ざんしたり、盗み出したりする攻撃のことです。たとえば、ユーザーがログインフォームにユーザー名とパスワードを入力すると、Webサイトはデータベースに対して、SELECT * FROM users WHERE username = '入力されたユーザー名' AND password = '入力されたパスワード'というSQL文を送ります。このとき、ユーザー名の欄に' OR 1 = 1 --と入力すると、SQL文はSELECT * FROM users WHERE username = '' OR 1 = 1 --' AND password = '入力されたパスワード'となります。このSQL文は、1 = 1という常に真となる条件が入っているため、データベースの全てのユーザーの情報を返します。また、–という記号は、それ以降の文をコメントとして無視することを意味します。SQLインジェクションを防ぐためには、Webサイトがユーザーからの入力を受け付けるときに、SQL文として実行されないようにエスケープすることが有効です。

まとめ

Webプログラミングは、多くの知識やスキルが必要ですが、それだけにやりがいや楽しさもあります。Webプログラミングを学ぶことで、自分の思い描いたWebアプリケーションを実現することができます。Webプログラミングに興味がある方は、ぜひ挑戦してみてください。

目次