プログラミング言語

について

【アンコン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 などのスクリプト言語は
    • スタートアップ企業
    • アジャイルスクラムでの開発
    • などが「書きやすく動かしやすい」という理由で
      ​言語を採用することが多い
  • 一方 JavaScala などのコンパイルするような言語は
    • 大企業
    • 規模が大きい 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

バックエンドのプログラミング言語

大きく分けて以下の3つに大別

  • スクリプト言語

  • 関数型言語

  • その他言語

​この分別は以下のエンジニアロードマップを参考にしました

https://github.com/kamranahmedse/developer-roadmap

  • 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

リッチな動きや SPA にしたい

(フロントエンド)

  • 弊社では Vue.js を採用しています

    • Vue.js のフレームワーク Nuxt.js は
      日本国内でもとても人気
  • ところで SPA ってなに?
    • シングルページアプリケーションのこと
      • 単一ページで生成されるアプリケーション
      • JavaScript で DOM を操作してページが切り替わる
        • 実際に切り替わっているのではなく表示が変わるだけ
      • データは API から持ってきている
        • API はバックエンドの言語で書かれていたりする

リッチな動きや SPA にしたい

(フロントエンド)

  • 弊社では Nuxt.js を採用しています

  • ところで SSR ってなに?
  • サーバーサイドレンダリングのこと
    • SPA では全ての画面情報がブラウザ側で
      レンダリングされるため、いろいろ問題が生じる
      • SEO 対策がきちんとされている?(OG 設定など)
      • ページ数が多い場合は SPA だと初期レンダリングに
        時間がかかる
  • そこでサーバーサイドで予めレンダリングしてから
    ブラウザ側にデータを渡そう、というのが SSR

リッチな動きや SPA にしたい

(フロントエンド)

Nuxt.js では

SPA も SSR も
どちらも簡単にできる!

三部につづく

次はエンジニア文化について

ざっくりと説明していきます!

 

長い説明をきいてくれてありがとう!🍻

プログラミング言語について

By rry

プログラミング言語について

【アンコン2019年新卒勉強会】プログラミング言語について

  • 972