エンジニア

なんくるないさ

「このブログはアフィリエイト広告を利用しています」

2年目エンジニアがAWS DASに2週間で合格した

DBSに11月3日(木)に合格しました。

DAS 合格点数

DBSが10月21日(金)に終了したので、その流れで受けることにしました。

jump1268.hatenablog.com

なので約2週間で合格したことになります。

やったこと

隙間時間で以下を実施して、合格できました。

  • techStockを70問といた (正解率は47%)
  • black belt(DAS関連)を読んだ *skill builder (5時間のやつ)を2週した

勉強のコツ

  • Kinesisの使い方と連携先、ユースケースを知る
  • データを分析するためにデータを格納する
  • AthenaやRedshiftのベストプラクティスを学ぶ

2年目エンジニアが10日間でAWS DBSに合格した話

DBSに合格しました。

DBS 合格点数

10月11日に受験を決意しました。 なので10日間で合格したことになります。

やったこと

隙間時間で以下を実施して、合格できました。

  • Udemyの模擬問題を2周して、どういう問題が出るか把握した
  • black belt(DB)を読んだ
  • 試験日に、skill builder (3時間のやつ)を1時間見た

勉強のコツ

  • オンプレのDBをAWSに移行する開発者の気持ちを考える
  • Dynamo, Auroraなどの主要DBを使う開発者の気持ちを考える
  • DBのセキュリティを上げる (通信経路、DB中身、KMSやCMK)

【2022年】 新卒2年目がデータベーススペシャリスト試験の感想と勉強法を話す

「このブログはアフィリエイト広告を利用しています」

自己紹介

勉強を始めた頃のDBの使用経験

学生時代と社会人、両方で使ったことがありました。

学生自体は、ReactとDjangoを使ったサービスに関わっていました。 また、趣味のアプリ開発等でもNoSQLやRDBには触れていました。 その学生時代のDBに関する経験は、以下の通りです。

  • 学生時代のバイト先で、N+1のクエリを修正 (50倍ぐらい早くなった)
  • 中間テーブルの作成 (要望の機能を実装するには、多対多になってしまったため)
  • ORM使ったfilterやjoin (Djangoは神)
  • SQLは、インターンのコーディングテストで学んだ程度 (Group by havingぐらいの知識はあり、join書ける。サブクエリは書けないし読めない)
  • ウェブアプリ作ってfirebaseのNoSQLを使ってデータ保管、更新など * インデックス何それ
  • DynamoDBやS3のデータにクエリかけて、QuickSightで表示

社会人のDBに関する経験は、以下の通りです。

  • Dynamo DBのバックアップのCLI
  • 日々のデータの蓄積 (Azure)

正直、学生の時の方がDB使ってました。

受験理由

  • 勉強したこと&受験したことがネタになる。
  • DBを使った開発をしたかった (インデックスとかを意識したい)
  • ガッキーと結婚したかった。

こんなゆるーい理由で7,500円の受験料を払いました。

勉強方法

登録セキスペ受験時と同じように、過去問ゲーだと思いました。 なので、過去問を積極的にやることにしました。

午前の対策について

登録セキスペの時は時間を使いすぎたので、DBスペシャリストは必要最低限にしました。
→10月に入ってから、午前の問題を解くことにしました。結局やったのは5年分でした。

午前Ⅱに関しては、96点(1問ミス)だったのでこの方法で良かったと思っています。

午後の対策について

問題は、午後の対策です。

正直、午後の対策は過去問の解説がないと、話になりません。 大人しくこれを買って勉強しましょう。 (正直これで勉強しても受かるわけではないが)

午前と同じく5年分解きました。ただし、午前と違い、解説を読み理解するまでに多くの時間を要しました。

試験本番では、全然わからないことはなかったのですが、時間が足りないことや演習不足&理解不足を感じました。

もっと問題演習と復習が必要だったと思います。

勉強スケジュール

午後の勉強スタート

過去問を5年分やりました。

DBに関する知識を身につけること、DBに関する基礎的なことを学びたかったので、選択問題は全てやりました。

