酒とギャンブルと俺と妻

なんでもかんでもみんなブログで綴っているよ

【祝】内定決まりました!

32歳から未経験でWEBエンジニアへ転職しようとしています。
有益な情報ありましたら何でも教えてください!(パソコンを閉じて)

な、なんと、、、!
内定頂きました!!(最終的には5つ)
その中から受託と自社開発を行っている会社に決めました!
物凄い良い環境だと思うので本当に嬉しい!

本当に良かった。。。。
https://publicdomainq.net/images/202101/28s/publicdomainq-0052449sct.jpg

昨年の2月末に辞め、3月1日入社になったので
ちょうど丸々一年の転職活動でした。

今までで思った事とやった事をまとめる事で
少しでも転職活動の参考になればと思い書こうと思いました。
あくまで個人的な感想です、参考程度に。

ちなみに私の経歴は簡単に言うと
前職では独立系SIerにて設計業務を中心に行っていたシステムエンジニアです。
※開発、検証も一通り行っていた、が汎用機系言語。
それよりも以前はwebマーケティング職なので
今回の転職活動では経歴として評価されなかったと思う。

転職の経緯はですね
これからエンジニアとしてキャリアを積むことを考えると
特定の技術、システムに詳しくなるばかりで
課題に対して汎用性が高い技術力を持って解決するという
なりたいエンジニア像に遠のくばかりだなと思ったのがキッカケです。

色々調べてみると自社サービスの開発職だと
新しい技術にも挑戦でき、サービスの成長を考えた設計や開発ができると
目にしたのでなりたいエンジニア像に近づけると思い
自社サービスの開発職を目指す事にしました。
そんでもってSESやSIerでは技術力が身につかないので行きたく無いと思ってました。
※今はSESやSIerでは技術力が身につかないだなんて全く思いません。
転職活動をする中で色々な素晴らしい会社さんに出会い変わりました。
重要なのでもう一度言います。
SESやSIerで技術力は身につくし
自社サービスしか技術力は身につかないという事は絶対にありません。
むしろですね最新の技術に常に携わりたいと考えるなら
SESやSIerが一番携わる機会が多く
自社サービスと言ってもレガシー且つ新しい技術を取り入れられない環境はあります。
注意点としては会社によると言う話です。
なりたい方向性を明確にし、どんな企業であっても面接時に徹底的にココは確認したほうが良いと思います。

転職活動の流れは下記です。
ポートフォリオ作成
②求人サイトから応募もしくは直応募

選考を通りやすくするためポートフォリオを作成しました。
ポートフォリオ作成では
某オンラインサロンに入会し
推奨されるポートフォリオ要件に沿って開発進めました。
他の方のポートフォリオを参考にしながら開発を行え
結果的に評価される機会が多く、本当に助かりました。

次に応募時に使った求人媒体は5つです。
Wantedly
・Green
・type
Indeed
・Paiza
個人的な感想として
Wantedly、Paizaは選考を進めにくかったです。
(改善の余地は第三者が見たらあるかもしれませんが)
逆にGreenとtypeは選考が通りやすいという印象でしたし
入社を決めた企業もGreen経由でした。
そして今はエンジニア志望の増加、コロナ渦の影響もあり競争が激しいです。
個人的には応募の少ない且つスキルアップができそうな企業を
私が聞いた話ですよ、聞いた話ですよ
typeやdodaといった昔からある求人媒体で探すのが
開発経験も積めて良い環境に転職を成功しやすいと聞きました!
またwantedlyは応募する人が多く、スタートアップの求人が多く即戦力を求める企業が多いとも聞きました。
競争が少ない場所で戦略を立てるのもアリだと
個人的には思いましたので共有します。

反省点は5つあります。
①面接対策
ポートフォリオのアプリケーションについてのPR
③コーディングテスト対策
オブジェクト指向型言語の理解
⑤webアプリケーションの知識

