PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Ruby on Rails】Ruby on Railsとは?

いつもご覧いただきありがとうございます。
 本日は「Ruby on Rails」について



 初学者なりに学習した内容を書いていきます。


Ruby on Railsとは

 プログラミング言語であるRubyを使用してWebアプリケーションを構築するフレームワーク(枠組み)の一つです。フレームワークには、先人の知恵と経験が凝縮されています。特にRailsは、Rubyオブジェクト指向の考えを踏襲し、非常に洗練されたアプリケーション開発の仕組みを提供してくれます。

 一般的に、一からWebアプリケーションを構築する場合には、さまざまな課題をすべて自分で解決しなければなりません。しかしRailsフレームワークは、誰でもどこでも必要とする「基本的で標準的な機能の枠組み」を、自由に、かつ効果的に利用できるようにしています。経験の長い優れたエンジニアが「こうありたい」と願う仕組みをことごとく現実のものにしている、といっても良いでしょう。

 したがって、初めてWebアプリケーションの開発に携わる方でも、その仕組みを正しく理解して実践できれば、先人たちの考えた優れたスマートで洗練された仕組みを素早く取り込むことができます。その結果、わかりやすい、品質の高いWebアプリケーションを素早く柔軟に構築でき、構築したあとの機能の拡張や改善を含むアプリケーションの保守・運用管理も容易になるはずです。

 Railsは簡単にWebアプリケーションを構築できるツールを提供し、Webアプリケーション構築の初心者でも一気に高みに連れて行ってくれます。しかし、前述したようにさまざまな先人の優れた考え方、仕組みを取り込んでいるため、その仕組み・意義をしっかりと理解しなければ、効率的で現実的に優れたアプリケーションを構築することはできません。

Ruby on Railsの歴史

 Rubyは、日本人のまつもとゆきひろ氏が作成したプログラミング言語です。また、現在、日本発の言語としては唯一、国際標準規格に認定された言語でもあります。

 Railsは、Rubyプログラム言語の良さにほれ込んだデンマーク人のDavid Heinemeier Hansson氏(通称:DHH氏)によってRubyを使って作成された、RubyによるWebアプリケーションのためのフレームワークです。

 2016年にリリースされたRails バージョン5には、WebSocket通信を利用したサーバー・クライアント間の双方向通信(チャットなど)が可能になるActionCableや、モデルの属性の持ち方を大きく拡張するAttributes API、タイプオブジェクトなどが追加されました。さらに、マイナーバージョンといえるRails 5.2には、ActiveStorageなどの新しい機能も追加されました。これらは近い将来予定されている、Rails 6以降におけるフロントエンド周りの機能拡張の布石と考えられます。他にもRails 6では、メール受信をよりスマートに実現させる機能やスケーラビリティ(規模拡張)を支援する機能が組み込まれる予定です。このように、Railsはより高度な機能を取り込みながら、使いやすい形に進化を続けています。

Railsの理念

 Railsは、長年の経験による最良の開発方法を推進するために、Rails流(the Rails way)というべき次のような理念が存在します。また、その理念に従って、あらゆるものが構成され、またそれに従って開発を行うことが最良の開発であることを推奨しています。

