SakuLife

just do it !

現役プログラマが教える技術書籍のコードを最大限効率よく書き写す方法

コードを書き写す時に書籍をデスクに置いて、開いたり閉じたりする効率の悪い写経の仕方をしていませんか?

私も沢山の技術書籍を購入してきましたが、書籍に記述されているコードを書き写すには通常だと、 コードを写しやすい様に、強めに本を開いたりしがちですが下記のブックスタンドがあると手をキーボードに置いたままコードを書き写す事ができます。

とても効率的に学習ができるので、オススメです(下記は使用時の参考画像です)

actto BST-02 ブックスタンド

actto BST-02 ブックスタンド

ブックスタンド
ブックスタンド

actto BST-02 ブックスタンド

actto BST-02 ブックスタンド

現役プログラマが教える初学者がプログラミングを上達する学び方

未経験でプログラマを目指している方へ

プロゲートでのRails学習、Railsチュートリアルを突破された方/学習中の方にプログラミングを学ぶコツを紹介していきます。

私は、10年以上プログラミングで仕事をしています。 その中で、WEBメディア制作でruby/Railsを1年ほど利用しました。 Railsは優れたフレームワークである事は間違いないのですが、便利すぎるが故、プログラミングの基本がおろそかになりがちです。 もっとプログラミングスキルを伸ばしたいと思う皆さんに向けてコツを紹介していきます。

想定読者

  • Railsチュートリアルを突破したが、プログラムを書けるようになっているか自信が無い方
  • プロゲートでRuby/Railsを学習中、あるいは、学習済の方
  • Ruby/Railsでのスキルが伸びているかわからないが、取り合えず他の言語に手を出して少し迷走しているかもしれないと思っている方。

プログラミング言語を学ぶコツ

プログラミング初学者に向けて強いメッセージになるのですが、初学者の頃に扱える言語を増やす事は直接的なスキルには結び付きません。 いろいろな言語に触れてみたくなる気持ちをぐっとこらえて、1つの言語でとにかく自分のスキルを磨きましょう。 プロゲートで、全言語を突破する事はスキルを高める近道ではありません、断言できます

なぜそう思うか?

プロゲートで全言語を突破した人はなおさらだと思いますが、 全言語共通して、if for while arrayと出会います、細かい書き方やルールは各言語で異なりますが、概ねできるコトや学ぶことは似ていてやり方が違うだけと気がつきます。 突き詰めるとコノ言語は並列処理が表現しやすい等はありますが、その辺りは上級者ゾーンとして現時点は無視で問題ありません。

ではどうすればよいか?

スキルを広く浅く伸ばすのではなく、まずは狭く深く伸ばしましょう。 そのためにはは下記を用いた学習法が効果的です。

どういうコードが価値があるのかを学びましょう。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

コードを書くためのよりよいプラクティスが紹介されています。 命名のルールやコードの作法、サンプルも豊富です。 私も新卒エンジニアには読むことを勧めています。 「他人にはわからない、自分にだけわかる邪悪なコード」にならないためのエッセンスが詰め込まれています。

オブジェクト指向を学びましょう。

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

コードを書き始めたら、どんな設計をするのが良いのか気になりますよね? 私は、10年間エンジニアリングの仕事をする中でRuby/PHP/Java/Python/Golangを仕事で扱ってきましたがいずれもオブジェクト指向の概念はとても役に立っています。

初学者の時は、1つの言語でプログラミングを書き、その言語でオブジェクト指向とはどういうものなのかというのを学び、そして、次の言語を習得する際に、早い段階で応用できると思います。

テストの書き方を学びましょう。

テスト駆動開発

テスト駆動開発

書いたコードを再現性のある形で保証できることがテストコードの存在意義になります。 一方、何の為にあるのかわからないようなテストコードやテストとして役にたってるのか不明なテストコードの場合、邪魔になることも当然あります。 正しくテストの書き方を身につけましょう。

5分で作れる docker on rails環境

たった5分でRailsに必要な環境を整えることができます。 すべて無料のソフトのみを利用していきます。

Mac上に、Mysqlをインストールするとなると地味に大変だと思うので、 ぜひdockerを使って数回程度の入力操作で快適なrailsLifeを楽しんでください。

完成する環境は以下の通りです。

* rails 5.2.1
* ruby 2.5.1
* Mysql5.7

実行環境

下記以外に事前にインストールが必要なものはありません。

  • docker for mac : 18.03.1

必要なファイル

myapp
├──docker-compose.yml
├──Gemfile
├──Gemfile.lock
├──Dockerfile
├──Makefile

