スクールを卒業しました
2018/11/12 16:13
こんにちは、fujjimaです。
タイトル通り、通っていたプログラミングスクールを卒業しました。
あっという間の3ヶ月でした。1日当たり10時間程はプログラミングに触れていたので、少なくともこの3ヶ月で「20日×10時間×3ヶ月=600時間」程はプログラミングに触れていたことになります。
まあ、学んだことを全て覚えているわけでもありませんが、それでも検索の仕方や課題解決の方針の組み立て方、あとは問題の切り出し方など、独学だと習得が難しい範疇についても学ぶことが出来ました。
前職はSierだったので、システム開発に関して主に堅牢性・安全性を優先した設計手法には触れていましたが、スクールでの開発では、どちらかというと「パフォーマンス・可読性」に重きをおいて実装していくことが多かったと思います。
この辺は地味にカルチャーショックでして、積極的にgemを活用して実装の負担を減らしてみたり、コードを1箇所にコントローラに集中させずにデコレータやconcernに退避させてみたりなど、この3ヶ月は「コードの品質をあげる」ことを意識していました。
そして、転職活動の方でも内定を頂けたため、「転職先が決まらない…」という状況は避けられました。この辺は、前職もIT企業だったことがけっこうプラスに働いたのではないかなと思います。
これから「仕事」というフィールドでプログラミングするにあたって、もちろん壁だらけだとは思いますが、とりあえず自分のベストを尽くしてみようと思ってる次第です。
ひとまず、転職先の会社さんでも1日でも早く実績を出して、規模の拡大に貢献出来るようにスキルをひたすら伸ばしていきます。
ではまた(´ω`)
現状について
2018/10/07 01:52
こんにちは、fujjimaです。
10月ですね、涼しかったり暑かったりなどで服に悩みますね。
僕は今、毎日私服なので余計に悩みます。スーツはある意味では楽でしたね、考える必要なく会社に着ていけば良かったので。
さて、今日はプログラミング学習の現状について書いていきたいと思います。
結論から言うと、スクールに通って下記のようなことが出来るようになりました。
・Railsを用いた基本的な、本当に簡単なアプリの開発
・Ajaxを用いたViewの非同期通信化
・コントローラに処理が集中しないようにデコレータやヘルパー、scopeを用いて処理を分散することでコードの可読性を上げる対応
・bootstrapを用いた簡単な画面作成、管理画面の作成
ざっとこんな感じです。特に「Ajax化、管理画面作成、処理部分の分散」とかは独学だけだと難しかったと思うので、スクールに通って良かったなと強く感じます。
ただ、1個だけ想定外の事項があって。
チーム開発に関して結構、後悔しているというか、今は個人開発の方がいいかな、と思うようになっています。
割とどこのスクールでもそうだと思うんですが、カリキュラム終盤で「3〜5人ぐらいでチーム開発を行う」という課題が与えられます。(自分のところは3人体制です)
んで、問題が「僕の実装速度が他の2名と比べて遅い」ことなんですよね。
これのどこが問題かと言うと、他の方を作業待ちにさせてしまうことがあるんですよね。
作業間に順番が設定されているために、僕の実装が終わらないと次に進めない、という状況が発生するケースがありました。(というか現在進行形で起こっています)
恐らく僕以外のチームの方であれば一瞬で終わらせるような実装内容なので、時間がかかってしまうのがひたすら申し訳ないです。
罪悪感と情けなさで押し潰れそうなんですが、ひとまず、自分の実装速度でも遅れが出ない範囲まで担当範囲を減らすように調整してみます。
それでも難しい時、もしくは「それぐらいの実装量だったら、分割する意味がない」とかご指摘を受けた場合は、 また別の方法(いっそチームから外れたり…)で対応しようかなと。
最後、暗い話になってしまいましたが、あと1ヶ月足らずで卒業なので、アクセルかけて取り組んでいきます。
それではまた。
退職して2ヶ月か…
2018/09/26 00:25
こんにちは、fujjimaです。
スクールに通い始めたのでブログの更新頻度を増やしますと言いましたが、気づけば2ヶ月経とうとしていました。早いっ♪( ´θ`)
今、スクールではRuby on Railsを用いたアプリ開発をしているわけですが、いかんせん一から何かを作るって大変なんだね、と実感しているところです。
ただ、前職であったような「人の事情を視野にいれつつ、自分の事情も伝わるようにする」という、人間関係的な悩みが一切ないのは本当に助かります。
今だと、あくまで「〇〇が出来ない」というぐらいの悩みが発生しないので…
そこに関しても、検索しながら試行錯誤し、どうしても詰まったら第三者に話を聞いてみることで解決策は見つかるものです。
それに、出来なかった部分をなんとかして期待通りの動きになった時は喜ばしいです。
スクールはあと1ヶ月ですが、出来る限りのことをして転職を成功させたいと思います。
ではまた☆彡
退職について
2018/08/05 00:54
こんにちは、というかお久しぶりです。fujjimaです。
twitterとかでは公表していたんですが、7月末で正式に会社を退職致しました。
新卒で入社したので、2年4ヶ月程お世話になりました。
会社の規模が大きいこともあり研修といった教育の環境は充実していたため、ITの「あ」の字も知らない私でもSEとしての基本を学ぶことが出来たと思います。
それでも最終的に退職という手段を選んだ理由などは、まとめてまた別の機会に記事にしようと思います。
8月以降は、プログラミングスクールであるRUNTEQさんに三ヶ月程お世話になります。
まだ通って1週間経っていませんが、課題に対して自分でひたすら考えて解決策を模索する楽しさを久しぶりに満喫しています。
転職して次の職場で働き始めるのは11月、12月頃になるかと思います。一応その間はなんとか貯金は持つとは思うので、節約しながらひたすらプログラミングの勉強をしていきます。
しばらくは会社に追われない生活をすることが出来るので、ブログの更新頻度は増やすように気をつけます。
それでは、またお会いしましょう。
追伸:
この記事は、"そこに鳴る"さんの「掌で踊る」を聴きながら書いていたんですが、かっこよくて震える曲なので聴いてみてください。
railsチュートリアル2週目 学習メモ 1章〜3章
2018/06/17 02:20
こんにちは、fujjimaです。
railsチュートリアルが一通り終わったんですが、正直5,6章あたりから読み飛ばすところが増えてきて、いまいち理解しきれていなかったので、1章から一つ一つ理解しながら復習を行うことにしました。そこで、疑問に思っていたところや詰まっていたところを、参考にさせて頂いたサイトと合わせて、備忘録としてまとめてみました。
※かなり雑にまとめているので、後々加筆修正が多分入ります。
1章
<railsインストール>
■bundle,Gem周り
・bundleとはなんぞや
・GemfileとGemfile.lockって何が違うのか
■pumaとは
参考:
■排他処理とは
参考:
» Ruby/Railsでロックファイルによる排他制御 TECHSCORE BLOG
■webrickとは?
参考:
WEBrickを使ってみよう! | Think IT(シンクイット)
<controllerファイル>
■Action Controllerとは
railsにおける「MVC」の概念の内、"C"に相当するライブラリの一つ。
railsのコントローラは基本的にこのAction Controllerクラスを継承している。
参考:
Action Controller の概要 | Rails ガイド
■Application Controllerとは
参考:
Railsで共通メソッドの作り方 - 線路は続くよどこまでも。
■コントローラとは
コントローラはユーザーからのリクエストを受け取り、モデルやビューなどと連携し結果をユーザーに返す役割をする部分。
参考:
コントローラとアクション - Ruby on Rails入門
■renderとは
テンプレート表示のためのメソッドであり、contoroller,view両方で使用することが出来る。(ただし、それぞれの場合で使用方法が若干異なる)
参考:
render - リファレンス - - Railsドキュメント
rails renderの基礎から使い方まで(partial, 引数) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
■routes.rbファイルとは
HTTPで送信されてきたリクエストを適切なコントローラのアクションに割り振る役割を持っている。5種類のアクションがある(get,post,delete,puch,post)
参考:
【完全入門】Ruby on Railsのroutesについてわかりやすく解説してみた! | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
2章
■リソース
データモデルとwebインターフェイスが組み合わさったもの。
- データモデルとは 現実世界のあるモノを分類/抽象化して落とし込んだカタマリ (より具体的にいえば(今回の文脈では)「RDBMSに則って設計されたデータ群」と同義)
-
webインターフェイスとは
データモデルをwebで取り扱えるようにしたもの
→つまりリソースとは、
HTTPプロトコル経由で自由にCURD(作成/読み出し/更新/削除)できる
(分類された)データ群
参考:
Railsを支える基本概念の整理(RESTfulやリソースなど)
■scaffold
- モデル、コントローラ、ビュー、ルーティングなどをまとめて作成し、雛形を作成してくれる
- 作成したモデルに対して、各カラムの名前及びデータ型(int型とかString型とか)を指定できる
- 各種webページを自動で作ってくれる(対応アクションはindex,show,new,edit)
- コマンドの書式は下記のような感じ
rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型 2 …
- 自動的に作成されるコントローラファイルは下記のような感じ
※長いので一部省略してます
class UsersController < ApplicationController . def index . enddef show
.
enddef new
.
enddef edit
.
enddef create
.
enddef update
.
enddef destroy
.
end
end
※この時、モデル名はリソース名の単数形にする(例:リソース名=Users,モデル名=User)。これは、railsでは、モデルが設計図という概念である(=設計図から作られたものでなく、あくまで設計図そのもの)と前提に置いており、概念は複数形には出来ないためである。一方、リソース名は上記の通り自由にCRUDできるデータ群なので、複数形となる。
参考:
超便利!Ruby on Railsのscaffoldの使い方 | TechAcademyマガジン
Railsを支える基本概念の整理(RESTfulやリソースなど)
↓なぜモデル名が単数なのかについての参考
"rails generate scaffold modelname"でモデル名を単数にする理由について · Issue #94 · yochiyochirb/meetups · GitHub
■ resources
routes.rbファイルで使用され、自動でRESTFULなルート定義を設定する。
"rails routes"コマンドでHTTPメソッド(Verb列)とURLとアクションが紐づいたルート定義が生成されていることを確認出来る。
なお、HTTPメソッドはリソースに対して行われるものなので、対象のリソースを指定する。(resources :usersのように)
参考:
【Rails入門】resourcesの使い方まとめ | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
■インスタンス変数(@が付く変数)
インスタンスごとに値を持つ変数。
参考:
変数の種類を知っておこう!Ruby変数のスコープの使い方 | TechAcademyマガジン
【Ruby入門】Rubyのインスタンス変数とクラス変数 | UX MILK
↓インスタンス、クラスの概要をざっくりと分かりやすく解説してくれています
クラスメソッドとインスタンスメソッド - mic_footprints
■validates
バリデーションは、正しいデータのみをデータベースに保存するために行われる。
例えば下記のような部分がバリデーションである。
class Micropost < ApplicationRecord validates :content, length: {maximum: 140} end
validatesで文字列の長さを検証する時の使い方は以下のようになる。
validates(検証するフィールド名, :length => 検証パラメータ)
今回で言うと、下記のようにvalidatesを使用していることが分かる。
検証するフィールド名 = :content(シンボル)
:length => 検証パラメータ = length: 検証パラメータ(ハッシュ構造のデータ型の代入)
※ここで、":content"と" maximum: " にそれぞれ付いてる" : "の位置の違いがとても気になったので、■ハッシュとシンボルに別枠としてまとめた。
参考:
Active Record バリデーション | Rails ガイド
validates - リファレンス - - Railsドキュメント
■ハッシュとシンボル
【シンボル】
文字列に見えるが内部は数値。Symbolクラスのオブジェクトであり、同じ表記のシンボルなら、必ず同じオブジェクト※を指す。
本当にざっくり言うと、":content"のように文字列の前に":"が付いていたらシンボル。
ただし、代入の際は":"は文字列の後ろに来る。下のようなパターンはまさにそれ。
fruites = {apple: red, grape: purple} #ここで代入 puts fruites[:apple] #redと表示 puts fruites[:grape] #purpleと表示
※ここで、「オブジェクトとは?」と思った人は下の「参考:」内にあるリンク先をみて下さい。
【ハッシュ】
キーと値を組み合わせて保持するデータ構造。配列が開始番号をゼロとした要素番号でしか要素の指定が出来ないのに対して、「○○なら××」というようにキーに対する値と言う形で値を管理できる。まぎらわしいが、下のようにシンボルを使ってハッシュを作ることも出来る。
user = {:user1 => "ユーザー1", :user2 => "ユーザー2"} #ここでシンボルに代入している puts user #表示は右の通り {:user1=>"ユーザー1", :user2=>"ユーザー2"}
参考:
↓シンボル
[Ruby] シンボルとハッシュ - mikanmarusanのブログ
↓ハッシュ
【Ruby入門】ハッシュ(hash)とシンボルの基本 | 「ポテパンスタイル」
↓シンボルの詳細な理解に関しては以下を参考にして下さい
Ruby on Rails 入門のための知識 1(シンボルとハッシュ) - OnsenとRuby
↓シンボルのちょっと難しいやつ
Railsでよく出てくるコロン(:)は、シンボルって言うやつらしい | JavaからのRuby on Rails入門
↓オブジェクトについて
rubyにおけるオブジェクト指向とはなにか(๑•̀ㅂ•́)و✧【基礎】
■has_many,belongs_toの関連付け
そもそも関連付けとは、テーブル同士に関係があることを示すためのもの。
belongs_toとhas_manyの二つがあるが、それぞれ下記のような使用法となる。
・belongs_to:
参照元テーブルから参照先のテーブルのデータの情報にアクセスすることが出来る
ようにする→参照元と参照先の関係を明示する
・has_many:
1:n (nは任意の整数) の関係を表す。例えば一つのオブジェクトに対して、
複数のオブジェクトが存在していることを明示できる。
※has_many関連付けを使用する場合、相手のモデル名は複数形にする必要がある
参考:
↓関連付けの基本
【Rails入門】has_many、belongs_toの使い方まとめ | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
【Rails初心者向け】モデル間の関連付け(アソシエーション)まとめ
■継承
rubyの継承では、「親クラス」のメソッド、カラムを使用することが出来るようになるため、コードの量を減らすことが出来る。
参考:
実際の業務で役立つ!Rubyでクラスを継承する方法 | TechAcademyマガジン
↓継承とかオーバーライドとか
Rubyの継承とオーバーライドについてまとめてみた | JavaからのRuby on Rails入門
ざっと2章はここまで!
3章
■README.md
参考:
■heroku,githubコマンド
ここだけは注意!!/////////////////////////////////////////////////////////////////////////////////
今後Herokuで何らかの本番アプリケーションを運用する予定があるなら、7.5のproduction用Webサーバーの設定に必ず従ってください。
////////////////////////////////////////////////////////////////////////////////////////////////////////////
参考:
↓herokuにデプロイしたアプリを消す時
■rails g controller 〜 コマンドについて
rails generateコマンドの一種である。ファイルの自動生成コマンドであり、"generate"部分を"g"に省略可能である。どういったファイルが生成されるのか、については「参考:」にあるリンク先のサイト様を参照して下さい。とてもきれいにまとまっています。
今回で言うと、"rails g controller〜"だと以下のファイルが生成されるそうです。
・コントローラ
・ビュー
・アセット(参考: にアセットについてのリンク先を載っけています)
・ルート
・テスト
・ヘルパー
ちなみに、下にコマンドの実行結果を載せました。
create app/controllers/static_pages_controller.rb route get 'static_pages/help' route get 'static_pages/home' invoke erb create app/views/static_pages create app/views/static_pages/home.html.erb create app/views/static_pages/help.html.erb invoke test_unit create test/controllers/static_pages_controller_test.rb invoke helper create app/helpers/static_pages_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/static_pages.coffee invoke scss create app/assets/stylesheets/static_pages.scss
参考:
いつも忘れる「Railsのgenerateコマンド」の備忘録 - maeharinの日記
↓アセット
■マッピング(routes.rbファイル)
1章でも出てきたroutes.rbファイルについて、中身の詳細な書き方を調べました。
※ちなみに下記の①、②の書き方では同じ結果となった。
①get 'static_pages/home', to: 'static_pages#home' ②get 'static_pages/home'
参考:
↓個人的に気になったアクションとビューの対応について
■テスト
RSpecを使わない素のテストコードの書き方で、下の2種のテストを行う。
・unit test (モデルのテスト)
・functional test(コントローラ+ビューのテスト)
「■rails g controller 〜」で実行したコマンドで作成されたテストファイルが下記のようなもの
require 'test_helper'class StaticPagesControllerTest < ActionDispatch::IntegrationTest
test "should get home" do
get static_pages_home_url
assert_response :success
endtest "should get help" do
get static_pages_help_url
assert_response :success
endend
参考:
↓RSpec使わないテストの基本的な考え方
Ruby on Railsのテストの書き方 (モデルの単体テストと,コントローラの機能テスト) - 主に言語とシステム開発に関して
Railsのテスト | Rails日本語ドキュメント | Ruby STUDIO
●assert_select
2つの書式があり、セレクタで指定された要素が条件に一致する場合と、選択された全ての要素が条件に一致する場合である。
今回でいうと、about.html.erbファイル内の<title>タグ内に"About | Ruby on Rails Tutorial Sample App"と一致しなければテスト結果で「Red」となる。
※下のコードは"static_pages_controller_test.rb"内のAboutアクションに関するテスト部分である
test "should get about" do get static_pages_about_url asse_response :success assert_select "title", "About | Ruby on Rails Tutorial Sample App" end
ちなみに<title>は、ブラウザのツールバーの表示されるタイトルのことである。
参考:
↓公式リファレンス
↓assert_selectの基本的な使い方(分かりやすい!)
assert_selectの使い方 - ザリガニが見ていた...。
■埋め込みRuby
●provide及びyeildについて
provide関数(<% provide(:title, 'Home') %>)を使ってViewからLayoutにデータを引き渡すことが出来る。今回は一つのhtmlファイル内で呼び出しているが、これも同様の使い方だろうか。
yieldに関しては、「レイアウトを使う際に、/static_pages/homeにアクセスするとhome.html.erbの内容がHTMLに変換され、<%= yield %>の位置に挿入される、ということだけ理解しておけば問題ありません。」との記載。
●application.html.erbについて
上で疑問に思って点が説明されていた。背景としては、「home,help,aboutの3つのファイルがあるけど、ページの内容とかタイトルとかほぼ一緒だよね?まとめようぜ」という感じ。
application.html.erbファイルに共通するコード部分を書いておいて、各ファイルで異なる部分に関しては"yield"を使って引数を与えてみたり、個別のhtmlファイルを引っ張ってきたりする感じかな。
参考:
Railsでビューのレイアウトを指定する - Rails Webook
■(発展)minitest reportersについて
テスト結果をプログレスバーで表示してくれる。gemでインストールして使用する。使用方法に関しては「参考:」のリンク先を参照のこと。
参考:
GitHub - kern/minitest-reporters: Create customizable MiniTest output formats.
【GW企画part1】出身地ネタ
2018/05/03 17:24
みなさんこんにちは、fujjimaです。
GWですが、僕は幸い9連休でしたが半分が終わりました。仕事の5日間は長いのに休日の5日間は短くてとても悲しいです。もっとも、あと40年ぐらいは同じことを言ってそうですが…
さて、前回のブログでGW中にやりたいこととして「ブログを3記事書く」ようなことを言っていたんですが、ペース配分をミスり、後半に詰め込む形になりました。これも詰め込み型教育の弊害ですかね。
突然ですが、画面前のあなたのご出身はどちらでしょうか?
東日本ですか、西日本ですか。はたまた海外というエキセントリックなピーポーでしょうか。
私は、イギリスです。
嘘ではありません、日本語しか自信を持って話せませんが、事実なのです。
あちらで生まれ、小学生の間に日本に来た次第です。
ですのでイギリスにいたのは短い間でしたが、そんな中でも「日本と違った」と感じることは多々あったので、いくつか紹介していきたいと思います。
- 浴槽内で体を洗う
まあ、これがダントツでしたね
イギリスでは浴槽内で体を洗っていました。なので入浴中の浴槽内は泡泡です。
ともすればジャグジーっぽい見た目ですが、ただの泡です。そこまで金持ち
ではないです。
日本でこれやったら、間違いなく排水溝が詰まりますね、なんでイギリスでは
大丈夫だったんでしょうか。
- 牛乳がプラスチック容器らしきもので売られている。
紙パックでは売っていません、プラスチックらしき容器です。
プラスチックよりは若干柔らかい材質だった気もしますが、少なくとも紙では
ありません。ただ、プラスチックか聞かれると多分プラスチックとしか言えず、
ここまでプラスチックに無力感を覚えたのは初めてです。
- 夏は夜まで明るく、冬はすぐ暗くなる
緯度が高い国では当たり前になっている現象ですが、太陽と地球の位置関係上、夏は
21時ぐらいでも日本の夕方並みの明るさで、冬だと16時で真っ暗になります。
慣れればなんてことはないですが、旅行などで赴いて初体験した場合、新鮮さを
存分に味わえるでしょう。
- 髪を洗うと、髪がゴワゴワする
イギリスは硬水地域です。硬水で髪を洗うとゴワリ、パサつき、そして傷みます。
ちょっと検索すればいくらでも出てきますが、硬水にはミネラルが多量に
含まれており、これが髪のタンパク質によくない影響を与えます。
そんな環境ですので、イギリス人男性は基本、薄毛の方が多いそうです。日本の
ようにストレスで薄毛になるよりかは健全ですかね(・ω・)
石鹸の泡立ちも悪くなるので、旅行などで硬水地域に行く際は硬水用のシャンプー
や石鹸を持って行くことをお勧めします。
ざっと、身の回りで感じたイギリス特有のものはこんな感じですかね。あとは習慣的に、3日に1回ぐらいしかお風呂入らないとかね。
多分、ほとんどの方が「どうでもいいわ」とお思いのことだと思います。
ここに書いてあること以上の感動を得たい方は、是非とも一度イギリスに行って下さい。有名なフィッシュ&チップスも、本場のパブ(居酒屋的なところ)で食べればめっさ美味しいし、硬水で入れた紅茶も一度飲んでみるといいと思います。ただ個人的に、walkersというポテトチップスがあることがイギリスの最大のメリットだと感じています。
あとは、コメント等で「イギリスではこれってどうなの」的な質問があれば、分かる範囲でお答え出来ればと思います。(制度的なことは、僕が住んでた時とえらい変わってると思うので、キラーパスとなります。ご注意下さい)
それではまた٩( 'ω' )و
私の半年のプログラミング学習の変遷
2018/04/30 17:07
こんにちは、fujjimaです。
今、プログラミングの学習をしております。
始めてから半年程度なんですが、学習の変遷は下記の通りです。(分かりにくいですが、当時の心情→その時の行動というような形式で時系列で並べてます)
業務でJava使ったけど、調べたら至る所で使われている言語らしいぞ!
これ勉強したら他のとこでも使えるスキルが身につくぞ!→Javaを書籍で学び出す
↓
あかん、Javaだと完成形のイメージが湧かん…→モチベーションが下がり、勉強が一時中断する
↓
とりあえず、アウトプットのイメージが分かりやすいHPを自分で作ってみよう!→HTML,CSSを学び始めて、TOPページ・プロフィール・略歴を載せただけの手抜きなHPをなんとか作ってみる
↓
やっぱりサーバーサイドの言語が出来ないと、サービスなんてろくに作れないらしいし、どれか一つでも言語出来ないとなぁ…→友人の紹介で知った「Ruby」の手軽さ・コードの読みやすさに興味を持ち、Progateを使って学習を始める
↓
Progateを何周かして、なんとなくRuby,Ruby on railsの概要を知ることはできたし、意外とちょろいな→友人から「Progateよりも難しくてためになる教材」ということで、”Railsチュートリアル”を紹介され、とりあえずやってみる
↓
Ruby,Ruby on railsの深淵に触れ、恐怖で震える。←今ここ
整理してみましたが、Javaはもう少し、webサービスとまではいかなくても簡単なツールとか作ってみるまで勉強を続ければよかったかなと思います。
そんなわけで、今はRuby,Ruby on railsに集中して取り組んでいます。
目標としては自分のサービスをリリースすることですが、自分一人でやっていくのか、はたまた流行りのスクールに通うことになるのかは現在考え中です。
それではまた!