面接対策を詰めないまま転職活動を行っていたので
受け答えがハッキリしなく印象が悪くなってました。
※今なら当たり前の結果だと思います。
特に対策しておくべきだった点は
・入社後に再現性のあるスキルアップ方法。
 ▶︎どんな風になりたくて、実現するために携わる業務、そこからどういう風にキャッチアップしていくかといった
  再現性のあるスキルアップ方法を具体的に考えているか。
・貢献できる事。
 ▶︎今までの経験を通じて会社に貢献できる事、業務内容に沿ってなぜ貢献できるかまで考えて。
  再現性の高いレベルまで落とし込む事はマスト。
・現在、学習している事。
 ▶︎これからを考えた時に足りない箇所をなぜ優先的に学んでいるか。
・一貫性のあるキャリアプランと志望動機
 ▶︎将来から逆算した現在に必要な環境である事、それが志望動機ですと言えるまで。
基本の対策は下記動画を参考に。
www.youtube.com

ポートフォリオで開発したアプリケーションのアピールポイントが無かった。
コンセプトに力を入れていて、ありきたりな機能か検索すれば出てくるコピペし修正するような実装しかしていなかった。
1つの機能を自分なりに設計し実装すれば良かったなと今では反省。
実際、面接の場で問われる機会が多かった。
コンセプトも超重要だと面接を通じてわかったので
行きたいサービス業種が明確な場合は合わせて開発するのはマスト。
できれば現状の課題を解決しユーザーを想定したUIや機能を実装したアプリケーション。

フルスタックフレームワークの恩恵に乗っかりすぎて
言語を使ったアルゴリズム開発力が乏しかったのでコーディングテストに苦労した。
一通りの言語知識とpaizaでせめてBランクぐらいにはなっとくべきだった。
※今ではBランク以上を取得
オススメの書籍はこちら。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon

Amazon.co.jp: なっとく!アルゴリズム eBook: アディティア・Y・バーガバ, 株式会社クイープ, 株式会社クイープ: Kindleストア

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) | ミック |本 | 通販 | Amazon

オブジェクト指向型言語での経験が乏しく
概要も分からない、大きな仕様も分からない、結果あなたは何の言語で開発したの?状態。
これもフルスタックフレームワークの恩恵の乗っかりすぎた弊害。
ある程度は理解した方が良かったし、少しのデザインパターンも理解しておくべきだった。
実際、面接の場で問われる機会が多かった。
オススメの書籍はこちら。
オブジェクト指向でなぜつくるのか 第2版 | 平澤 章 |本 | 通販 | Amazon

オススメのページはこちら。
morizyun.github.io
language-and-engineering.hatenablog.jp
ysk-pro.hatenablog.com
qiita.com

ポートフォリオの開発ばかりに気を取られ
枝葉の部分でしか知識が無く浅かった。
そもそものwebとは何か、どうやって成り立っているのか、またそのために何が必要なのか。
アプリケーションはどんな構成で動いているのかといった基礎的な箇所。
家を建てる仕事に就きたいけど、家がどうやって建てられて、どんな箇所を気をつけなければいけないか分からないけど
熱意だけはあります!仕事をください的な。
要するに仕事をお願いするには怖いレベルだった。。
オススメの書籍はこちら。
Amazon.co.jp: Webを支える技術 ―― HTTP,URI,HTML,そしてREST WEB+DB PRESS plus eBook: 山本 陽平: Kindleストア

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版 | 大澤 文孝, 玉川 憲, 片山 暁雄, 今井 雄太 | 工学 | Kindleストア | Amazon

ここまでをまとめると
①志望する業種に関わるコンセプトで自身で考えたこだわりの機能を実装したポートフォリオを作成。
 ※技術要件は少し調べれば出てくるのでそちらを参考に。
②一貫性のあるキャリアプランと志望動機。
 再現性のある問題解決事例、スキルアップ方法、貢献できる事。
③アプリケーションに必要な基礎知識。
 言語、ミドルウェア、web技術、ネットワーク、コーディングスキルなど。
