親です。

読んだ本とかについて書いてます

【SQL】SQLの基本的なところ

おつです。かく。

SQLとは

SQLってのは、RDBMSリレーショナルデータベース管理システム)をいじる言語。 詳しいところはこの最高に分かりやすいサイトでお勉強してくれと思う。重要な点については下記にまとめる。

宣言型言語である

SQLは他のプログラミング言語PythonとかJavaとか)とはちょっとノリが違う。具体的にいうとSQLは宣言型言語(アウトプットの形を記述する言語)であり、他の手続き型言語(どうやってアウトプットを取得するかを記述する言語)とは異なる。 また、プログラミング言語と違って良いところは、SQLはISOで規格化されており、これさえできればもうほとんどあらゆるDBでSQLが使える。DB言語はマスターしたも同然ということだ。

三つの言語から構成される

ここはもう引用元からまるまる引用しちゃうけど、

SQLは、大きく分けて3種類の言語から構成されています。データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文です。
●データ定義言語(Data Definition Language)
データ定義言語はDDLと略され、RDBMSで扱うオブジェクト(テーブルやインデックスなど)の構造や、オブジェクト同士の関係を定義する構文です。
DDLの命令文>
CREATE:新しいデータベースやテーブルなどのオブジェクトを定義する
JOIN:テーブル同士を結合する
DROP:定義したオブジェクトを削除する
ALTER:定義したオブジェクトの内容を変更する
TRUNCATE:データをすべて削除する
●データ操作言語(Data Manipulation Language)
データ操作言語はDMLと略され、データベースを操作するための構文です。目的語やさまざまな条件を示すキーワードと組み合わせて使われ、多くのパターンがあります。目的語には「~以上」「~以下」などの条件をつけることもでき、SQL関数と呼ばれる関数を使用することもできます。
DMLの命令文>
SELECT:データベースを検索する
INSERT:データを挿入する
DELETE:データを削除する
UPDATE:データを更新する
●データ制御言語(Data Control Language)
データ制御言語はDCLと略され、データへのアクセスを制御する構文です。トランザクションやシステムを管理したり、ユーザーのアクセス権を制御したりするために使われます。
DMLの命令文>
GRANT:ユーザー権限を付与する
REVOKE:ユーザー権限を削除する
BEGIN:トランザクションを開始する
COMMIT:トランザクションを確定する
ROLLBACK:トランザクションを取り消す

SQLとは?データベース言語の基礎知識をわかりやすく解説!|発注成功のための知識が身に付く【発注ラウンジ】

だそうだ。個々に説明していくと案外量があったので、ひとつひとつの言語については別記事を作って紹介する。

以上!!!

【SQL】SQLわけわからんからまとめ

おつです。SQLもやる。

SQLやる理由

DB言語のSQLだが、データ分析的なことをやるにはまあ知ってないとお話になりませんよ、という感じなのでやる。データ分析ではDBからSQLでデータを取ってきて、それをPythonとかで整形することになるらしい。

SQLまとめ記事

  1. 【SQL】SQLの基本的なところ - 親です。
  2. 【SQL】SQLの基本的な書き方についてまとめ - 親です。

以上!!!

おそらく俺のモラトリアムが終わった

おつです。書く。

おそらく俺のモラトリアムが終わった