同じことを繰り返すな(Don't Repeat Yourself: DRY)

 当たり前ともいえるのですが、一般的なソフトウェア開発では、やむを得ない事情によって、あるいは意図せずに、多くの重複するようなコードや仕組みが至るところに積み重なるリスクを負っています。その結果、効率的な改善を阻む要因となります。

 「システムを構成するあらゆる部品は、常におのおの重複することなく1つであり、明確であり、信頼できる形で表現されていなければならない」のが本来あるべき姿です。その指針に従って、同じプログラムコードを繰り返し書くことを徹底的に避け、プログラムコードを保守しやすく、容易に拡張でき、バグ(隠れた不具合)をとにかく減らすことを目指しましょう。

Ruby on Rails」についてかんたんにまとめさせていただきました。

最後までご覧いただきありがとうございました。







【Ruby】Rubyってなに?

いつもご覧いただきありがとうございます。

本日は「Ruby」について




初学者なりに学習した内容を書いていきます。


 

 - Rubyとは

まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語

日本で開発されたプログラミング言語としては

初めて国際電気標準会議(IEC)で国際規格に認証された事例となった。

 

-  特徴

オブジェクト指向

インタプリタ方式

・記述量が高い

・汎用性が高い

Ruby on Railsと相性がいい

 

-  デメリット

・実行速度が遅い

・コード記述の自由度が高いため個人によって差が出てしまう

 

Ruby」についてかんたんにまとめさせていただきました。

最後までご覧いただきありがとうございました。







【言語設計】インタプリタ方式ってなに?

いつもご覧いただきありがとうございます。

本日は「インタプリタ方式」について




初学者なりに学習した内容を書いていきます。



インタプリタ方式とは

作ったプログラムを動かすときに

「1行目を翻訳して、実行」「2行目を翻訳して、実行」のように、

プログラムの中身を人間様が分かる言葉(人間語)から

コンピュータが分かる言葉(機械語)へ翻訳「しながら」動かすこと

どんな言語がある?

インタプリタ方式で有名な言語は
JavaScript

Ruby

PHP

Python

・Pearl

などが挙げられます。


コンパイラ言語

一方でコンパイラ方式はプログラミング言語で書かれたソースコード

事前に機械語へ「一括変換」して、

変換語のプログラムがコンピュータに命令を与えます。

「事前に変換する」というところがポイントです。

 実行時に改めて変換する必要がないわけですから、高速で処理できます。

また、実行時に変換するための仕組みも必要ありませんので、

単独でプログラムを実行できます。

C言語

C++

コンパイラに分類されます。

それぞれのメリット・デメリット

 インタプリタ方式書かれたコードがその都度解釈された機械語として実行されます。
 メリット・デメリットはコンパイラ方式のそのまま逆のものになります。
コンパイルしなくても実行できるので手軽に実行できるというメリットがあります。
しかし、その都度コンピューターは解釈→変換を行うので実行速度が遅くなります。


インタプリタ方式」についてかんたんにまとめさせていただきました。

最後までご覧いただきありがとうございました。







【言語設計】オブジェクト指向ってなに?

いつもご覧いただきありがとうございます。

本日は「オブジェクト指向」について




初学者なりに学習した内容を書いていきます。



オブジェクト指向とは

ソフトウェアで扱う事柄について、データ(変数など)と操作(メソッド)をまとめて1つのオブジェクトとして捉える。


と、捉えることができます。


オブジェクト指向の成り立ち

 オブジェクト指向(object-oriented)という言葉自体は、

1972年から80年にかけてプログラミング言語Smalltalk」を

公開した計算機科学者アラン・ケイが、

その言語設計を説明する中で初めて生み出されている。


 他のエピソードによると、1967年に公開された「Simula 67」を

当時大学院生だったケイが知った際に、

object-orientedという咄嗟の造語で評論したのが発端だという。

なお、Simula 67に結び付けられたオブジェクト指向と、

後にケイ自身が開発するSmalltalkの理念とされた

オブジェクト指向の性格は全く異なるものであったが、

いずれにせよクラスとオブジェクトの設計を備えた

Simula 67もオブジェクト指向の草分けと見なされるよう
になった。


 データとコードの複合体であるオブジェクト(object)という

用語を確立したのはSimula 67であったが、

その設計は手続き型プログラミングの機能拡張に近いものである。

ケイ自身は「LISP」の影響の方を強調しており、

実際に彼がSmalltalkで示したオブジェクト指向設計は全くの別物であった。

その後、計算機科学者ビャーネ・ストロブストルップが

1983年に公開した「C++」が契機となって、

オブジェクト指向に関連する様々な考え方が再定義されている。

C++の設計はSimula 67の方をモデルにしていた。


 上述の様にオブジェクト指向とは元々プログラミング・パラダイムとして

編み出された理論であったが、1980年代からデータベースとOSの開発にも

その設計構想が活かされるようになり、

1990年代になるとソフトウェア工学の幅広い面にも応用されて、

オブジェクト指向を土台にした様々な分野が開拓される事になった。



オブジェクト指向」についてかんたんにまとめさせていただきました。
 
 
 
 

 最後までご覧いただきありがとうございました。








【Webシステム】情報セキュリティポリシーってなに?

いつもご覧いただきありがとうございます。

本日は「情報セキュリティポリシー」について



初学者なりに学習した内容を書いていきます。



 


情報セキュリティポリシーとは

情報セキュリティポリシー(information security policy)


企業などの組織における情報資産の情報セキュリティ対策について、

総合的・体系的かつ具体的にとりまとめたもの。どのような情報資産をどのような脅威から、

どのようにして守るのかについての基本的な考え方と、

情報セキュリティを確保するための体制、
組織および運用を含めた規程。

情報セキュリティポリシーは、
PDCAサイクルによって、

評価・見直しをし、改善していく。

省略して、単にセキュリティポリシーと呼ぶことも多い。


 


概要

内容をまとめると ・どの情報を誰にアクセスさせ、誰にアクセスさせないか。

・どの操作を誰に対して許可し、誰に許可しないか。

・ウイルスや外部からの侵入に対して、どのような防御体制を整えるか。

・それらが正常に機能していることをどのように確認し、維持管理していくか。


具体的には

次の3つのうち、1.と2.を併せて情報セキュリティポリシーという。


1. 情報セキュリティ基本方針(ポリシー)組織における、


 情報セキュリティ対策に対する根本的な考え方を表すものであり、


 組織が、どのような情報資産を、どのような脅威から、


 なぜ保護しなければならないのかを明らかにし、


 組織の情報セキュリティに対する取組み姿勢を示すも
の。


2. 情報セキュリティ対策基準(スタンダード)基本方針で定められた


 情報セキュリティを確保するために遵守すべき行為や判断などの基準。


 つまり基本方針を実現するために何をしなければいけないかを示すもの。


 

3. 情報セキュリティ実施手順など(プロシージャ)ポリシーには含まれないものの、


 対策基準に定められた内容を具体的な情報システムまたは業務において、


 どのような手順に従って実行していくのかを示すものなど。




「情報セキュリティポリシー」についてかんたんにまとめさせていただきました。


 
 
 

 最後までご覧いただきありがとうございました。








【Webシステム】 IPアドレスってなに?

いつもご覧いただきありがとうございます。

本日は「IPアドレスとは何か」について


初学者なりに学習した内容を書いていきます。

 


IPアドレスとは

極論、インターネットの住所です。

 

IPアドレスは「183.79.139.228」のように表現されます。

この数字の集まりが住所になります。

それぞれの数字は0-255までの値を取るので、

全パターンは約42億通りになります。(256の4乗)

 

現在このIPアドレスIPv4と呼ばれるバージョンの仕様です。

しかし、近い将来IPアドレスが足りなくなると言われています。


現在世界の人口が70億人を超えているため、

1人1つのIPアドレスを取得しようとするとIPアドレスが不足するためです。

対策として、IPv6という新しいバージョンへの移行が進んでいます。

IPv6では、IPアドレスを16進法で表し、

例えば「2001.0db8.1234.5678.90ab.cdef.0000.0000」となります。

こちらは3.4×10の38乗であるのでほぼ無限に使えます(例えば1兆は10の12乗です)。

しかし、IPv6が世界全体で対応するためにはあと何年もかかるようです。



IPアドレスとは何か」についてかんたんにまとめさせていただきました。


 
 

 最後までご覧いただきありがとうございました。







 

【JavaScript】Node.jsってなに?

いつもご覧いただきありがとうございます。


本日は「Node.jsとは何か」について


ものすごく簡単に書いていきます。



Node.jsとは

極論、サーバーサイドで動くJavaScriptです。



Node.jsの2つの特徴

・「非同期処理」で動いているので、大量のアクセスを高速に捌く必要があるWebアプリやサービスに向いています。


・Node.jsはJavaScriptを高速に実行させるため、Googleが開発した実行エンジン「V8」を利用しています。



Node.jsでできること

スマホアプリの開発


近年はHTML5 / CSS / JavaScriptなどのWeb技術だけでアプリ開発ができるようになりました。


「Cordova」「Ionic」などを使って開発を行うのですが、


これはNode.jsを利用して手軽に開発できるようにさまざまなライブラリが提供されています。


また、最近ではFacebookが開発している「React Native」や


Googleが提唱している「PWA」によるアプリ開発も盛んです。



WEBサービスの開発


少ないメモリ消費で大量のアクセスを捌くことが


できる特徴を最大限に活かすことができるからです。


また、これらのプログラミングを効率よく記述できるように、


数多くのライブラリが無料で提供されているのも魅力の1つです。



・IoT関連の開発


Node.jsには「Johnny-Five」をはじめとするJavaScriptで


IoT開発を行える環境整備が進められています。


先ほどの「Raspberry Pi」「Arduino」といった


マイコンボードもJavaScriptで制御可能で、


Node.jsの特徴を有効活用することができます。




「Node.jsとは何か」についてかんたんにまとめさせていただきました。



 
 最後までご覧いただきありがとうございました。