④転職活動の戦略。
 達成したい事、使用する媒体選定、業界と企業分析などに基づいた行動計画。
以上を準備して転職活動に望めば
私みたいに長期間活動する事なく内定に辿り着けるのでは無いかと思いました。
厳しい現実ですが企業側からは現状のスキルと経歴で判断されますし
人柄はこの上に成り立つ評価です。
きちんとココを認識しつつ素晴らしい企業と巡り会えること願ってます!

参考になれば幸いです。

それでは、また!

【RDBMS】データベース概要

32歳から未経験でWEBエンジニアへ転職しようとしています。
有益な情報ありましたら何でも教えてください!(パソコンを閉じて)

ポートフォリオでWEBアプリケーションを開発していて思ったんです。
アプリケーションフレームワークであるRailsを使いこなせれば
WEBアプリケーション開発なんて余裕だろうと思ってたんですが。。。
違う!!

アプリケーションってざっくりね、ざっくり説明すると下記のような構成だと思うんです。
WEBアプリケーション
 ーデータベース
 ーバックエンド
 ーフロントエンド

データベースがあって、Railsでバックエンド処理を記述して
見えるところはフロントエンド側で整えたり、動かしたり。。。
ん??アプリケーションってデータベースが一番重要じゃん!!!
データベースがあるからバックエンド処理で根幹の機能を開発できるし
フロントエンド側でも必要なデータ出力できるから超重要じゃん!!!

データベースを制する者はシステムを制す。
ということで最近は下記の書籍を通じてデータベース、また取り扱う言語SQLを勉強しています。

今回はそもそものデータベースについて簡単に書いていきたいと思います。
※ここでいうデータベースとは主にリレーショナルデータベースだと思ってください。

データベースとは簡単に言うと倉庫です。
倉庫には色々な物が保管されています。
薬、生鮮食品、冷凍食品、骨董品など
それぞれの品質を担保するための保存方法や保管場所情報などをそれぞれの物に対してあらかじめ決めて保存しています。
https://publicdomainq.net/images/201902/07s/publicdomainq-0031212owb.jpg

データベースでは保管方法や保管場所情報が決められている情報の塊をテーブルと言います。
テーブルには倉庫の保管方法の例えで言うと保管方法をあらかじめ決めておき保管できる物、できない物を区別できます。
この保管方法を記している所をデータベースではカラムと言います。
https://publicdomainq.net/images/201711/05s/publicdomainq-0015133uma.jpg

保管方法を例えにしては具体的にどんな事を決められるかと言うと
また倉庫で例えて言うなら
物の長さ
物の状態
物が空の箱でも置けるのか
などを決めることができます。
https://publicdomainq.net/images/202001/23s/publicdomainq-0042172lmz.jpg

また倉庫を管理する会社によって
保管方法を決めるフローや物の取り出し方が変わってくるはずですよね。
倉庫業界のルールが分かりませんので実際は統一されているかもしれません。その場合はごめんなさい。
データベースではこの倉庫を管理する会社をDBMSと言います。
DataBaseManagimentSystemの略称です。
最近はリレーショナルデータベースを扱うものが主流のため
RDBMSと言います。
主なRDBMSとしてMySQLDB2PostgreSQLなどがあります。

補足ですが
行と列からなる表をテーブルと言い
テーブルとテーブルを関連付け結合できたり
表を更新すると関連するテーブルの値も変更することができるデータベースを
リレーショナルデータベースと言います。

あともう少し関連性という機能を説明します。
例えばある物の保管場所が他の保管場所へ変更になった時
物の保存場所の情報を一個一個変更していくのって大変じゃないですか。
10個ぐらいなら手作業でいけるとは思うのですが
1万とかになったら日々の業務もあるのに更新作業で一年ぐらいかかっちゃいますよ。。。
こんな事態に対して保存場所を格納しているテーブルと
物の保存場所の情報を関連づけることにより
保存場所を格納しているテーブルの情報を変更するだけで
各物の保存場所の情報も一括で変更する事が可能です。
とても便利な機能なんです!

