TEC EXPERT 体験談

TECH EXPERT体験レビュー2日目|参考になるツイートの紹介や気持ち悪い事の復習

テックエキスパートDay2が終わりました。日曜日ということもあり、午前中は来ている人もまばらでしたが、午後には8割くらい埋まり50人くらいは教室にいました。(そして22時前ですが30人くらいまだ居ます)

やはりこういった環境というのはモチベーションが上がるのでとても良いと思います。

この記事ではday2で学んだ事の復習はもちろんのこと、それだけだとつまらないので、個人的に気になる事であったり良いなあと思った記事などを紹介できればと思います。

今回の記事のトピック

・有益っぽいツイート
・面白かった記事の紹介
・諸々復習(個人的備忘録)

管理人
管理人
ちなみにTECH EXPERTのせい(理解が遅い)で時間があまりないので、記事の書き方は非常に雑です。ご了承ください><

 

プログラミングに関する有益っぽいツイート

本格的にプログラミングを学ぶにあたり、まずツイッターを始めて情報収集をすることにしました。個人的にはいずれの業界においてもツイッターが一番有益な情報収集ツールだと思っています。

シンゲキ
シンゲキ
Qiitaももちろん有益ですが、私のような初心者には難しい言葉が多すぎてそもそも記事のタイトルに興味が湧かないのでまだ早いかなという印象。

そして思っていた通り、さっそくいくつか有益っぽいツイートを見つけましたので備忘録もかねて埋め込んでおこうと思います。

必要なエンジニアって?

昨今声高に「エンジニア不足!」みたいなことが叫ばれ、TECH EXPERTはじめ様々なプログラミングスクールやオンラインサロンなどが出来ていますが、ただプログラムが書ければいいなんて事はあり得ないですよね。

この方のおっしゃる通り、結局発注するクライアントや、自社のフロント部門の人間からの要望を聞いて、それを解決するための最善プランを立てて分かりやすく説明し納得してもらったうえでシステムなりサービスなりを作る必要があると思います。

もし仮にエンジニア=コードを書けるみたいになっていると非常に危ういなと思ったので備忘録です。

業務未経験のWEB系エンジニアが面接で聞かれる事!

恐らく界隈で有名な方かと思いますが、とても評判の良い動画をアップされているようなので今後拝見したいと思います!


プログラミング初心者がやってしまいがちな事

まさに!という感じです。ただエラーメッセージに関してはエラーの箇所が分かっても改善方法がよく分からないというレベルなので研鑽必須ですね。

問題を分割して考えるのは非常に重要だと思います。プログラムは結局1つ1つの固まりが構造化したものだと思うので(分かりませんが)、、ただ問題をどう分割すれば良いのかそもそも分からないという問題はあります。笑

これが本質

プログラミングも同じなのでは。

面白かった記事:SIerって本当にヤバいの? ひろゆきが語る、業界ごと沈まないためのキャリア戦略

SIerって本当にヤバいの? ひろゆきが語る、業界ごと沈まないためのキャリア戦略

2ちゃんねる創始者で有名なひろゆきさんのコラムですが、面白いなと思ったのは以下の4点です。(Sierってそもそも何?というレベルの素人視点ですので悪しからず)

ちなみにエンジニアは大きく2つに分かれるそうで、自社サービスを持つ会社のエンジニアと、SIerで働くエンジニア。で、後者にあたるエンジニアは”今すぐ逃げた方がいい”と語っています。

面白いと思ったポイント

・環境的なインセンティブの有無
・働く市場はどこにするか
・「能力の違い」って大した問題じゃない
・経営者視点

環境的なインセンティブの有無

社内Sierはどこかのクライアントから受注した業務を遂行するだけなので、早く終わらせても良いものを作ってもご褒美は基本的に発生しない。

つまり「より良くしよう」という発想になりにくい、そういった環境に身を置くのは非常に危ないという話。

これはエンジニアに限らないですが、「より良いものをより早く、低コストで」といった工夫をしながら進めるのとそうでないのとでは、最終的に大きな差になって現れると思います。

働く市場はどこにするか

日本は経済が衰退しているので、海外向けに商品を作っている会社にするとか、ドル建てで賃金をもらうようにするとか、そういった工夫があればより豊かになれるというお話。

マーケティングっぽい話ですが、非常に本質的な話だなと思います。日本でも専門とする業界が変わるだけで仕事のコスパも変わりそうですね。

