プログラミング言語
について
【アンコン2019年新卒勉強会】
第二部
前回のつづき
-
前回は Web 業界についてであった
-
今回は、どんなプログラミング言語があって
それを書いているプログラマーは
どんな人たちなのかを、ざっくりと説明する
-
エンジニアの中でも
プログラマーにフォーカスを
当ててお話しするよ!
全てのプログラマーに
必要なスキルがある
-
1. Linux コマンド
-
2. バージョン管理システム
これらは、全てのプログラマーが使える技術。
むしろこれらを知らないプログラマーは、
プログラマーとは呼べない。
全てのプログラマーに
必要なスキルがある
1. Linux コマンド
- シェルスクリプト、Bash などと呼ばれる
- コマンドを使って何かをインストールしたり、
サーバーを操作したりするため、Linux コマンドを
使えないと Web エンジニアにはなれない - フロントエンドエンジニアやコーダーであったとしても、
最近は CUI を使ってライブラリをインストールしたり
するので、Web エンジニアはみんな
Linux コマンドが使える
全てのプログラマーに
必要なスキルがある
2. バージョン管理システム
- ソースコードをバージョン管理システムを使って管理する
- 昔は SVN などが使われていた
- 今はほとんどの現場で Git が使われている
- OSS(オープンソース)で盛んに使われるのが GitHub
- 複数人でのアジャイルスクラム開発にとても便利
- アンコンでも GitHub を使っています
プログラミング言語の考え方
-
Q1. そもそもどうして
こんなにたくさん
言語があるの?
-
Q2. フレームワークって
いったい何なの?
プログラミング言語の考え方
Q1. そもそもどうしてこんなにたくさんの言語があるの?
A. プログラミング言語の違いは、それぞれの「思想」の
違いです。
プログラミング言語の考え方
言語が生まれた背景には、
「解決したい問題」と
「それを解決するためのアプローチ」
(言語の設計思想)がある。
※公式ドキュメントや Wiki を読むと
書いてあります
例えば...
プログラミング言語の考え方
-
PHP の設計思想
- 「PHP: Hypertext Preprocessor」
- (HTML の前処理をするプログラム)
-
Ruby の設計思想
- 「enjoy programming」
- (たのしいプログラミング)
-
Java の設計思想
- 「Write once, run anywhere.」
- (一度書けばどこでも動く)
プログラミング言語の考え方
- 言語によって特徴があるため、
-
PHP, Ruby などのスクリプト言語は
- スタートアップ企業
- アジャイルスクラムでの開発
- などが「書きやすく動かしやすい」という理由で
言語を採用することが多い
- 一方 Java や Scala などのコンパイルするような言語は
- 大企業
- 規模が大きい Web アプリケーション開発
- などで好まれる傾向にある
プログラミング言語の考え方
Q2. フレームワークって
いったい何なの?
A. プログラミング言語で作られた Web アプリケーションの「ひな型」となるものです。
プログラミング言語の考え方
- フレームワークがあると何がうれしいの?
- フレームワークに沿って開発すれば考えることが
少なくて済む(自力で考える必要がなくなる) - コマンドを打つだけで
いろいろ自動で作成してくれる
- フレームワークに沿って開発すれば考えることが
- 多くの Web アプリケーションはフレームワークで
開発されており、Web 上に開発手法がたくさんのっている - レールに沿って開発すれば大抵のものは作れる!
プログラマーの分けかた
-
フロントエンドエンジニア
- 画面を作る人たち
- 例)HTML5, CSS3, JS, デザイン
-
バックエンドエンジニア
- API やロジック周りを実装する人たち
- 例)Ruby on Rails, MySQL
-
DevOps(デブオプス:開発運用のこと)
-
開発環境を整えてくれる人たち
- Docker, AWS, CircleCI
-
大きく分けて3つあります
データを保存するもの
(バックエンド / DevOps)
-
DB(データベース)
-
RDBMS(SQL を叩いて操作する)
- 関係データベース管理システムのこと
- MySQL, PostgreSQL, Oracle DB, MSSQL
-
NoSQL(専用の言語を叩いて操作する)
- RDBMS 以外の DB のこと
- MongoDB
- Redis
- FireStore
-
RDBMS(SQL を叩いて操作する)
バックエンドのプログラミング言語
大きく分けて以下の3つに大別
-
スクリプト言語
-
関数型言語
-
その他言語
この分別は以下のエンジニアロードマップを参考にしました
- Ruby
- Ruby on Rails
- Gem は Ruby のパッケージ管理システム
- PHP
- Laravel
- CakePHP
- FuelPHP
- Symfony
- Python
- Django(ジャンゴ)
- Node.js(JavaScript)
- Express
- JavaScript ってブラウザで動くモノじゃないの?
- 昔(2009年以前)はブラウザで動かすモノでした
- Node.js はサーバーサイドで動く JS 実行環境です
- npm(node package manager)は Node.js のパッケージ管理システム
バックエンドのプログラミング言語
スクリプト言語
- Scala
- Play Framework
- Scala は日本でも多くの企業での採用事例がある
- ZOZO
- ドワンゴ
- ビズリーチ
- 弊社 CTO は
この言語が大好きです
- Haskell(ハスケル)
- Erlang(アーラン)
- Clojure(クロージャー)
- ここらへんはぶっちゃけ書いたことない(し、書いてる人を知らない)のでどんなモノかが分からない
バックエンドのプログラミング言語
関数型言語
- Java
- Spring Framework
- Play Framework
- 昔からあるオブジェクト指向プログラミング言語であり、他の様々な言語に影響を与えてきた
- 弊社 CTO は元々この言語をずっと書いていた人です
- Kotlin(コトリン)
- アンドロイドアプリ開発などで事例が多い
- Go(ゴー言語)
- 処理速度が速い
- Rust(ラスト)
- C#(シーシャープ)
- C++(シープラプラ)
- C(シー言語)
- 古くから使われている
バックエンドのプログラミング言語
その他の言語
ユーザー画面が必要だよね
(フロントエンド)
-
HTML5
- マークアップ言語
- Web ページの「構造」に対して責任を持つ
- フロントエンドエンジニアやコーダーは
これを「しっかりと」書ける人
-
CSS3
- スタイルシート言語
- Web ページの「レイアウト」に対して責任を持つ
- 色を変えたり動かしたり、アニメーションさせたりできる
リッチな動きや SPA にしたい
(フロントエンド)
-
JavaScript(ECMAScript)
- いろんなライブラリや Alt.js 群がある
- Alt.js: 最終的に JavaScript にコンパイルされる言語のこと
- CoffeeScript, TypeScript, Dart など
- ライブラリといえば
- 昔は jQuery が主流でした
- 今は3大ライブラリが主流です
- 3大ライブラリ
- Angular React Vue.js
- Alt.js: 最終的に JavaScript にコンパイルされる言語のこと
リッチな動きや SPA にしたい
(フロントエンド)
-
弊社では Vue.js を採用しています
- Vue.js のフレームワーク Nuxt.js は
日本国内でもとても人気
- Vue.js のフレームワーク Nuxt.js は
- ところで SPA ってなに?
- シングルページアプリケーションのこと
- 単一ページで生成されるアプリケーション
- JavaScript で DOM を操作してページが切り替わる
- 実際に切り替わっているのではなく表示が変わるだけ
- データは API から持ってきている
- API はバックエンドの言語で書かれていたりする
- シングルページアプリケーションのこと
リッチな動きや SPA にしたい
(フロントエンド)
-
弊社では Nuxt.js を採用しています
- ところで SSR ってなに?
- サーバーサイドレンダリングのこと
- SPA では全ての画面情報がブラウザ側で
レンダリングされるため、いろいろ問題が生じる- SEO 対策がきちんとされている?(OG 設定など)
- ページ数が多い場合は SPA だと初期レンダリングに
時間がかかる
- SPA では全ての画面情報がブラウザ側で
- そこでサーバーサイドで予めレンダリングしてから
ブラウザ側にデータを渡そう、というのが SSR
リッチな動きや SPA にしたい
(フロントエンド)
Nuxt.js では
SPA も SSR も
どちらも簡単にできる!
三部につづく
次はエンジニア文化について
ざっくりと説明していきます!
長い説明をきいてくれてありがとう!🍻
プログラミング言語について
By rry
プログラミング言語について
【アンコン2019年新卒勉強会】プログラミング言語について
- 972