とここまでで簡単にリレーショナルデータベースについてご紹介してきました。

整理すると
倉庫を管理する会社 ▶︎ RDBMS
倉庫 ▶︎ データベース
倉庫の保管に必要な情報の塊(保管情報、保管商品、保管方法、保管場所など) ▶︎ テーブル
必要な各情報 ▶︎ カラム
です!!

私なりに分かりやすくまとめたつもりですが
いかがだったでしょうか。

技術知識として足りない所だらけで
毎日、発狂しそうですが
振り返ってみると、なるほど!と思う瞬間がスゲー楽しいし
設計においても技術選択肢が増えるので私は結構楽しくやってます。
向いてんのかもwww

それではまた!

【Ruby】配列

32歳で実務未経験からWEBエンジニアへ転職活動しています。
何か有益な情報あったらなんでもください!(パソコンを閉じて)

コーディングテストで躓きまくっているので
下記書籍を読みながらRubyという言語について学んでます。
amzn.to

今回はよく使う配列というオブジェクトと
配列で使うメソッドについて書いていきたいと思います。

まず配列ってなんぞやって方は下記で確認してください。
ja.wikipedia.org

データ構造の1つで複数の値や文字列を格納できる入れ物です。
下記画像のタンスみたいなもんです。1つのタンスのそれぞれの棚にいろんな物を収納できるんです。
https://publicdomainq.net/images/201611/28s/publicdomainq-0003195hhy.jpg

でこのタンス、いや配列。
インデックスまたは添字と呼ばれる、上の画像の例で言えば棚番が分かれば
棚の中身が一回で取得できるんです。
つまりデータ取得に時間がかからないのがメリットなんです。
また添字が分からなくても先頭から順番にとり出せるメソッドがあったり
また2次元配列にして値や文字列を格納することができたり
データの格納方法や取り出し方が様々で使いやすいんです。
※paizaのスキルチェックでとてもお世話になってる。

では実際どうRubyで書くのか見てみましょう!

#配列オブジェクトの作成方法
ary1 = Array.new  # => []
ary2 = []

#デフォルト値は下記で指定することができる。
ary3 = Array.new(2,0)  # => [0,0]
ary4 = [0,0]

#配列へ値や文字列を末尾に追加する方法
ary5 = []
ary5 << "a"
ary5.push("b")
p ary5  # => ["a","b"]

#配列へ値や文字列を先頭に追加する方法
ary6 = ["c"]
ary6.unshift("d")
p ary6  # => ["d","c"]

#複数、先頭へ追加することも可能
ary6.unshift("e","f")
p ary6  # => ["e","f","d","c"]

#挿入する方法
ary5.insert(1,"x")
p ary5  # => ["a","x","b"]   添字は0から始まるので1を指定すると2番目に挿入される。

#配列の値を変更する。値を変更したいインデックスを指定する。
ary6[0] = "a"
p ary6  # => ["a","f","d","c"]

#配列の値を削除する方法。まずは値を指定して削除する方法。
ary7 = [1,1,1,2,3,4,5,5]
ary7.delete(3)
p ary7  # => [1,1,1,2,4,5,5] 3だけ消える
ary7.delete(1)
p ary7  # => [2,4,5,5] 1の値が全て消える

#配列のインデックスを指定し削除する方法。
ary7.delete_at(0)
p ary7  # => [4,5,5] インデックスが0の1だけ削除される

#配列の先頭から順に削除する方法。
ary8 = [1,1,1,1,1,1,1,1]
ary8.shift()
p ary8  # => [1,1,1,1,1,1,1] 先頭の要素のみ削除される
ary8.shift(2)
p ary8  # => [1,1,1,1,1] 先頭の要素を指定した数だけ削除される