「能力の違い」って大した問題じゃない

ひろゆき氏いわく、コードを速く書けるとか、たくさんの言語を書けるといった問題は本質ではなく、重要なのは“必要な能力をその都度身に付けられること”。

というのもこの世界は、情報のアップデートが非常に早いから。色々な言語を好奇心でもって試していくくらいの人の方がいい。とのこと。

経営者視点

経営者視点に立つと別のものが見えてくる。ユーザーがもっと課金したくなるにはどんなサービスがあればいいのか、どんな事をすれば一過性に終わらず将来につながる作業になるのかなど。

記事を見る

day2復習と気になる事の整理

ここからは個人的な備忘録と自己研鑽エリアです。Day2ではRubyの応用やRailsを使うためのデータベース構築や、ローカル開発環境の整備?などを行いました。

インスタンスってそもそもなんだっけ?

色々やっていると、言葉の定義や役割がよく分からなくなってくるので整理したいと思います。

こちらのサイトの説明が分かりやすかったのですが、インスタンスというのはクラスを具現化した実体のこと。

昨日の記事で、クラスは仕様書みたいなものでインスタンスは印刷の版みたいなものと言っていましたが、そういうことですね。

プログラミング的に言うと、クラスをnewしたもの!つまり一応実体のあるものがインスタンスという理解になります。

しかしそのインスタンスには基本的に可変可能な引数が設定してあり(まあ厳密には自分で設定するだけですが)、その可変部分を埋めていく事で1つ1つのオブジェクトが完成すると言う感じでしょうか。

 

じゃあインスタンス変数ってなんなんだっけ?

次なる疑問がインスタンス変数です。インスタンス変数はRubyでは@nameみたいな感じで記述しますが、このインスタンス変数はクラス内の別のどのメソッドでも使う事ができます。(クラス変数というのもあり、それは@@nameなどで定義)

先ほどの話で、インスタンスは可変可能な部分があると言いましたが、その可変可能にするのがインスタンス変数の役割というイメージでしょうか。

class Ruby 
  def ruby(name) ←classがnewされたら生成 name部分が可変
    @name=name ←可変な部分を受け取るのがインスタンス変数?
  end
end

classがnewされた時に自動的に適用されるのがinitializeメソッド

インスタンスを生成するためにはclassをnewする必要がありましたが、newした時に自動で走るアクションを定義しているのがinitializeメソッドです。

なので先ほどのコードは間違っていてinitializeメソッドがあることによってnewの引数を受け入れることができ、インスタンス変数に数値を入れることができるのです。

class Ruby 

  def initialize(name) ←classがnewされたら生成 name部分が可変
    @name=name ←可変な部分を受け取るのがインスタンス変数
  end
end

today=Ruby.new("今日") ←newが生成されたらinitializeが走り @name=今日というのが取り出せる。

一言で言うとinitializeメソッドというのは、クラスの初期化をして、1個1個数値を入れてオブジェクトも作れるメソッドと言う感じですかね。

 

クラスメソッド、インスタンスメソッドについて

ここまでの話に関連するのですが、Rubyではメソッドという「複数の処理をまとめて一元化した式」があります。

しかしこのメソッドにも大きく分けて2種類あります。それがクラスメソッドとインスタンスメソッドです。

まあ恐らく名前は覚える必要ないのですが、それぞれクラスに対して実行できる処理と、インスタンスに対してだけ実行できる処理という違いがあります。

ちなみにクラスメソッドは「(def)self.メソッド名」という書き方をします

class Say

 def initialize

 end
  
  # インスタンスメソッド
  def aisatsu
    puts "こんにちは"
  end
  
end

# newによってインスタンス作成
hello = Hello.new

# helloというインスタンスなのでインスタンスメソッド「aisatsu」が使える
hello.talk

結局分かりづらいのですが、aisatsuメソッドはselfの付いていないただのインスタンスメソッドなので、newで1回インスタンスを作ってからじゃないと使えないということなのです。

参考記事:https://qiita.com/right1121/items/c74d350bab32113d4f3d

 

attr_accessorってなんやねんというお話

attr_accessorはゲッターとセッターを同時に定義することができる便利なものです
引用:https://www.sejuku.net/blog/14168

意味わからないのでちょっと噛み砕いて理解したいと思います。ちなみにこの項目のコードは全てこちらの記事から拝借させていただいております。