土日の午後に本番形式で時間を測って問題を解き、 平日や土日の午前に答え合わせをしていました。

反省点は、過去問を解いて満足していたことです。

すぐに答え合わせ&間違えた理由を分析していれば、もっと良い点数が取れたと思います。

午前の勉強スタート (10月1日: 試験8日前)

午前勉強は、履歴によると10月1日スタートみたいです。

午前の学習スタート日

データベーススペシャリストの過去問道場の最終的な段位は、以下の通りです。

直前期

午後の勉強で知らなかったことをメモしたノートを見て、やったことを復習していました。

試験後の感想

試験後の感想を書いておきます。

午前Ⅱの感想

あ、なんか見たことあるな?って問題が数問。

見たことねえナニコレみたい問題もありました。

終わった瞬間は、まあ6割は超えたかな(確信はない)っという感じでした。

答え合わせしたら、一問だけミスってました。

DLPはなんでしょう? って問題は、正直嫌いです。data loss prevention じゃなくて data leak prevention にしてくれ...

データの情報漏洩対策「DLP(Data Loss Prevention)製品」とは? | お役立ちブログ | 情報セキュリティ対策に関するお役立ち情報 | 企業の情報セキュリティ対策・ITシステム運用のJBS JBサービス株式会社 JBサービス株式会社

午後Ⅰの感想

傾向が少し変わった?と思いつつ、長文を読みました。

文章読んでも入れるべき属性がわからんぞ?って焦ったのを覚えてます。

計算問題は簡単だと感じました(RTOってなんだっけ?とはなったが)

RTO (Recovery Time Objective): アプリに障害が発生してから、復旧するまでの時間。

午後Ⅱの感想

問題の傾向がだいぶ変わった気がします。

"文章を読み、簡単な属性を答えたり、リレーションを書く問題"が大幅に減りました。

その代わりに、構築するシステムの理解が必要になったと感じます。

例えば、「もしこういう状況になったら現時点では対応できない、どう変更すれば良いか?」みたいな感じです。

正直辛かったですし、模範解答とは結構ズレた回答をしてました。

結果待ちですが、落ちても納得できるデキだと思います。

DBスペシャリスト勉強して思ったこと

  • 勉強進めていく過程で、DBの仕組みを体型的に学ぶことができた (特にインデックスやリレーション)

  • 試験に関しては、例年と比べて問題傾向が違ったために、難しいと感じた。

  • ガッキ−と結婚できる資格はやはり大変だった。

定番の英語スピーキング問題の種類をまとめた

問題の種類

英語のスピーキングテストには、主に以下の種類があります。

  • 文音
  • 写真描写
  • 電話インタビュー
  • 表読み取り
  • 問題理解と対処方法の提案
  • 意見を述べる

これらの問題の種類毎に、以下をまとめました。

  • 概要
  • 使える表現
  • コツ

書き手のレベル

DMM英会話のスピーキングテストの結果は、レベル6でした。

そんな人が書いている記事です。

DMM英会話のスピーキングテスト結果

早速、まとめていきます。

なお、以下のページを参考にしています。

文音

概要

3,4文の英文が表示されます このような文章を時間内に正確に分かりやすく読むテストです。

Thank you for contacting the Anderson Health Clinic. We regret that our office is closed for the day, so no one can take your call. To make an appointment, please leave your name and number, and someone will call you back the following day. Our regular hours are from nine A.M. to six P.M. from Monday to Friday.

使える表現

特になし。読め。

コツ

  • , や . で静止する
  • 意味の区切りで静止する
  • イントネーションを意識する
  • 心を込めて読む(抑揚)

特にイントネーションは大事です。重要な情報を言う前は、トーンをあげる必要があります。 詳しくは、このサイトなどで勉強すると良いです。

基本的には、以下の文章で上がり調子に発音します。

  • yes, noを聞く疑問文
  • 聞き返す場合
  • 言いたいことを言う前の文章 (Before you enter the country⤴, you need to get a visa.)
  • andとorの前の単語 I like apples⤴, bananas⤴, and oranges⤵.