#配列の範囲を指定し削除する方法。
ary8.slice!(1,3)
p ary8  # => [1,1] インデックスが1から3までの要素が削除される

#おまけとして配列の繰り返し処理をご紹介。他の記事で詳しく繰り返し処理はご紹介する予定です。
ary9 = [1,2,3,4,5,6,7,8,9,10]

sum = 0

ary9.each do |n|
  sum += n
end

p sum  # => 55

とこんな感じで配列を作成し追加、挿入、削除が行えます。
これを組み合わせて色々な処理が書けるようになります!

Railsでテーブルから複数レコードを取得すると配列で帰ってきたり
コーディング問題にて配列で格納する機会も多かったり
覚えておくと役に立ちます。

是非、タンじゃなくて配列を使ってみてください!!

それではまた!

【Ruby】論理演算子について

32歳で未経験からWEBエンジニアへ転職活動しています。
有益な情報あったら何でもください!(パソコンを閉じて)

転職活動する中でコーディングテストで躓く場面が多かったので
下記書籍を通じてRubyを勉強しています。
amzn.to

今回はRubyで書く論理演算子について書いていきたいと思います。

まず論理演算子とは下記を読んでください。
ja.wikipedia.org

すいません。難しすぎて訳わかりませんね。

じゃあ私の口から簡単に。
ズバリ!
複数の条件を満たしているかどうかを判別する。
だと思っています。

例えば山田くんという男の子がいて
45歳ですが彼女が出来たことがありません。

友達が心配して彼にどんな子が良いのか聞きました。
彼の求める条件は下記2つでした。
①顔が可愛い
②おっぱいが大きい
どっちも満たす女の子が良いと。

おいおい山田くん。そんな娘なかなかいないよと。
どっちもじゃなくて片方の条件満たす娘にハードル下げてみたらと。
①か②のどちらか一方を満たす女の子はどうと。

山田くんはとにかく彼女が欲しくて
友達の提案を飲み、条件を以前よりは低くし彼女を探しました。
しかし中々いません。
前の条件はがダメなら、下記条件のどちらか一方を満たす女の子なら良いと。
③性格がやさしい
④髪が黒い
①、②どちらか一方を満たす、もしくは③、④どちらか一方を満たす女の子が良いと。

それでも山田くんは彼女ができませんでした。
山田くんは彼女が出来ることが目的になってしまい最終手段にでます。
今までの条件に当てはまらない女の子なら誰でも良いと。
①、②、③、④のどれにも当てはまらない女の子と。

そしたら、ついに山田くんに彼女ができました。
めでたしめでたしと。

とここまで見てきた山田くんの女の子に求める条件。
コレをクリアにするために判別する式が論理演算子です!

では実際に見ていきましょう。

f  # 顔の条件、1が可愛い、0はそれ以外
b  # おっぱいの条件、1が大きい、0はそれ以外
c  # 性格の条件、1がやさしい、0はそれ以外
h  # 髪の条件、1が黒い、0はそれ以外

def yamada(f,b,c,h)
  #どちらも満たす場合
   if f == 1 && b == 1
      true
  #①か②のどちらか一方、もしくは③か④のどちらか一方が満たす場合
   elsif (f == 1 || b == 1) || (c == 1 || h == 1)
      true
  #どの条件にも満たさない場合
   elsif !(f == 1 || b == 1) || (c == 1 || h == 1)
      true
   end
end

名付けて山田くんの彼女に相応しいかメソッド!
はい、くだらないこと言ってないで解説します。

まずどちらも満たす場合
Rubyでは&&でそれぞれの条件を満たすか判断します。

次にどちらか一方を満たす場合

でそれぞれの条件を満たすか判断します。

論理演算子は満たす場合はtrue、それ以外はfalseを返します。
また評価する優先順序があり、優先順位が高い順に評価されています。
よく使う評価式の優先順位は下記となります。
! >> () >> && >> || >> and,or
※and,orの論理演算子についてまた今度ということで