転職のことを考えるにつけ、俺はこれまで3年くらい職場でなにをしていたのか、流石にもっとスキル身につけようがあったろと思ってしまう、育休とって職場から距離取れて、多少考えられてるからいいものを、これで育休もとらずにいたらマジでCOBOL書くだけのover30になっていたと思う
なんで元の職場で考えられなくて今は考えられるようになったのか、これは結構謎が深くて、たぶん職場いたころはプログラミングを面白いとは思ってなかったこととか、単に大変だったとか、キャリアは自分で動かせるものじゃなくて上司に任命されるものだと思ってたとか、あとなんだろ?
まあ子どもいなくて仕事の後に自分の趣味やれた時に日中は仕事をやる時間でしかなかったとか(これ自分は選んで職場にいるんだと自覚しようとはしてたけど、なにやりたいとかなかったから自覚しても無駄だったな)、
今になって転職のこと考えて、元の職場に戻るのは考えられないなと思って、それで初めて外を見て、うーん俺にはスキルねえなと思ってしまうが、うーんうーん
やっぱ大きかったのは自分がエンジニアとしてやってくんだっていう覚悟みたいなもので、育休で初めてプログラミング面白えなと思い、自分で作りたいもの考えて作るっていう体験して、俺はエンジニアでやると思えたことなんだろうな。それまでは炎上PRJ見てゲラゲラしてるだけだった。
まあ俺は特にエンジニアになりたくてこの業界入ったわけじゃないし、元々日本文学だしけど高校では数学一番できたからITもいけるかなと思って、あと就活でマジでエントリーシートが出版以外は全く通らん中で出版に嫌気がさしてしまいどうしようと思った時何故かそこそこでかい今の会社から内定が出た
マジで今の会社以外でIT企業に応募してなかったし地元の商工会議所の事務とかに応募してたしょっぺえかんじだった、なんとなくでエンジニアだ、自分自身俺がエンジニアであることを信じられていなかった面はある。
そんな中金融系軍隊式現場に入りおらおらCOBOLを書けもしくはExcelオートシェイプのサイズをかえろテストのパスカバはブランチも100%にしろと言われグイグイ叩き上げられ奇しくも私生活も大荒れ笑いあり涙あり流血ありの3年間、なんだか気づけば射精をし妻はたいそう苦しみ息子が生まれていた
俺は、なんなんだろうな、社会人での三年間、頑張ったつもりだったけどスキルは特になく、今も中途半端にPythonやらフロントやらPHPに手を出して、まあほんとこれといって取り柄はないが、特に仕事のできないエンジニアとして無精髭を生やしている、そしてデータ分析した〜〜いとかナマ言ってる、
俺はきっと、今初めて自分の仕事選びを自分ごととして処理できていて、つまりは第二新卒みたいなもんなんだ、アラサーになって初めてエンジニアでやってこうと思えたんだ、新卒なのでスキルはない、俺は俺の発達段階として、おそらく、青年期を終えた。アイデンティティの問題にケリをつけた。
モラトリアムが終わったのかやっと
俺は、たぶん、この会社この職場だから云々というより、うーん人がどのように青年期を終えるのかというのは様々だろうけど、仕事で一人前って言われて自分を見つけるのかもしれないけど、この職場だからモラトリアムだったというわけではないとは思う。単に必要だったんだろうな。
一年目は必死で、二年目のときに色々内面的な問題として人生がクリアになって、三年目でうじうじして、今育休とって職場から離れて自分で選ぶことを考えられた、俺を叩き上げてくれた現場があり、そこから一時撤退して見えるものが出て、2つ揃って俺はエンジニアとして覚悟決まった感がある
元の現場で覚悟が決まらなかったのは、俺にはまだ時間必要だったのと、モラトリアム期に蓄えたスキルが現場に依存しててキャリアを近視眼的に捉えていたこと、あとはモラトリアムを終えるきっかけがなかったこと。
それが息子氏が産まれて、明確に人生の見直しを求められて、あと育休中にPythonなどやりプログラミングを面白いと思えて、今の現場以外の道を考え出した。少なくともCOBOLExcelオートシェイプは違うだろと思った、vlookupでチヤホヤされてちゃダメだと思った、海外にも生きたいし。
そんな感じだ。はい。

以上!!!

【転職・キャリア】面接とか面談とか行ったときに聞きたいこと

おつです。

面接で聞きたいことリスト

聞きたいこと、色々ある。その会社について、業界・業務(データ分析)について、生き方について

①その会社に転職したとき、どんなメリットが俺に/相手にあるか? ってのと、後者は馴染みやすさにつながるし、特には「貢献するためには」みたいなところ。
②データ分析界隈ってどうなん? 的なところも。規模は大きくなってるのか、参入難易度はどうなのか、挫折する人はいるのかとか。
③生き方について。俺は育休入って初めてプログラミングが面白えなと思った。それまで保険屋の保守性重視の簡単なコードを書いて進行管理してただけ。どこに強みを持つエンジニアになりたいのか、どんな業界の問題を解決したいのか。どうやってみんなそれに納得してきたのか。

その会社についての質問

俺にとってのメリット

ここは俺の欲しいものと、相手の提供できる環境を比較する。環境は賃金を筆頭に、居住環境やどんなスキルを身につけられるか、キャリアなどの点を含む。俺の場合、以下の3つかメイン。

  1. Pythonを使った業務に当たれること、データ分析業務に当たれること。(アナリスト的な役割もやりたい、目的分かって作業しないと多分限界ある)
  2. 社として社員の成長にお金をかけていること、また社員個々人にも成長の気持ちがあること
  3. あまりにも業務が細分化されている、みたいなことがないこと
    その他いろいろあると思うが、まあたぶんこんなもん。
    その上で、これらが満たされた、とどう判断するのか、細かく聞いていく。

Python・データ分析
- Python以外に使うか? まあR, SQLはあるやろなあ。
- アナリスト的なこともできるのか?(よく分からんけど)
- どんな流れで業務進むのか?
- アナリスト的なところも担当できるのか?
- どんなキャリアがあると思ってるか。(分析専門、機械学習、ほかの分野への展開)