写真描写

概要

写真を見て、英語で説明するテストです。

写真描写の例

使える表現

  • 基本 (見たままを言う)
    • This is a picture taken 〇〇
    • There are a lot of 〇〇
    • In the middle of the picture, I can see
    • In the background, there is a 〇〇
  • 応用 (予想を言う)
    • I guess it seems a 〇〇 place for 〇〇
    • I think it is winter since the people are wearing long coats.
    • The students are probably doing a group project, so they decided to meet in the library.

コツ

以下をスラスラ言えれば満点だと思います。

  • [メイン] どこで誰が何をしているのか?
  • その人は、どんな格好をしているのか
  • [サブ] 後ろ(左右前)には、何が見えるのか?
  • その写真から何が推測できるのか?

電話インタビュー

概要

だいたい、3問質問される。

例えば、

  1. How often do you take public transportation, and what kind of public transportation do you usually take?
  2. What are some advantages of taking public transportation?
  3. Think about the public transportation in your city. How can it be improved? Why do you think so?

使える表現

* I take the train two times a week. 
* I prefer to do, insted of 〇〇
* There are some advantages to taking public transportation. 

コツ

  • direct the point. 結論から先に.
  • PREP: point→reason→exmaple→point

表読み取り

概要

ここもだいたい質問は3個。

表読み取りのテスト

大体のパターンは以下です。

  • 用事があって7:30ぐらいに着くんだけど、どのイベントをmissしちゃう?
  • 8:15からあるのは、Course Dinnerって聞いたけどあってますか?
  • ゲストスピーカーのイベントの後には、何のイベントがあるか?
  • 〇〇さんの話聞きたいけど、どのイベントで話すの?

基本的には、最後の問題は2つ以上の情報を組み合わせる必要があります。

使える表現

* There are 2 events after 〇〇
* No that's incorrect. (No that's not correct)
* If you want to participate in 〇〇's events, you have to come here before 〇〇. the first event is 〇〇, the second is XX

コツ

基本は、↑の表現を覚えておけば問題ない。

ただし、難しい質問、聞き取りにくい質問もあるので、集中して聞くべき。

問題理解と対処方法の提案

概要

3分程度の英文が読まれ、それに対して以下を1分で答えます。

  • 何を話していたか?
  • アドバイスや対処法は何か?

例えば、以下のようなパターンがあります。

  • 就活でどの会社を選べば良いかわからないんだよね。あなたは、どのような基準で選んだのか?
  • 新しくスポーツをやろうと思ってるけど、踏み出せないんだよね。何かおすすめの方法はある?

使える表現

まずは、話をわかったアピールします。

Hi. 〇〇, It's me "自分の名前". I've got your message, I understand that you're "何をしようとしているのか".
You are concerned about it. 

次に、ちょっと自信ないけど、アドバイスすると言います。

I'm not so sure if I can be any help to you. 
let me explain how I prepared myself for my 〇〇

テキトーに話ます。例えば、就活なら

In my opinion, The most important factor to choose the company is the salary. 
because  I would like to have various experiences at a young age. For doing that, a high salary is needed. 
for example, I would like to travel 〇〇 once a month.〇〇~~~

最後にまとめます。

Don't worry so much. you can do it.

コツ

何よりもまず聞き取りです。聞き取れないと何も話せません。

読まれたキーワードを覚えておいて、「こんな話でしたよね?」って話すだけでも、点数はもらえると思います。

そのあとは、PREPを用いて話せば大丈夫です。

意見を述べる

概要

あなたは、この文章に賛成ですか?反対ですか?その理由と例を教えて。って問題です。

例えば、以下の問題があります。(今思いついた)

  • グループワークと個人ワークどっちが好き?
  • 転職をする上で最も大切なfactorは何?
  • 大企業とベンチャーどっちが好き?
  • インドアとアウトドアどっちが好き?
  • 夏と冬どっちが好き?
  • 電子書籍と紙の本どっちが好き?

英語だとこんな感じ。

