見習いエンジニア(仮)の学び場

未経験からエンジニア転職を目指す男が、プログラミング学習で学んだことを分かりやすくアウトプットするためのブログです。

Rubyってどんな言語??

今回は、プログラミング言語の一つであるRuby(ルビー)」について解説をしていきます。

 

Rubyの特徴を一言で言うなら、「シンプルで使いやすい言語」です。

他の言語だと5行のコードを書かないといけないものが、rubyだと1行で書けたりするので、非常にシンプルにコードが書けます。

 

また、文法も覚えやすいので、プログラミング初学者にはオススメの言語になっています。(私が通っていたプログラミングスクールも、Rubyの学習がメインでした。)

 

さらに、webアプリケーションの開発にも特化しているので、世界中で幅広く使われている言語でもあります。初学者でも、比較的簡単にアプリケーションが作成できます。

 

 

逆にRubyの短所としては、実行処理速度が遅いことが挙げられます。

 

Rubyは、コードを1行ずつ翻訳して処理を実行するインタプリタ方式をとっているため、処理に時間がかかることがあります。

 

また、誰でも使いやすいという長所の裏返しで、個人によって記述方法がバラバラになってしまう短所もあります。一人で開発している際には問題ないのですが、チームで開発している時に他の人のコードがその人にしか分からないような書き方で書いてあると、全体の開発に支障が出ることがあります。

 

 

まとめると、Rubyの長所と短所は下記になります。

Rubyの長所

・シンプルで使いやすい。初学者におすすめ。

・webアプリケーションの開発に特化していて、世界中で使用されている。

 

Rubyの短所

・実行処理速度が遅い

・記述の自由度が高いので、個人によって書き方が異なるとチーム開発に支障が出る。

 

 

Rubyは理解がしやすく、初めての人でもアプリが作りやすい言語なので、初学者の方はよかったら学習してみてください!

アジャイル型開発とウォーターフォール開発の違いって何??

今回は、チームで開発を進めていく手法であるアジャイル型開発」ウォーターフォール型開発」について解説をしていきます。

 

 

まずアジャイル型開発ですが、こちらは開発途中に確認を挟みながら進めていく手法です。

 

例えば学校のテストの場合、本試験の前に授業などで小テストを実施して、生徒の理解度を確認しますよね。そのように、都度ユーザーの反応や顧客の確認を挟みながら、開発を進めていく手法がアジャイル型開発の特徴になります。

 

対するウォーターフォール型開発は、確認を行わずに納期まで一直線に開発を進める手法です。

 

先ほどの例で言うなら、小テストを挟まずに本試験で高得点を目指していくようなイメージです。

 

 

まとめると、都度ユーザーの反応や顧客の確認をとりながら開発を進めるのがアジャイル型、納期まで一直線で開発を進めるのがウォーターフォール型の開発になります。

 

 

それぞれのメリットとしては、アジャイル型開発は確認を都度挟むので、仕様変更がしやすいです。

一方のウォーターフォール型開発は、一直線にシンプルに開発を進めるので、開発の進捗管理がしやすいです。

 

 

プロジェクトに応じて、アジャイル型開発でいくか、ウォーターフォール開発でいくかを考えていくことが重要になってきます。

 

 

ちなみに、私はアジャイル型開発の方が好きですね(まだ実務経験0なのですが、、笑)

仕事はやり直しをいかに減らすかが大事だと考えているので、都度修正を入れるアジャイル型開発の方が効率的に見えます。

 

 

ちなみに、アジャイル開発でのチームワークの手法をスクラムと呼ぶそうです。

 

例えば、コンビニには「エリアマネージャー」「店長」「アルバイト」といったどのコンビニでも共通して使える役割がありますよね。

このような、チームのポジションを明確化されたものがスクラムのようで、具体的なポジションには下記があります。

・プロダクトオーナー→プロジェクトの最高責任者

スクラムマスター→チームを円滑に回すための中間管理職

・開発チームメンバー→開発を担うメンバー

 

 