②学びに対する姿勢。
- 勉強会
- 書籍購入補助
- 開発環境
- 外部のカンファレンス参加度合
- カンファレンス参加費補助
- 個人開発してる人はいるか
- 副業OK?
- 残業どんなもん?(家で勉強する余裕あるか?)

現場はみんな勉強熱心か。新しい技術を試す気持ちがあるか。最新の動向を気にしたりとか、あるか。

③業務の細分化どあい
- テストだけとかはキツイ。
- アナリスト的なところもやりたい

④基本的なところ
- 正社員
- 400万
- ノー残業
- 当たり前の法律は守られてるか
- 勤務地

⑤データ分析で生き残るには
- データ分析系の企業さんと話をすると、データをいじる企業としては「①データを持ってること②人材を囲えること」が重要と聞いた。どうやってそこで生き残るつもりなのか。

会社にとってのメリット

ここは相手の求める人材(中途だからある程度決まってる? 育てるより即戦力?)と、俺の提供できるものを合わせる。 いやー実力ないの分かってるからきついけどね、でもやっぱプログラミング楽しいし、やれるところ行きたいよな。
①会社の求める人材
どんな人材が欲しいのか?
まあこれはデータ分析がどんな業務なのかみたいなのはあるよな。
- 技術面(Python, R, SQLその他)
- 分析手法知ってて、かつ使い分けられる
- 仮説立てられて適切な切り出し方ができる
- ソフトスキル
- マーケティング的なスキル
- 数学の知識はどれほど必要になる?(データ分析と機械学習、必要になる数学の知識レベルってやっぱ違うのか?)

②俺の提供できるもの
データ分析の勉強はあんまり(心苦しい)。ツイートのネガポジ検査して統計とって遊んだところでwebに転向して今まできてる。
- 基礎的な開発経験
- 進行管理
- QA担当
- 新人教育?
- 珍しさ

業界・データ分析についての質問

①業界への質問
- 規模拡大してんの?
- データ分析やるにも色々あるよね、自社サービスのデータ分析、受託でデータ分析、アナリストいるかどうか。
- 自社サービス持ってる会社のデータ分析部門は強い?
- どんなふうに活かされてるの?

②データ分析業務への質問
- データ分析ってどんな仕事?
- 案件の流れは?
- データ分析ってどんなサブタスクがあるの? 開発におけるテストとか仕様書読むスキルとか、非機能要件(セキュリティ、速さ、保守性)的な
- データ分析の作業フロー。DBからのデータ抽出、データ加工、分析試行錯誤、何か見立て、現場で実証、実装と聞いた。けどまずデータを取るところからある会社もあるよね。サービス持ってる会社なら得られるデータの設計からやる??? - 個人で勉強するとき、データ分析ってプログラミングよりか敷居高いなあ〜〜って思う。何かをよりはっきりと理解する、根拠を持たせる、それって一見面倒な作業だよな(っていうと俺向いてないんじゃねって思ってしまうが...)。なんかテスト書くみたいな感じあるね。けどあれだね、ミステリっぽくもあるね。----で、どうやって勉強するか? こんな分析手法があるとかって???んー。
- 自然言語処理系のデータ分析やれるのってどの業界?

生き方についての質問

生き方・キャリアについて。
俺は育休に入るまで保険屋の簡単なコード書きで、プログラミングを面白いと思ったことは無かった。けど、育休入って初めてプログラミングが面白えなと思ったし、エンジニアとしてのキャリアについて考えた。
そのとき「自分はどこに強みを持つエンジニアになりたいのか、どんな業界の問題を解決したいのか」が必要になった、一本スジを通すために。

こうやって考えてると、どうしても俺にはスジがないって思っちゃうし、考えれば考えるほどエンジニアとしての俺は飯を食うためにやってる自己であって、人生かけてるようには思えない。俺にとってエンジニアって大切なものではないのでは? と思えてくる。

たとえば、俺はやっぱり、最終的には小説だと思う。だって俺にとってエンジニアであることは、かなり偶然に職を得て、かなり外的なものとして身につけたスキルなんだよな。自分から取り組んだのは小説で、プログラミングは飯食うためにやってたに過ぎない。

だから疑念があんのかな、マジで好きになったわけじゃないんじゃ? スキル得て何になるの? とも思う。小説は書くことですごく生きることに対して知見を得られると思う。けどカナヅチの使い方に世界の真理は含まれてるのか? みたいな。