Do you prefer to work on group projects or do assignments by yourself? Give reasons and examples to support your opinion.

使える表現

「転職をする上で最も大切なfactorは何?」に答えるとしたら、

最初にPointを話す。

In order to change careers, the salary is the most important factor.

次にReasonを話す

Because I live alone and pay for all living costs by myself. So I have to get a high salary.

次にExmapleを話す

(in general) in japan, the average monthly income is about 240,000Yen.
If I live in Tokyo, about 100,000yen is needed to live. In addition, I have to pay the food expenses, utility expenses, and so on.
Every month, I have a little money left over. So I can't go out with some friends frequently(so often).  

水道・光熱費 (電気・ガス)などの生活に必要なエネルギーにかかる費用= utility costs / utility expenses

コツ

テキトーな理由でも大丈夫なので、とりあえず話す。

まとめ

  • 文音
  • 写真描写
  • 電話インタビュー
  • 表読み取り
  • 問題理解と対処方法の提案
  • 意見を述べる

これらの問題の種類毎に、以下をまとめました。

  • 概要
  • 使える表現
  • コツ

本記事を読みつつ、対策して高得点を目指しましょう

院卒の社会人2年目が、メモの魔力を読んで衝撃を受けた話

「このブログはアフィリエイト広告を利用しています」

メモの魔力

なぜ読んだのか

  • 人から勧められた
    • 生きる上での道しるべ
    • 考えが変わった
  • その人は、考えしっかりしていて筋が通っていて、面白いと感じた

どういう人に読んで欲しいのか

価値観(自分が何者で何をしたくて、何が楽しくて今後どうなりたいか)がはっきりしていないひと。

  • 就活生
  • 新卒

何が学べたのか

  • メモを取ることの利点
  • メモを取ることで何が変わるのか

今後この学びをどう活かしていくか

  • 自分の判断軸で、人生の選択をする
  • 事実やアドバイスから、抽象化、転用を考えて、応用力をつける

終わりに

  • 人生悩んでいる人は、絶対よめ

純日本人が「僕はイエローでホワイトでちょっとブルー」を読んだので感想書く

ネタバレ含みます

「このブログはアフィリエイト広告を利用しています」

はじめに

純日本人で田舎育ちの社会人2年目の僕が、「僕はイエローでホワイトでちょっとブルー」を読んだので感想書きました。

物語のストーリー

市の小学校ランキング1位の公立カトリック校を通っていた僕の話。

この小学校を卒業した人は、ほぼ100%カトリック中学校 (これも市で1位)に進学する。

しかしこの主人公の僕は、そこには進学せずに元底辺中学校に進むことを考える。

この元底辺中学校は、白人労働者階級の子供が通う中学として知られていた。

生徒はタバコを吸ったり、中華料理屋にレンガを投げ込んだりする問題も学校であった。

進学理由は、仲の良いクラスメイトが元底辺中学校に進学するから。

これに父親は反対。

父親「白人だらけだから、ハブられる。カトリックでラッキーで入学できたトップ小学校を辞めるのはもったいない」

子供「決意は変わらない」

こうして、元底辺中学校に進学するところから物語は始まる。

僕 のスペック

  • トップ小学校で生徒会長する。真面目くん
  • ギターはそこそこ
  • 東洋人顔
  • 母親はボロい借家に住んでいた (p88)

物語で記憶に残ったところ

ぼくはイエローでホワイトで、ちょっとブルー

この本のタイトルにもなっている。母親が、息子の僕のノートで見つけた落書きである。

これを見つけた母親は、「胸の奥で何かがことりと音を立てて倒れたような気がした」と語っている。

イエローは、黄色人種。この主人公の外見である。

ホワイトは、主人公の中身を表す。

ブルーは、感情を表す。主人公は、ブルーの意味を「怒り」と思っていたが、授業で間違えて本当の意味を知った。

私は、本当の意味で書いた落書きなんだろうなと思っている。

多様性の良さ

多様性があるとややこしくなる(喧嘩や衝突が発生する)。けどそれが良い。多様性がないと無知になるから。