コードを書ける技術力だけではなく、こういった開発手法も学んでいくことが、現場で必要とされるエンジニアになるための近道だなと思いました!

S3って何だろう??

今回は、S3(エススリー)について解説します。

 

S3とは、Amazonが提供するAWSというサービスの一つで、webアプリケーションの画像を保存したり、保存してある画像を取得することができます。

 

例えるなら、オンライン上でデータを保存しておける倉庫のようなものです。

 

S3のようなオンライン上でデータを保存するサービスのことを、ストレージサービスと呼んだりします。

 

このS3が必要なケースは、「オンライン上にアプリケーションを公開していて、そのアプリ内で画像などのデータを保存できるようにしたい時」です。

 

というのも、オンライン上に公開されているアプリの画像データは、24時間経つと消えてしまう仕様になっています。Twitterであれば、画像を投稿しても1日経ったら画像が消えてしまっているようなイメージですね。

 

このように、オンライン上にアプリを公開している時には、S3といったストレージサービスの導入が必要になります。

 

私自身も、自作のアプリケーションで画像を使用するためにS3を導入しています。

 

S3の導入はAWSのサイトからできます。

https://aws.amazon.com/jp/s3/getting-started/

 

無料から始められますが、使用容量を超えたりすると料金が発生することがあるので、導入する際は説明をよく読んで始めましょう!

 

オブジェクト指向とは??

オブジェクト指向とは、「アプリの役割ごとに実装を進めていく手法」のことで、エンジニアにとって非常に重要な考え方です。

 

ちなみに、ここでいうオブジェクトとは「データとそのデータを用いて行う処理のまとまりのこと」です。

 

このオブジェクト指向のメリットは大きく2つあります。

 

1つ目は、チームでの開発を効率よく進めることができる点です。

アプリ開発は、基本的にはチームで開発にあたることが多いです。

チームで開発する際には、「誰が」「どの開発の役割を担うのか」が明確であった方が、効率がいいですよね。

オブジェクト指向がチーム全体に浸透していれば、効率よく開発を進めることができます。

 

2つ目は、エラーが起きた時の修正がしやすい点です

アプリ開発には、エラーがつきものです。コードを書いて実際に動かしてみると、思った通りの動作ができないことも多々あります。

その修正をする時に、役割ごとに実装をしていないと、修正した箇所の影響でまた別の動作のエラーが起こってしまうことがあります。

役割ごとに実装を進めていれば、他の箇所に影響を及ぼすことなく修正ができるようになるので、結果的に無駄な作業を減らすことに繋がります。

 

 

以上の2つの理由から、オブジェクト指向はチームで開発することが多いエンジニアにとって、必要不可欠な考え方になるのです。

 

JavaScriptって何??

JavaScript(ジャバスクリプト)とはプログラミング言語の一つで、主にクライアントサイド側で使われる言語です。

 

クライアントサイドとは、今私たちが見ているスマホやPCの画面のことですね。

 

Webアプリは主に、ユーザーが見るクライアントサイドと、アプリの裏側であるサーバーサードで分けられます。

 

JavaScriptはそのクライアント側で、例えば私たちがアプリを見やすくしてくれたり、動作をスムーズにさせてくれたりしています。

 

JavaScriptの大きな特徴は、ページを切り替えずに処理や更新ができることです。

 

例えばこのはてなブログも、PCのカーソルをタイトルに乗せると、色が変わったり下線がついたりすると思います。

こういった画面上で更新せずに処理を加えたりする機能を持っているのがJavaScriptの利点です。

これが一回一回更新が必要だったら、待ち時間が増えて不便ですからね。

 

 

このように、私たちの身近でアプリを使いやすくしてくれているのがJavaScriptと言う言語の役割になります。

 

テストコードで使用される用語って何があるの?

今日は、テストコードで用いられる用語について解説していきます。

 

まずテストコードとは、ユーザーが操作する上で開発者の想定通りに動作するかをテストするためのコードです。

 

テストコードを書くには、ユーザー目線に立ってどのような操作があるかを洗い出して、一つ一つテストしていく必要があります。

 