なので(f == 1 || b == 1) || (c == 1 || h == 1)の式は
()で囲まれたものから評価し
最後にそれぞれの条件を||で評価しています。

そしてどれも満たさない場合は
!を先頭につけて評価しています。

論理演算子が分かれば
while文やif文などで複雑なケースを記述することが可能です。
またプログラムもスッキリ書けます。
※複雑すぎて他者が見たとき分かりづらいコードは開発効率を悪くするので良く無いです。

論理演算子で条件分岐の表現に幅が広がりましたね!
これらをうまく使ってスマートなプログラム書きたいですね!!
if 私 == 天才になれるように頑張ります!!!

もっと詳しい内容は下記書籍を見てみてください!
amzn.to


それではまた!

【絵本】おやすみなさいおつきさま

32歳の一児のパパです。

今日も子供のためにお世話奮闘中。

 

今回は絵本のご紹介。

 

子供のお世話って大変なんですよ。

 

朝のオムツ替え、着替えに始まり。

子供との遊び方でも気を遣ったり、注意したり。

飯を食べる時は練習させながら掃除をし。

いかに注意を向け歯磨きさせてもらう状態にしたり。

色々大変なんです。

 

そんな大変な中、1日の終わりを締める

お世話、そう!寝かしつけ!

これもとても大変なんです。

 

あぁーやっとお世話から解放されると思っても

ココをクリアしないと1日のお世話から解放されません。

 

色々お話を聞いてると各家庭の寝かしつけの方法があり

ひたすら抱っこで寝させたり

お腹いっぱいにさせるためにミルクあげたり

家庭の数だけ様々な寝かしつけが繰り広げられています。

 

ウチでは絵本を読む習慣を取り入れてから

寝かしつけが以前に比べ楽になりました。

※友達の家の寝かしつけ聞いても、絵本は効果有りだと思う。

 

そんな寝かしつけの本、何を読んだら良いのと思いますよね。

いくつかオススメの寝かしつけの本あるんですが

今回はこちらの絵本をご紹介します。

その名も、おやすみなさいおつきさま

amzn.to

 

この絵本が寝かしつけになぜ有効か教えます。

※かなり偏見入ってます、そこんとこ注意。

 

それはズバリ!

内容がつまらない!!

 

まぁつまらないったら、つまらない。

次はどうなるんだろうという期待が持てない。

なので単調でつまらない。

でもこれが眠くなるんだと思うんですよ。

つまらない話、つまらない勉強、つまらない人など

つまらない時って眠くなりません?俺だけ?

つまらないということが寝かしつけで

こんなに役に立つと思いませんでした。

 

眠くさせる要素として

この絵本はつまらないだけじゃないんですね。

それはですね!

念仏のような文章!!

 

同じような文章がずーっと続くんです。

眠りの悟りが開けそうなほどに。

お経とか延々と同じ自慢話を聞かせてくる老害など

同じような内容を聞いてる時って眠くなりません?俺だけ?

同じことが続くと飽きて嫌になって眠くなるのかもしれません。

 

そして最後の眠くなる要素として

これぞトドメの一撃!

絵がだんだん暗くなっていく!!

 

徐々に絵が暗くなっていくんですよ。

明るいところと暗いところ

どっちが寝付きが良いかって言ったら

誰もが暗いところと考えますよね。

私なんて目を閉じるだけで視界が暗くなり眠くなりますよ。俺だけ?

暗いというのは眠る環境としてとても重要です。

 

まとめると

①内容がつまらない

②同じような文章のくりかえし

③絵が暗くなっていく

 

なんですか!この3連コンボ!

絵本の基本要素の全てが眠くなるって!最強か!?

 

書いてる私も眠くなってきました。。

寝かしつけに困っているお父さん、お母さん

是非、試してみてください!

※当たり前ですが効果が無い場合もあります。

 

amzn.to

 

英語教育をお考えの方に英語版もございます。

amzn.to

 

それではまた!

 