母親「多様性はうんざりするほど大変だけど、無知を減らすからいいことなんだと思う」と言っている

他人の靴を履いてみること

EU離脱テロリズム問題、世界中で起きている色々な混乱を乗り越えるためには、自分とは違う立場の人々や、自分と違う意見を持つ人々の気持ちを想像してみることが大事。

これが他人の靴を履くこと=emapthyである。

sympathyは、感情や行為や理解。自分と似たような意見を持っている人々に対して抱く感情

emapathyは、共感できる能力。自分と違う意見を持つ人を想像する力

地雷だらけの多様性ワールド

黒人の転校生が僕のクラスに転校してきた話。その母親が、主人公の母親と会話するシーンがある。

僕の母親「あなた、何年生の子供を持っているの?、担任の先生は誰?」

これを先に言わないと、黒人で判断していることがバレてしまう。ポリティカルコレクトネス的に配慮に欠ける。

あけすけ: あけっぴろげで、露骨なこと。包み隠しのないこと

デモの話

ランキング上位校の学校の先生は、学生をデモに行かせる割合が高い。なぜなら、先生も党支持者で理念に染めたい理由があル。

しかし、元底辺中学校は違った。デモには行かせない。学校の授業をやらずにデモに行かせたら、勝手に街で遊んでしまい、学校の評判を下げかねない。(元底辺中学校の校長は、今後の学校の評判を大切にしている。)

また、認められない学校の欠席は、罰せられる。そのため子供はデモには行かなかった。

cynical, sarcastic, and ironicの違い

本書では、シニカルって表現がある。

カトリック中学には、格差が拡大して放置されている。なんというか勢いがない。硬直している。 11歳の子供があんなシニカルなところに通う必要はない気がした。

このシニカルを調べると、「皮肉っぽい態度をとるさま。冷笑的」と出てくる。

皮肉と聞くと、sarcasticやironicが思い浮かぶのでちゃんと調べた。参照

  • Cynicalは、自分の利益を優先したために信用を失うこと。または自分のことしか考えないこと

例文: 政治家として何年も働いた後、彼は慈悲団体に募金できなくなるぐらいに超Cynicalになった。

状況: ジルの部下(Jill’s subordinate)は、仮病を使いまくったので、病気と言っても彼女は彼を信じなかった。

  • Sarcasticは、本当のことと逆のことを意味する。本人は冗談で言ってるけど、聞いた人が理解するかは相手の頭の良さによる。

例文:汚くて荒れたホテルに着いた(at the dirty, run down hotel)時に、友達「Wow!めっちゃ良いホテル選んだね」と言った

状況:この数年で超太ったRamonaは、同窓会(school reunion)に参加した。クラスメイト「お前全然変わってないね!」

reunion: re(再び)+union(統合)する=同窓会

  • Ironyは、期待してたこととは全く別(逆ではない)のこと。sarcasticと似ているけど違う。

例文: 悪天候を避けるために、結婚式を延期した。皮肉なことに、延期した日は台風が来た。 状況: 彼は8時間もかけてこの駅に来た。玉ちゃんを見るために。だけどね、たまちゃんは2015年には死んでいた。

終わりに

本を読んで思うことは、人それぞれ。

私の記憶に残った部分とはまた違うことが記憶に残ると思います。

ベストセラーの本なので、読んでみると新たな発見があるかもしれません。

Sentry無料プランでDjangoのエラーをSlackに通知する

背景: Sentryを使ってDjangoのエラーを無料でSlack通知したい

関わっている案件において、Heroku上で動いているDjangoサーバにSentryを導入して、Slackにエラー通知をしていました

今まで何事もなく動いていたSentryのSlack通知が、このようになりました。

トライアル期間までの時間

Uh oh. Sentry is going to stop Slacking you soon. Your plan doesn't support the Slack integration, all Slack alerts will stop after 6月29日 09:59.

意訳「君のプランじゃSlack統合サポートしないよ。 6月29日 09:59以降はSlack通知しないからね。」

そして6月29日 09:59以降...

Sentyのサポート期間切れ