ディレクトリ構造で表現すると上記ののようになります。 以降で詳しく説明していきます。

作業場所を作成する

$ mkdir myapp && cd ./myapp

必要なファイルを配置

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: pass
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.1'

Gemfile.lock

空ファイルの作成のみ

Dockerfile

FROM ruby:2.5.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

Makefile

# rails projectを作成
new:
    docker-compose run --rm web rails new . --force --database=mysql --skip-bundle

# Gem更新したタイミング
build:
    docker-compose build

# rails 起動
up:
    rm -rf tmp/pids/server.pid
    docker-compose up

# db作成
db/create:
    docker-compose run web rake db:create

# TOPページを作ってみよう
generate/controller_hoge_top:
    docker-compose run spring rails generate controller home top

help:
    cat ./Makefile

コマンドの実行

make new

このコマンドによりrails newが実行されます

config/database.yml

database.ymlを編集します。

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: pass
  host: db

development:
  <<: *default
  database: myapp_development

コマンドの実行

$ make build

このコマンドによりbundle installが実行されます

$ make up

このコマンドによりrails sが実行されます

$ make db/create

このコマンドにより、databaseが作成されます。

ブラウザで確認

ブラウザでlocalhost:3000を確認するとYay! You’re on Rails!が表示されます。

f:id:sakulife:20181005001417p:plain

dockerに関するオススメ書籍

dockerについて、もう少し勉強したい人にオススメです! 最近は特に流行っているので、抑えておいて間違い無しの技術です♩

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

次回

次回は、docker on railsを利用した、WEBAPIの実装を書いていこうと思います:)

現役プログラマがおすすめする2018年に読んで良かった技術書籍

プログラミング言語Go

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

 

 個人的満足度: ★★★★★

golangチュートリアル突破した後に、プログラミング言語Goを購入した。

体系的に学べるのでとてもよい。

複数ページに渡って例題や、写経する箇所があるのでブックスタンドを利用して勉強するととても捗るのでオススメです!

 

 

actto BST-02 ブックスタンド(OEM品番:EDH-004)

actto BST-02 ブックスタンド(OEM品番:EDH-004)

 

 

 Real World HTTP

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

 

個人的満足度: ★★★★☆

プログラミング言語Goを読み終えたあとに購入した本です。

 

タイトルの通りHTTPに関する技術的な内容の本だけど、

golangのサンプルコードがでてくるので、ついでにgolangの勉強にもなる。

 

みんなのGo言語 

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

 

 個人的満足度: ★★★★★

これはとても良かった。

タイトル通りに現場感あふれる実践テクニックになっている。

golangは他の言語とは違いフレームワークを使わなくても十分すぎる機能を言語標準の機能搭載している。

そのため、ruby on Railsのようなフルスタックフレームワークはあるものの、APIサーバを作るのであれば、大規模なものであったとしても言語標準のnet/httpというモジュールでルーティングを定義しと後は自由にコントローラ、モデル、ミドルウェアを実装していけば良い。

とはいってもオレオレすぎるフレームワーク爆誕させてしまってもしょうがない。

本書にはnet/httpを利用したサーバアーキテクチャの開発のススメ方や、テスト技法についても触れられている。

とても購入の価値がありました。

 

テスト駆動開発

テスト駆動開発

テスト駆動開発

 

 

 個人的満足度: ★★★★★ 

とても良かった。

何が良かったかというと、これまでテスト駆動開発をやったことがないので、どう進めれば良いのかがよくわからなかった。

先にテストを書くとか巷のインターネッツではみるものの、どう効果的なのか、いまいちピンと来なかったからである。

コードを書き終えたあとにテストコードを書くのと比較してどういう嬉しみがあるの?と思っていた。

 

答えは本の中にある、本の中には実例として取り組むシステム開発の描写があり、主人公と一緒にテスト駆動開発の手法で課題を解決していくスタイル。

 

写経しながら、「こうやってテスト駆動開発するのか〜」と感じたものである。

読了以降、実際の仕事でテスト駆動開発を取り言えれたか?というと答えはNoである、

必ずしもテスト駆動開発で進めなければならないシチュエーションってそんなないと思うけど、一つの手法として知っておくのは悪くないと思う。

 

 

 

 

ブックスタンド

actto BST-02 ブックスタンド(OEM品番:EDH-004)

actto BST-02 ブックスタンド(OEM品番:EDH-004)

 

コードを書き写す際にとても重宝しました↓↓実際の写真です↓↓

 f:id:sakulife:20181127223105j:image

いちいち本をデスクに置いたりする事もないので、10倍は効率的に写経できます。