【Ruby】真偽判定メソッドについて

32歳で未経験からWEBエンジニアへ転職目指しています。

有益な情報あったら何でもください!(パソコンを閉じて)

 

今回はタイトルの通り真偽判定メソッドを

勉強がてらメモしていきます。

 

今、下記書籍を読み進めながら

Aidu online judgeを通してコーディングスキルを身につけています。

amzn.to


 

if文やwhile文の条件を記述する際に

真偽判定メソッドがとても役に立ちました。

ですのでrubyで書ける真偽判定メソッドをご紹介します!

是非、コーディングの際に役立ててください!

 

#空の文字列だった場合、trueを返す

"".empty?  # => true

"a".empty?  # => false

 

#対象のオブジェクトがnilだった場合、trueを返す。

nil.nil?  # => true

1.nil?  # => false

 

#文字列内に引数の文字列が含まれる場合、trueを返す。

#ちなみに配列オブジェクトに対しても要素で含まれる場合、trueを返す。

"aiueo".include?("ai"# => true

"aiueo".include?("ka"# => false

["a","b","c"].include?("a"# => true

["a","b","c"].include?("d"# => false

 

#数値が奇数の場合、trueを返す。

1.odd?  # => true

2.odd?  # => false

 

#数値が偶数の場合、trueを返す。

1.even?  # => false

2.even?  # => true

 

#上記の対象の前に!を付けると逆の結果を返します。

!"".empty?  # => false

!nil.nil?  # => false

!"aiueo".include?('a'# => false

!1.odd?  # => false

!1.even?  # => true

 

 

上記はrubyで標準文法です。

こんな真偽判定メソッドあったらいいなと考えたら

自分で作っちゃいましょう!

 

正しいもの、正しくないものが判別できるようになりましたね!

どんどん白黒つけちゃいましょう!!

でも人間とのコミュニケーションでは白黒つけ過ぎは

冷たいだなんて思われるんで特に女の子には辞めましょうね!!!

 

それではまた!

 

【Ruby】配列について質問したいです。

32歳の未経験からWEBエンジニアに転職しようとしています。
有益な情報があったら何でもください!(パソコンを閉じて)

今回は分からないことを書きます!(威張るなって)
teratailやstackflowに書けよって突っ込みはスルーします。

下記Aidu online judgeの問題にて
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_7_D&lang=ja

私は下記回答を提出しました。

n,m,l = gets.split(' ').map(&:to_i)

ary1 = []
ary2 = []

(n+m).times do |i|
    if i < n
        ary1 << gets.split(' ').map(&:to_i)
    else
        ary2 << gets.split(' ').map(&:to_i)
    end
end

result = Array.new(n,Array.new(l,0))

n.times do |i|
    l.times do |j|
        m.times do |k|
            result[i][j] += ary1[i][k] * ary2[k][j]
        end
    end
end

result.each do |r|
    puts r.join(' ')
end

出力結果が間違っていた。
各要素が同じ配列として出力されてしまってはねられてしまう。
ex)
5 40 25
5 40 25
5 40 25

なぜだ。。。。。

n,m,l = gets.split(' ').map(&:to_i)

ary1 = []
ary2 = []

(n+m).times do |i|
    if i < n
        ary1 << gets.split(' ').map(&:to_i)
    else
        ary2 << gets.split(' ').map(&:to_i)
    end
end

result = []

n.times do |i|
    result[i] = Array.new
    l.times do |j|
        result[i][j] = 0
        m.times do |k|
            result[i][j] += ary1[i][k] * ary2[k][j]
        end
    end
end

result.each do |r|
    puts r.join(' ')
end

上記だとパスする。。。
n行、l列の行列を初期値0で作成し
各要素を算出していくはずが。
なんでこんなに違うんだ。
Array.newを繰り返しの中でやるのか
繰り返しの前にn行、l列の行列を初期値0で作成するのは
ぜんぜん違うのか。。

分からない。。。
誰か教えてください!!