ゲッターとは?

ゲッターとは下の図のように、そのままだと持ってくることができないインスタンス変数を外に取り出すことができるものです。(インスタンス変数は同じメソッド内なら使い回しできますが、オブジェクト単位では使い回せないのでゲッターがないとダメなのです多分)

追記;通常はインスタンス変数はオブジェクトからは直接使えない(human.@nameなどはできない)ため下記のようなインスタンスメソッドを作って定義する必要があるが、ゲッターがあればこれを省略することができる。

def name puts @name end (メソッドを使う方法は .メソッド名なのでこれでいける。

ちなみにこのゲッター本当はもっと複雑っぽい

ちなみにアクセサリーダー(ゲッター)ですが、本当はもう少し面倒臭いっぽくて、テックアカデミーの記事によれば下記のような書き方をするそうです。参考:https://techacademy.jp/magazine/18768

class Book
  def title
    @title
  end

もはや暗号のような感じですが、attr_readerを使わない場合は、別のメソッドでこのようにする必要があるようです。

セッターとは

先ほどゲッターでインスタンス変数を外でも使えるようにしましたが、実はゲッターだけだと、そのインスタンス変数を外から書き換えることができないのです。

そしてそれを可能にするのがセッターの役割です。

ちなみにこのセッターも本当はもっと複雑

先ほどのゲッターと同様にセッターも本当はもう少し面倒な書き方になっているようです。

def title=(val)
    @title = val
  end
end

本来はセッターはこのようにして定義することで書き換えたりできるようになるそうです。まじでよくわかんないですね、、。

ゲッターセッターの役割を1文でやってくれるのがattr_accessor

で、こんな面倒なゲッターセッターを1文書くだけでやってくれるのがattr_accessorなのです。(読み方分からないので”後取りアクセスor”と読んでいます)

ということで後取りアクセスが非常に有難い存在ということが分かりました。

管理人
管理人
ちなみにTECH EXPERTではこの辺の説明を吹っ飛ばして最初は、あの呪文のようなゲッターセッターを書かされるのでマジで意味が分かりません。今まとめてようやくわかりました::(めちゃくちゃぐぐりました)

 

プログラム書く際の考えかた

管理人
管理人
もう力尽きたのであとは適当です・・・

・プログラムに登場するものを考える
・それぞれの要素に対応するクラスを用意する
・動作を行うメソッドをつけてやる

 

Dateクラス

Date.new()と記載すれば日付を取得できる!!

Dateクラスの利用には require “date”が必要!

self.nameとかで自分の返り値を受け取れる

rubyではselfを使うことでそのオブジェクト自身の内容を取得することができます。

時間がないのでテックアカデミーの記事に記載のコードをそのまま記載します。(ここではしっかり後取りアクセス使ってますね!)

class User
  attr_accessor :name

  def initialize(name)
    # self.nameに引数name を代入する
    self.name = name
  end
  def my_name
    p "私の名前は#{self.name}です。"
  end

  # クラスメソッド
  def self.description
    # この場合のselfの扱いは、 Userオブジェクトではなく、Userクラス
    puts "#{self}クラス"
  end
end

# Userのオブジェクトを生成し、引数で名前を与える
user = User.new("煌木太郎")
user.my_name

# クラスメソッドの呼び出し
User.description

このように代入の代入などをしたい場合にself.と書くと自分で自分の数値をゲットすることができるのです。

CSS:display:flexが非常に便利

かつては要素を横並びにする場合はfloatなどを使って、かつ結構難しめの記述をしてはじめて実現していましたが、flexを使うことで非常に簡単に横並びが可能です。

参考記事を貼っておきますのでこちらでご確認ください。

【CSS】Flexboxの使い方を徹底解説!基本から実践まで(サンプルあり)

 

Day2まとめ

ということでDay2の学んだことや、自分的に不明瞭だったことをまとめてみました。Day1よりも理解が進んでいる感があるので、この調子で続けていきたいと思います。

(ちなみに今日はRailsもやったのですが、このブログにアウトプットする時間がなかったので、不明点などはまた明日整理します)

またこうやってブログにすることで、かなり密度の濃いアウトプット&思考の整理になるので、何らかの形で自分の言葉で言語化するのは 控えめに言って非常におすすめです。

管理人
管理人
それではっ!疲れた・・・
おすすめ記事
  • おすすめの投稿がありません

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA