現役プログラマが教える技術書籍のコードを最大限効率よく書き写す方法
コードを書き写す時に書籍をデスクに置いて、開いたり閉じたりする効率の悪い写経の仕方をしていませんか?
私も沢山の技術書籍を購入してきましたが、書籍に記述されているコードを書き写すには通常だと、 コードを写しやすい様に、強めに本を開いたりしがちですが下記のブックスタンドがあると手をキーボードに置いたままコードを書き写す事ができます。
とても効率的に学習ができるので、オススメです(下記は使用時の参考画像です)
- 出版社/メーカー: actto corp.
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: actto corp.
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
現役プログラマが教える初学者がプログラミングを上達する学び方
- 未経験でプログラマを目指している方へ
- 想定読者
- プログラミング言語を学ぶコツ
- なぜそう思うか?
- ではどうすればよいか?
- どういうコードが価値があるのかを学びましょう。
- オブジェクト指向を学びましょう。
- テストの書き方を学びましょう。
未経験でプログラマを目指している方へ
プロゲートでのRails学習、Railsチュートリアルを突破された方/学習中の方にプログラミングを学ぶコツを紹介していきます。
私は、10年以上プログラミングで仕事をしています。 その中で、WEBメディア制作でruby/Railsを1年ほど利用しました。 Railsは優れたフレームワークである事は間違いないのですが、便利すぎるが故、プログラミングの基本がおろそかになりがちです。 もっとプログラミングスキルを伸ばしたいと思う皆さんに向けてコツを紹介していきます。
想定読者
- Railsチュートリアルを突破したが、プログラムを書けるようになっているか自信が無い方
- プロゲートでRuby/Railsを学習中、あるいは、学習済の方
- Ruby/Railsでのスキルが伸びているかわからないが、取り合えず他の言語に手を出して少し迷走しているかもしれないと思っている方。
プログラミング言語を学ぶコツ
プログラミング初学者に向けて強いメッセージになるのですが、初学者の頃に扱える言語を増やす事は直接的なスキルには結び付きません。 いろいろな言語に触れてみたくなる気持ちをぐっとこらえて、1つの言語でとにかく自分のスキルを磨きましょう。 プロゲートで、全言語を突破する事はスキルを高める近道ではありません、断言できます。
なぜそう思うか?
プロゲートで全言語を突破した人はなおさらだと思いますが、
全言語共通して、if
for
while
array
と出会います、細かい書き方やルールは各言語で異なりますが、概ねできるコトや学ぶことは似ていてやり方が違うだけと気がつきます。
突き詰めるとコノ言語は並列処理が表現しやすい等はありますが、その辺りは上級者ゾーンとして現時点は無視で問題ありません。
ではどうすればよいか?
スキルを広く浅く伸ばすのではなく、まずは狭く深く伸ばしましょう。 そのためにはは下記を用いた学習法が効果的です。
どういうコードが価値があるのかを学びましょう。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (140件) を見る
コードを書くためのよりよいプラクティスが紹介されています。 命名のルールやコードの作法、サンプルも豊富です。 私も新卒エンジニアには読むことを勧めています。 「他人にはわからない、自分にだけわかる邪悪なコード」にならないためのエッセンスが詰め込まれています。
オブジェクト指向を学びましょう。
オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
- 作者: 平澤章
- 出版社/メーカー: 日経BP社
- 発売日: 2004/06/03
- メディア: 単行本
- 購入: 34人 クリック: 448回
- この商品を含むブログ (198件) を見る
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz,?山泰基
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: 大型本
- この商品を含むブログ (5件) を見る
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
コードを書き始めたら、どんな設計をするのが良いのか気になりますよね? 私は、10年間エンジニアリングの仕事をする中でRuby/PHP/Java/Python/Golangを仕事で扱ってきましたがいずれもオブジェクト指向の概念はとても役に立っています。
初学者の時は、1つの言語でプログラミングを書き、その言語でオブジェクト指向とはどういうものなのかというのを学び、そして、次の言語を習得する際に、早い段階で応用できると思います。
テストの書き方を学びましょう。
- 作者: Kent Beck,和田卓人
- 出版社/メーカー: オーム社
- 発売日: 2017/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (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!
が表示されます。
dockerに関するオススメ書籍
dockerについて、もう少し勉強したい人にオススメです! 最近は特に流行っているので、抑えておいて間違い無しの技術です♩
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: WINGSプロジェクト阿佐志保
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/19
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
- 作者: 山田明憲
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
次回
次回は、docker on railsを利用した、WEBAPIの実装を書いていこうと思います:)
現役プログラマがおすすめする2018年に読んで良かった技術書籍
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者: Alan A.A. Donovan,Brian W. Kernighan,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
個人的満足度: ★★★★★
golangのチュートリアル突破した後に、プログラミング言語Goを購入した。
体系的に学べるのでとてもよい。
複数ページに渡って例題や、写経する箇所があるのでブックスタンドを利用して勉強するととても捗るのでオススメです!
Real World HTTP
Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術
- 作者: 渋川よしき
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
個人的満足度: ★★★★☆
プログラミング言語Goを読み終えたあとに購入した本です。
タイトルの通りHTTPに関する技術的な内容の本だけど、
golangのサンプルコードがでてくるので、ついでにgolangの勉強にもなる。
みんなのGo言語
- 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太,稲葉貴洋
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/09
- メディア: 大型本
- この商品を含むブログ (4件) を見る
個人的満足度: ★★★★★
これはとても良かった。
タイトル通りに現場感あふれる実践テクニックになっている。
golangは他の言語とは違いフレームワークを使わなくても十分すぎる機能を言語標準の機能搭載している。
そのため、ruby on Railsのようなフルスタックフレームワークはあるものの、APIサーバを作るのであれば、大規模なものであったとしても言語標準のnet/httpというモジュールでルーティングを定義しと後は自由にコントローラ、モデル、ミドルウェアを実装していけば良い。
とはいってもオレオレすぎるフレームワークを爆誕させてしまってもしょうがない。
本書にはnet/httpを利用したサーバアーキテクチャの開発のススメ方や、テスト技法についても触れられている。
とても購入の価値がありました。
テスト駆動開発
個人的満足度: ★★★★★
とても良かった。
何が良かったかというと、これまでテスト駆動開発をやったことがないので、どう進めれば良いのかがよくわからなかった。
先にテストを書くとか巷のインターネッツではみるものの、どう効果的なのか、いまいちピンと来なかったからである。
コードを書き終えたあとにテストコードを書くのと比較してどういう嬉しみがあるの?と思っていた。
答えは本の中にある、本の中には実例として取り組むシステム開発の描写があり、主人公と一緒にテスト駆動開発の手法で課題を解決していくスタイル。
写経しながら、「こうやってテスト駆動開発するのか〜」と感じたものである。
読了以降、実際の仕事でテスト駆動開発を取り言えれたか?というと答えはNoである、
必ずしもテスト駆動開発で進めなければならないシチュエーションってそんなないと思うけど、一つの手法として知っておくのは悪くないと思う。
ブックスタンド
コードを書き写す際にとても重宝しました↓↓実際の写真です↓↓
いちいち本をデスクに置いたりする事もないので、10倍は効率的に写経できます。