この操作を洗い出す上で必須なのが、describeというメソッドです。

 

describeの役割は、「どの機能に対してテストを行うのかのグループ分け」です。

例えば、「ユーザーの新規登録」の機能をテストしたい時は、このdescribeの後ろに’ユーザーの新規登録’と記述します。

 

次に登場するのはitというメソッドです。

itはdescribeで決めたグループを、さらに分けるために使用します。

例えば、describeで「ユーザーの新規登録」の機能をテストすると決めたなら、ユーザーの新規登録に必要な条件である「名前」が登録できるかなど、より細かくグループ分けをするのがitの役割です。

ちなみに、itで分けたグループのことをexampleと呼びます。

 

 

今紹介したdescribeとitで、どの機能のどのような動作をテストするのかが決まったら、いよいよテストコードを書いていきます。

 

テストコードの記述法はたくさんあるので、今回は数ある記述法の中で「valid?(バリッド)」というメソッドについて解説します。

 

valid?とは、バリデーションを実行させて、エラーが出るかどうかをテストするメソッドです。

バリデーションとは、データを登録する際の制限のことを指します。

例えば、「アカウント名が空の状態で、アカウントを作成することはできない」などがバリデーションです。

 

簡単に言えば、「データ登録時に設定されたルールが正しく機能しますか?」というのを確認するのがvalid?メソッドです。

 

正しく機能していればtrue。機能していなければfalseを返します。

 

テストする方法は、まずランダムの値が入ったインスタンスを作成します。

インスタンスは、「インスタンス名=モデル名.new()」で作成でき、引数として()の中に値を入れることができます。

 

例えば、ユーザーのインスタンスを作成したければ、

user = User.new()と記述し、()の中に任意のユーザー情報を記述します。

 

そして、バリデーションがちゃんと実行するかを確認するために、

user.valid?

という記述をします。

これで、期待した回答が返ってきたら、テストは問題なしといった結果になります。

 

テストコードでは今回のvalid?のようなコードがたくさん出てくるので、都度調べながら覚えてていきましょう。

 

「バリデーション」って何??

バリデーションとは、データの登録をする際に一定の制約をかけることを言います。

 

例えば、Twitterでアカウント名を空欄にした状態で、アカウントを作成することはできないですよね?

 

何でもかんでもデータを登録できるようにしてしまうと、アプリの使用状況がめちゃくちゃになってしまうので、それを防ぐために登録できるデータの制限をかけることをバリデーションと呼びます。

 

このバリデーションを適用させるためには、サーバーのモデル内に「validates(バリデーツ)メソッド」と呼ばれるメソッドを記述します。

 

ちなみにモデルというのは、アプリのサーバー内でデータベースとデータのやり取りをする機能のことです。

データの更新や登録も行うため、この中にバリデーションの記述をしていきます。

 

具体的な記述方法は下記の通りです。

 

validates: カラム名,バリデーションの種類

 

カラム名とは、大きなデータを構成している一つ一つのデータ名のことです。

 

例えば、Twitterのユーザーに関するデータは「name(アカウント名)」「password(パスワード)」「email(メールアドレス)」といったデータから構成されています。

この構成している一つ一つデータ名のことを、カラム名と呼んでいます。

 

以上の内容を踏まえて、仮にTwitterのユーザーの中の「name」にバリデーションを適用させたい場合の記述は、下記のようになります。

 

validates: name

 

 

続いて、バリデーションの種類です。

バリデーションの種類には、代表的なものだとpresence: true(空欄の場合は登録できない)という種類があります。

 

つまり、nameカラムが空欄だと、データの登録ができないようにするバリデーションの記述は以下のようになります。

 

validates: name, presence: true

 

 

バリデーションの種類には他にも、length: {maximum: 6}(文字数が6文字以上の場合は登録できない)といったものもあり、用途によって使い分ける必要があります。

 

バリデーションの設定は、Webアプリケーションを作成する上で必須の知識なので、ぜひ覚えておきましょう。