ただ大切なのは、そうやってスジを通そうと思うってのは、エンジニアとしての生き方が、もうすでに俺の中にありうるからなんだよな。俺はエンジニアとして生きていくってちょっと思っちゃってるから、そこに根拠が欲しいんだよ。
だから、そうやって悩むこと自体が、エンジニアでありたいってことの証拠ではある。

その上で聞きたいのは、どうやって俺にとってのエンジニア像を立ち上げていくかってこと。

①エンジニアとは?
- 俺はこれだなって思えた瞬間があるか? どんな瞬間か?
- あなたはどんなエンジニアになりたいのか? なにをきっかけにそう思ったのか?
- エンジニアリングを通してどんな課題を解決したいのか? なぜか?

②データ分析に興味を持ったきっかけは?

他の人が言ってた聞きたいこと

1.執務室の見学可否 2.このポジションを募集している理由 3.一番困っていること

1は職場の雰囲気を知り、2はポジティブな理由かを知り、3は企業の正直な声を聴かせてくれるかを知るためです。

3を隠蔽する企業が多かったです。 こういう企業は辞退しました。

以上!!!

【キャリア・転職】web系企業に出した志望動機のメモ

おつですメモですオウオウイェ

メモ - 転職先に求めるもの

私が転職をするにあたっての軸は下記の3点になります。
①業務内容
 Pythonなどを使ってデータ分析・自然言語処理の業務につける職であること
②企業の風土
 社員の成長をよしとする社員ひとりひとりの性質や風土があること
③規模
 業務が細分化されすぎておらず、ある程度の幅を持って業務できるくらいの少数チームであること
この中でも最も大事にしたいのは①業務内容です。
私は正直なところ「エンジニアとしてどんな問題を解決したいのか?」「どんなエンジニアになりたいのか?」といったエンジニアとしての目指す姿が思い描けておりません。そしてそのことは、自分自身が仕事にこだわりやプロ意識を持って取り組めていないのではないかという疑念に繋がっていると感じています。
ただ私自身の過去を振り返ってみて、今まで何ものにもこだわりを持てなかったかというとそうではありません。大学時代は趣味に打ち込み、最終的にそれを卒論にまとめました。あの時のように一日中頭のどこかで自分のテーマについて考えているような、そういう体験ができるはずだと思っています。
今私はpythonを使ったデータ分析・自然言語処理の分野で仕事に打ち込んでみて、こだわりを持って仕事に取り組みたいと考えています。そのため御社に応募させていただきました。
以上です。

メモ - 転職先で発揮できるスキル

私は前職、金融系の現場でプログラマチームのリーダーを担当し、最大月10万stepの開発をチームでこなしていました。その際、デザイナチームに対しては開発時期の調整や人員の調整を行い、チームメンバーに対しては開発状況のフォローや進捗のコントロールを行いました。
このように周囲とコミュニケーションを図りつつ、想定外の事態にも早い段階でリカバリーをとっていく姿勢は、御社の開発現場でも十分活かせるものであると考えております。

志望動機

私はこの転職活動で、次の三つの点を満たす環境に転職したいと考えています。 まず一つ目はデータ分析・自然言語処理の業務につける職であることです。二つ目は現場の個々人が新しい技術の習得に前向きであることです。最後に現場の規模が大きすぎず、担当業務が細分化されすぎていないことです。これらの環境は御社で実現できると考えています。 また前職で私は、金融系の現場でプログラマチームのリーダーを行っておりました。周囲と意思疎通を図り、想定外の事態にも早い段階で対応する姿勢は御社の開発現場でも十分活かせるものと考えています。 以上の理由から御社に応募させていただきました。

以上!!!

【PHP】PHPとオブジェクト指向(クラスの書き方)について その②

おつです。オブジェクト指向的なところをもっかい押さえる。

最終的な書き方

<?php
// 親クラス
class Menu {
  // ①変数宣言
  // protectedでのインスタンス変数宣言
  protected $name;
  protected $price;
  // クラスプロパティ
  private static $count;

  // ②クラスプロパティへのアクセス方法  
  public function __construct($name, $price) {
    $this->name = $name;
    $this->price = $price;
    // クラスプロパティの加算
    self::count++;
  }

  // クラスメソッド
  public static function getCount() {
    return self::$count;
  }

}

// 子クラス
// ③クラスの継承
class Drink extends Menu {
  private $type;
  
  // ④メソッドオーバーライド
  public function __construct($name, $price, $type) {
    parent::__construct($name, $price);
    $this->type = $type;
  }
  
  public function getType() {
    return $this->type;
  }
  