Your Slack integration has been disabled. Your Sentry organization 〇〇 is on the Developer Plan. Upgrade to our Team or Business Plan to re-enable this integration.

意訳「Developer PlanだからSlack統合使えないよ。TeamかBusinessプランにしてくれよ」

私「仕方ねえな。お値段見てみるか」

SentryのTeam・Businessプラン料金

私「...高いな」

私「無料プランで通知させる方法調べるかー」

クラスメソッド「Sentry無料プランでSlackにエラー通知する方法!!!」

私「どれどれ...」

クラスメソッド「AWS APIGateway+LambdaでSentryからの通知を受け、そこからSlackに通知する方法を紹介します。」

私「んーAWSとか使わずにDjangoだけで済ませたいけど、googleで見つけられない....」

私「しゃーない。私がやるか」

この記事は、Sentry無料プランでDjangoのエラーをSlackに通知するための記事です。

作成したSlack通知

構成図

必要な設定

以下3つの設定が必要です。

  • Slackの設定
  • Djangoの設定
  • Sentryの設定

順番に書いていきます。

Slackの設定: Incoming Webhookの追加

通知したいチャンネルを選択します。

Incoming Webhookの追加方法

APP>"アプリを追加する"を選択し、Incoming Webhookを追加します。

画像のようにIncoming Webhookの設定をします。

Incoming Webhookの設定

このWebhook URLは後のDjangoの設定に必要になります。

Djangoの設定

以下の作業を実施します。2を詳しく書きます。

  1. DjangoにSentryを追加する
  2. Djangoにエラー情報を受け取るエンドポイントを生やし、SlackにPOSTする

1はSentryの公式を見てください。

2は、以下の画像部分です。

Djangoにエラー情報を受け取るエンドポイントを生やし、SlackにPOSTする

urls.pyに以下の新しいAPIエンドポイント作成コードを記述します。

    url(r"^error", views.ErrorView.as_view()),

ErrorViewは以下のようにしました。

class ErrorView(APIView):
        """
        sentryからエラー情報をpostしてもらい、slackにpostする
        """
    def post(self, request):
        sentry_body = request.data
        message = sentry_body["message"]
        url = sentry_body["url"]
        slack_post({"text": f"{message} \n\n {url} "})
        requests.post(WEBHOOK_URL, headers={"content-type": "application/json"}, data=json.dumps(data))
        return Response(sentry_body, status=status.HTTP_200_OK)
    )

WEBHOOK_URLには、Slackの設定のWebhook URLを指定します(環境変数等で)

参考までに、sentryからのAPIリクエストの中身を残します。

{
    "id": "***",
    "project": "***",
    "project_name": "***",
    "project_slug": "***",
    "logger": "None",
    "level": "error",
    "culprit": "django.db.models.query in __getitem__",
    "message": "",
    "url": "https: ***",
    "triggering_rules": [
        "Webhooks経由でのエラー通知",
    ],
    "event": {
        "event_id": "***",
        "level": "error",
        "version": "7",
        "type": "error",
        "fingerprint": [
            "{{ default }}"
        ],
        "culprit": "django.db.models.query in __getitem__",
        "logger": "",
        "modules": {
            "aiohttp": "3.8.1",
            "aiosignal": "1.2.0",
...
}

Sentryの設定

Sentry無料プランでSlackにエラー通知する方法の”Sentryの設定手順”を参照してください。

特にCallbackのURLの指定と、アラートの設定が重要です。

このCallback URLsには、DjangoAPIエンドポイント({DjagnoサーバのBASE_URL}/error)を記述します。

Alert設定は、Send a notification via Webhooksを設定してください。これを忘れると、SentryからDjangoにPOSTされません。

ちなみに、サーバにAPIがない場合は以下のエラーになります。

サーバにAPIが準備されていない場合のエラー

まとめ

上記の対応をすることで、Sentry無料プランでDjangoのエラーをSlackに通知できるようになりました。

ただし上記の実装だと、Sentryからの検証はできていません。

それを検証するコードの実装は、またの機会にさせてください。