  public function setType($type) {
    $this->type = $type;
?>

基本的なことばの確認

クラスプロパティ ... クラスの、プロパティ。説明しにくいんだが、インスタンスの作成数を取得するようなクラスプロパティの場合、あるインスタンスが作成された時以降の値も取れる。
クラスメソッド ... クラスのメソッド。例えば"aaa"ってnameプロパティをもつインスタンスを取得する、みたいなメソッドを作るとき便利。
継承 ... あるクラスの特性をあるクラスに引き継がせることを継承と呼ぶ。引き継がれる方を親、引き継ぐ方を子クラスという。
オーバーライド ... 親クラスのメソッドを引き継ぎ、一部書き換えること。

①変数宣言

class Menu {
  // ①変数宣言
  // protectedでのインスタンス変数宣言
  protected $name;
  protected $price;
  // クラスプロパティ
  private static $count;

  // クラスメソッド
  public static function getCount() {
    return self::$count;
  }

protectedについて
public, privateに続いて登場するのがprotected。private指定をすると当クラス以外からのアクセスができなくなるが、protected指定をするとその子クラスからならアクセスができるようになる。つまり継承したいときにはprotected。
クラスプロパティ・メソッドの記述方法
staticってつけるだけ。

②クラスプロパティへのアクセス方法

  // ②クラスプロパティへのアクセス方法  
  public function __construct($name, $price) {
    $this->name = $name;
    $this->price = $price;
    // クラスプロパティの加算
    self::count++;
  }

クラスプロパティのアクセス方法
アクセスするときはself::$クラスプロパティ名とする。これ子クラスからでも同じアクセス方法なのかな???

③クラスの継承

// 子クラス
// ③クラスの継承
class Drink extends Menu {
  private $type;

class 子クラス extend 親クラスで継承できる。

④メソッドオーバーライド

  // ④メソッドオーバーライド
  public function __construct($name, $price, $type) {
    parent::__construct($name, $price);
    $this->type = $type;
  }

オーバーライドして使うときの宣言文をまず書き、その配下にオーバーライド元のメソッド、元と先の差分と続く。 オーバーライド元のメソッドはparent::メソッドの形で短縮可能。説明むずいっすね。

以上!!!

【キャリア・転職】転職サイトに登録して初めて電話面接したからメモ

おつです。掲題の通りです。よろしくご査収願います。

掲題の通りです。

面談した、前回の日程調整みたいなサツバツにならなかった、むしろにこやかに俺の経歴とかをいい感じに言い換えてくれて接待感あった。俺は働き方が趣味的になりがちなんだけど、楽しんでやれること自体特性ですよと言ってもらえた(せやろか?)
今回の転職で俺が優先してるのは、
①事業内容 - web、データ分析、自然言語処理系の機械学習・AI
②企業風土 - 個人の成長に好意的(残業してなんぼ、飲み会あたりまえみたいなのではない)
③規模 - 小さめで仲の良い感じが落ち着く
ってかんじ。
んで、①と②だけ伝えてざっと転職の方針を教えてもらった。
●言われたこと
・事業会社よりはSI・特定派遣
事業会社だと開発以外の職種に回されたり、現場に出られてもベンダーコントロールやらになる可能性が高い。
SIなら絶対現場だし、特定派遣でもコアなところにブチ込めるとのこと。
俺はSIはむしろ現場とかやること選べねえなあって思ってたから、意外だった。(なんでそう思ってたんだろ? デカめだと業務が細分化されすぎて経験つめなさそうってことかな?)
あと事業会社が協力会社への指示出しとか上流工程に終わりがちってのはたしかにと思った。
んでこの上で思うのは「あー俺業界のこと全然分かってねえのかもな」ってことだよな。あと俺が狙ってるのは小さめのなんでもやらせてくれる小さめの会社なのかなとも。それでweb系はいいなと思うけど、小さな会社は転職支援サービスに宣伝させる金とかないだろうし、自分で足運ぶしかないのかも。
なので今後の動きとしては、
①今の会社と交渉して自然言語処理の現場に飛ばしてもらう
②並行してweb系の会社を覗きに行って業界研究
③自己分析
ってところかなあ。まあなんにせよ、一歩踏み出せて良かったわ!

追記

現場の規模感についてなんだけど、大きめのところに行くと細分化した業務ばかりやることになるという話があった。

んで、まあベンチャーとか小さめのところの方が色々やらせてもらえるだろうからいいな、とは思うんだが、これが働きやすさとトレードオフになってる気もする。 フルスタックにはなりたいけど、毎日残業とかは絶対無理。残業は無理だけど、勉強にならない現場にぬるぬるい続けるのも無理。 これが悩みどころだなと思う。

自分の弱みについての立ち位置

以上!!!