DNSの歴史:私たちのインターネットを支える技術の変遷
エンジニアとして働いていく中で、よく聞くけど正しく認識できていない機能はよくあると思います。その中でも今回はDNSについてまとめていきたいと思います。
DNS(Domain Name System)とは?
DNSは、人が覚えやすいドメイン名(例:google.com)をコンピュータが扱えるIPアドレス(例:142.251.46.238)に変換する仕組みです。DNSは階層的なツリー構造になっており、ルートサーバー、TLDサーバー、権威サーバーの3つの基本レベルで構成されています。
DNSルックアップのプロセスは以下のようになります。まず、ブラウザがDNSリゾルバーにドメイン名を送信し、リゾルバーがDNSサーバーに問い合わせます。DNSサーバーは、ルート名前サーバーに問い合わせ、TLD名前サーバーのIPアドレスを受け取ります。TLD名前サーバーに問い合わせることで、権威ある名前サーバーのIPアドレスを取得し、最終的にIPアドレスがブラウザに返されます。DNSルックアップは、一般的に20〜120ミリ秒で完了します。
これらのプロセスによって、私たちは覚えやすいドメイン名を使ってインターネットを利用できるようになっています。
なぜDNSを使用するのか?
DNSにはいくつかのメリットがあります。
IPアドレスを覚える必要がない
人間がIPアドレスを覚えるのは難しいため、DNSは人間が覚えやすいドメイン名を提供することで、ユーザーにとってより使いやすくなります。
変更を簡単に反映できる
IPアドレスは変更されることがあり、これらの変更をすべてのWebサイトやサービスに通知するのは困難です。しかし、DNSを使用することで、IPアドレスが変更された場合でも、DNSレコードを変更するだけで、変更を簡単に反映することができます。
スケーラビリティ
DNSは階層的な構造を持っているため、数千万のドメイン名を管理することができます。この構造により、DNSは非常にスケーラブルであり、Webサイトやサービスが急速に成長しても対応できます。
セキュリティ
DNSは、セキュリティ機能を提供することもできます。例えば、DNSキャッシュポイズニングやDNS攻撃から保護するための機能があります。
どのように機能するのか?
- ブラウザに「google.com」と入力され、ブラウザはドメイン名をDNSリゾルバーに送信します。
- リゾルバーはDNSルート名前サーバーに問い合わせます。
- ルートサーバーはTLDサーバーのアドレスをリゾルバーに返します。この場合、.comです。
- リゾルバーはその後、.com TLDにリクエストを送信します。
- TLDサーバーは、ドメインの名前サーバー、すなわちgoogle.comの権威ある名前サーバーのIPアドレスを返します。
- DNSリゾルバーは、ドメインの名前サーバーにクエリを送信します。
- 名前サーバーからgoogle.comのIPアドレスがリゾルバーに返されます。
- DNSリゾルバーは最初に要求されたドメインのIPアドレス(142.251.46.238)をブラウザに返します。
本記事は以下の動画を参考にさせていだだきました。
Everything You Need to Know About DNS: Crash Course System Design #4 - YouTube
UoL ~ロンドン大学のCSを学ぶ~
現在、コロナウイルスの影響もあり、オンラインでの学習が促進されているように感じます。私自身も2022年の4月からイギリスのUniversity of LondonにてComputer Science をオンラインで学び始めました。
本記事では、出願までの経緯と準備内容について綴りたいと思います。
目次
UoLとは
ロンドン大学とは、1836年に設立されたイギリス・ロンドンに位置する連邦制大学であり、複数のカレッジや研究機関の総称となります。そのため、ロンドン大学は特定の大学ではなく組織名であり、現在17以上の加盟大学がロンドン大学に属しています。
私はその中でもGoldsmithsというカレッジに所属しており、フルタイムの勤務を続けながらComputer scienceをオンラインで学んでいます。
本記事では、動機や出願までの準備をまとめていきたいと思います。
授業内容については、また次の記事でまとめようと思います。
何故CS
今回入学を決めた動機は主に、以下の3つになります。
1. CSの学位
CSという学位の必要性についてたびたび議論されますが、個人的には必要だと感じていて、その価値は若ければ若い方が大きくなると考えています。
その理由としては、経験が浅いエンジニアにとってCSの学位は知識の証明となり、アサインされるプロジェクトや、入社する企業などキャリアのスタートを決める上で、重要な要素になりうると考えているからです。
また、CSに関連する大学レベルの数学や低レイヤーの理解は、技術変化の激しい業界で新しい技術を理解・身につけていく上で、大いに役に立つと考えています。つまり、授業そのものの内容に加え、将来学びうる新しい概念の習得手段としての価値もあると考えています。例えば、機械学習の論文など、そもそも大学レベルの数学力がなければ理解できないように、新しい概念を理解するためには、前提となる知識が求められるケースが多く、このギャップを埋めるためにもCSは良いのではないかと考えています。
また、将来海外での就職(特にアメリカ)を考えた際、CSの学位はビザの観点からも有利に働くと考えています。
2. 知識の土台作り
エンジニアとしてキャリアを進めていく中で、あらゆる機能が扱いやすくなっている一方で、ある種ブラックボックス化が進んでいるとも考えられます。
このままだと、便利な機能をパズルのように組み合わせるだけのエンジニアとなってしまい、この状態はエンジニアとしての成長とは言えないように感じていました。
上記のように抽象化の恩恵を受けながらサービスを組み立てる側から、ブラックボックス内の仕組みを作る側に移行する必要があると考えています。
技術の使い手から作り手になった時、目先の技術だけでは解決できないケースに遭遇すると考えており、幅広い分野を体系的に学ぶことはこれらの対策にもなると考えています。
一見関係のない学問でも、新しいアイデアをもたらしてくれたり、他の学問を学ぶ上で利用したり、ふとした時に役に立つと思います。
3. 学問としての興味
色々理由を述べましたが、決め手は単純な学問の興味です。エンジニアとして働いていく中で、なぜこのように動くのか、なぜこの設定をする必要があるのか、どのようにパフォーマンスを上げることができるのか、疑問は常に浮かんできます。
これは、コンピュータの仕組みや技術の背景を理解することによって解消、もしくは理解しやすくなるのではないかと考えています。
動いたから良いのではなく、バックグラウンドで何が動いているのかを詳細に理解したいという欲求が決め手だと考えています。
準備事項
本コースに応募する際の準備書類は以下の5つになります。
1. IELTS
非英語圏に住んでいる応募者は、英語能力を証明する書類が必要になります。
自分は、IELTSを選択しました。スコアはOverall 6.0以上、各セクション5.5以上を取得する必要があります。
詳細は以下になります
IELTSの準備期間としては2ヶ月半ほどしかなかったため、以下の教材を毎晩ひたすら解いたり、留学中の友達とライブコーディングをしながらスピーキング能力を高めました。
また今度、じっくりライティングの勉強をしたいと思います。
2. Statement of purpose
これは、日本で言う志望理由書にあたり、何故UoLで学びたいのか、またその学びがどのように将来役に立つのかを書きました。
UoLにはPerformance bace とStandard の2種類の応募方法が存在し、Performance baceが過去の成績・社会人の経歴を提示し入学する形式で、Standardが数学の試験(GCSE Mathematics (Grade A*-B / 9-5) or AS Level Mathematics (A-E), or equivalent.)を受験し入学する形式になります。
自身は前者のPerformance baceで入学しましたが、このタイプの入学には以下の条件があります。
If registering through the performance based route you must satisfy the following before progressing onto the direct entry:
- Pass both Introduction to Programming I and either Computational or Discrete Mathematics with a weighted average of 40% or above.
→最初のクラスをパスしないと、次のクラス登録できないので注意してください。(意訳)
3. RESUME
英語の履歴書を作成していたので、提出しました。
以下のリンクを参考に英語の履歴書を作成しました。
4. GPA
5. 卒業証明書
上記2つの書類は英語版を大学から取り寄せました!
手続きはお早めに!
比較大学
今回大学を選択する上で、以下の大学との比較を行いました。
各大学の特徴は先人の方がまとめてくださっているためご参照ください。
おまけ
最後に太宰治の小話で締めくくりたいと思います。
勉強というものは、いいものだ。代数や幾何の勉強が、学校を卒業してしまえば、もう何の役にも立たないものだと思っている人もあるようだが、大間違いだ。植物でも、動物でも、物理でも化学でも、時間のゆるす限り勉強して置かなければならん。日常の生活に直接役に立たないような勉強こそ、将来、君たちの人格を完成させるのだ。
学問なんて、覚えると同時に忘れてしまってもいいものなんだ。けれども、全部忘れてしまっても、その勉強の訓練の底に一つかみの砂金が残っているものだ。これだ。これが貴いのだ。勉強しなければいかん。そうして、その学問を、生活に無理に直接に役立てようとあせってはいかん。ゆったりと、真にカルチベートされた人間になれ! これだけだ、俺の言いたいのは。
太宰治著「正義と微笑」より
GIthubで授業の内容をまとめています。
興味のある人は覗いてみてください。
キャリアについて考えてみる
こんにちは、クラウドエンジニアのatsushiです
今日は、新卒ながらキャリアについて考えていることを書き出してみます
社会人経験が1年も経っていないため、特にノウハウの共有などはありませんが、新卒の頃はこんな事思ってたなと、共有してもらえれば良いかと思います。
大学時代
まず、キャリア観を話す前に、大学時代の話をしたいと思います。
自分は、私大の文系大学を卒業し、その中で1年間のオーストラリア留学を経験しました。
何故、海外留学を決意したかと言うと、2011年の震災を地元の福島県で経験した際に、日本国内、そして海外から多大な支援をしていただき、自分も日本のみならず世界の課題を解決できる人材になるべく留学を行いました。
留学先では、マーケティングを専攻し、現地大学生と共に深夜まで勉強に励み、留学先で出会った中国、インド、スイス、クェート、フランスなど様々な友人と夜な夜な勉強していました。
留学中で一番刺激的だったことは、学習に対する熱量です。自分も割と深夜の1時、2時まで勉強することはざらだったのですが、インド人の学生は、自分が帰る2時過ぎでも、白熱した議論していた印象があります。
この時に、『普通に勉強しているだけでは、勝てないな』と思うようになり、普通のハードルが上がった気がします。
海外インターン
大学の学習だけでなく、現地のでの長期インターンもキャリア観を形成していく上で重要なポイントになった気がします。
自分は
*JTB・・・2ヶ月
*スポーツイベントの開催・・・1ヶ月
計3ヶ月現地でインターンシップを行いました。
現地で働いてみて思った感想としては、『英語はそこまで問題ではないが、話をメインにする仕事は相当ハードルが高くなる』と言うことです。
同僚とのコミュニケーションやお客様との会話はそこまで障壁にはならなかったですが、いざ、細かい意思疎通や説明をする際に、英語は大きな障壁になると感じました。
ただ、専門分野(コンピューターなど)を活かして働く場合、そこまで難易度は高くないのではないかと思いました。
この経験もあり、自分は、就職活動をする際は、海外展開✖︎ITを軸にして就活を進めました。
結果として、海外展開しているIT企業に勤めることができました。
(留学に関しては、まだまだ書き足りないことがあるので、また別の記事でまとめたいと思います。)
つらつら書きましたが、こんなこともあり、周りの学生に比べたら、社会を甘くみてると言うよりかは、世界にはまだまだ卓越した人材が山のようにいて、普通に勉強をしていたら埋もれてしまうと言う危機感を持って生活していました。
また、失敗という捉え方ではなく、全ては経験という考え方が身につき、より多くのことに挑戦できるマインドが身についたと思います
(挑戦の一環で、外務省でプレゼンしたり、自社養成パイロットの試験などにも挑戦しました。※三次試験まで通ったので、パイロットにも期待しました。しっかり落ちました。)
思い描いていた社会人生活
学生時代に考えていた社会人生活としては、バリバリに仕事して瀕死しているという感じです。
実際は着実に仕事を丁寧に行っていくという印象が強く、こんな感じかーと思いました。(職種がクラウドエンジニアということもありますが、)
しかし、先輩社員との知識量や経験には差があるため、いかに技術を盗めるか考えています。
よく『キャリアは偶発的に構築されていく』のような考えがありますが、実際は、なりたい方向にいくための、施策を常にうちチャンスをまつ、『人事を尽くして天命を待つ』という考えの方が正しいのではないかなと考えています。
意外と社会人になっても作ろうと思えば、学習時間も確保できるなーとも思ったので、社会人のCS修士を目指して学習しています。
もし、やりたいことがあるのであれば、運命に任せるのではなく、偶発的に目指している場所に辿り着いた、と思える努力をしていきたいです。
その結果、世界の課題を解決できるような人材になれるよう、抜け道を探しながら業務に励んでいきます。
be unique!
※勉強仲間募集中です!
【2021年10月】AZ-104:Azure Administrator Associate合格体験記
本日(2021年10月17日)、MicrosoftのAZ-104の試験に合格することができたため、合格までの勉強方法を簡単に共有させていただきます。
Before you read...
勉強方法を共有する前に、"Azureの位置付け"と"資格をとる価値"について考えていきたいと思います。
実際に、MicrosoftのクラウドサービスであるAzureは、クラウド市場に置いてAWS(Amazon)に続く、第2位に位置付けており、成長率50%とグングン成長しているクラウドサービスです。
同年のAWSの成長率35%という数字と比較するとAzureは、一番勢いのあるクラウドと言っても過言ではありません。
そんなAzureの試験の中で、AZ-104の試験は中級に位置付けられており『最も稼ぐことができる資格Top15』にも選出されています。
このような状況を鑑みると、Azureの資格を取得しておくことは十分に価値があることだと考えられます。
それでは、早速本題に移りましょう!!👾
学習期間
学習期間は大体、1ヶ月半(3時間/day)くらいです。
土日は5時間くらい勉強していました。
業務ではAzureを使用しているものの、実際触った経験はないです。笑
Azureの資格に関しては、2021年8月にAZ-900の資格を取得し、ベースの知識はあったと思います。
使用教材
学習教材は主に3つです。
①MS learn
Microsoftが提供している、無料のオンラインコースです。
トータル30時間あるため、ボリュームが多いため、
- 知識が浅い方は、ザーッとサービスの全体確認をしながら流し読み
- 多少知識はある方は、不明な点を重点的に読んでいく
というスタンスで良いと思います。
(真面目に読んでいると、2週間以上かかります。
自分はそのぐらいかかりました。。)
②Udemy
上記の問題集をメインに学習しました。
しかし、途中で問題集がUdemyから消えてしまったため、③のExamTopicを中心に学習しました。
日本語版の問題集もあるため、こちらもおすすめです。
③ExamTopic
海外の無料学習サイトです。
こちらは、本番の問題形式に近いものの、誤答が多いため、ユーザーのコメントをみたり、参考リンクを元に、自分で答えの根拠をつかんでいくことが大切です。
問題はトータルで300問程度ありますが、
【問題を解く→リファレンス読んで回答の根拠を見つける】
を繰り返していく中で、段々と理解が深まっていくはずです。
※この問題集に関しては、丸暗記ではなく、リファレンスを読んで根拠を持つことを意識して問題に取り組んでみてください
コメント
基本的にMicrosoftの試験に関しては、日本語の教材が少ない状況です。
英語が苦手な方は、使用教材>②Udemyで提示した日本語の問題集を参考に学習してみても良いかもしれません。
もしアカウントがあるのであれば、実際に画面をみながら問題を解いていくと、理解が深まるのでおすすめです。
何か質問があればコメントをください。
皆さんの成功を祈ります。ともに頑張りましょう
理想の先輩エンジニア 〜新卒はこう感じている〜
hi there!
hatakeです
2021年の4月からクラウドエンジニアとして働いていく中で、上司とのコミュニケーションの難しさを日々感じています。
そんな中でも、”一緒にいると学べるなー”と思える上司がいて、このような人に限って、仕事でも結果を出している人が多い気がします。
現在は、新卒として下の立場にいることが多いですが、後輩の立場から見て、どのような上司と働きたいと感じたのか、そして、自分が嫌だと感じた上司の態度を、自分が上司になった時、どのように改善していくべきなのか、新卒目線から考察したので、共有してみたいと思います。
情報の粒度を合わせてくれる
これは、新卒もしくは、中途が入った人が誰しも通る道だと思うのですが、現場ならではのノウハウ、ルールなど単純な知識では補いきれないものが、どうしても出でくると思います。(新卒の時は、技術面でも、わからない単語にわからない単語が追い討ちをかけてくる時があります、、)
【case】
例えば、業務に関連する質問した際に、
- 情報をそのまま伝える人
- 情報を分解して、粒度感を合わせてくれる人
がいます。
この場合、もちろん後者の方が、聞き手にとって理想的な対応になると思います。
結局、①のレベル感で情報伝達をしても、理解できるまでに何ターンかする必要があるので、情報分解の手間を惜しまず行い、認識のレベル感を合わせていくことが回答者の対応として大事だと感じています。
思考のフレームワークを共有してくれる
これは『魚ではなく、魚の取り方を教える』的な考え方です。
【case】
例えば、特定タスクのレビューをお願いした時に、修正箇所を指定するだけでなく、なぜその部分がダメなのか、理由を共有してもらったほうが、理論を学べるため、他の場面でも自ずと修正していけると思います。
つまり、何を修正すべきなのか(what)ではなく、なぜ修正すべきなのか(why)を伝えていくことが、後輩の成長に繋がると考えています。
実際に理由を伝えてもらったほうが、レビューに対する納得感や、その後の作業に活かせることが多かったので、後輩を育成する際には理由の伝達という部分を行なっていきたいです。
軸となる考え方の共有
これは、先輩がどのような対応を望んでいるのか、現場で大事にすべき業務に対する姿勢など、業務を進めていく上での行動指針の基準を共有してもらったほうが後輩にとってありがたいという話です。
【case】
例えば、自分は質問をする際に"15分ルール"を設けています。
これは、お互いの時間を無駄にしないために実践しています。
ここで、都度質問し解決していくのを好むのか、それともまとめて質問されるのを好むのか、人それぞれだと思います。
その時に、上記の質問のされ方を予め共有してもらったほうが、お互いにとってより理想的なコミュニケーションの構築に繋げていけると思います。
まとめ
クラウドエンジニアは特に、周りとミュニケーションをとる機会が多く、認識の齟齬を少なくして業務を進めていくことが大事だと思います。
後輩の育成に関しても、お互いに話しやすい環境作りを行うため、お互いのスタンスを共有していくことが大事すね。
今月、AZ-104の試験があるので次回は、合格体験記を共有したいと思います。
一緒に頑張りましょう
【AZ-900合格体験記】~Microsoft Azure~
今回は、AZ-900の合格体験記を簡単にまとめます
案件の関係でAzureを扱うことになり、『Azure触るのに資格持ってないのもな〜』と思ったので、とりあえず受験してみました
〜目次〜
試験の概要
NDAの関係で細かい内容は共有できませんが、ざっくりとした傾向として以下のような感じだと思います。
→AZ-900はAzureの試験の中でも初級者向けの資格となっているため、サービスの内容を問う問題が多い気がします。associateレベルを受験する前の概要理解に適した試験だと感じました。
対策期間
対策期間としては、10日くらいです(2h/day)
※前提知識の有無によって変わってくるため参考までに
対策方法
今回学習に使用した、学習教材は以下の2つです
1:MS learn(無料)
Microsoftの学習教材は、充実しているのでこれだけでも合格できる人はいると思います。
各種サービスの説明やユースケースなども併せて説明されているため、無料なのに高品質な学習教材でした。
2:Udemy(有料 〜セール中は1,800円程度〜)
AZ-900に特化した問題集です。Azureは基本的に日本語の教材が少ないため、日本語対応した貴重な問題集となっています。
エンジニアで海外就職を狙っている人は、積極的に英語のドキュメントを読んでいきましょう。私も読みます。(一蓮托生、、、)
コメント
対策方法でも述べましたが、MS learnだけでも十分合格を狙えると思います。
ただ、AWSに比べAzureは問題形式が若干異なるため、問題慣れするために、問題集を学習するのが良いかなと。
共に頑張りましょう
寝なければ!
次回はAZ-104を受験予定
【AWSSAA-C02】一発合格に向けた勉強方法 〜AWS Certified Solutions Architect – Associate〜
初めまして、hatakeです。
現在、都内のIT企業に就職し、社会人生活の4ヶ月が過ぎました。
クラウド部に配属となり、現在、資格の取得と案件に励んでます。
現在のスペックはこんな感じです。
LinuC Level1 / AWS CLF / AWS SAA
と、まだまだ感がすごいですが、先日AWS SAAの試験を一発で取得することができたので、その際の勉強方法をつらつら書いてみようかと思います。
というのも、自分が資格取得の際に他の方の記事が参考になったのと、受験前の段階でどの程度勉強したら合格ラインに達しているのかなど、試験に向けたレベル感が掴みやすかったので、今回の記事はサンプル1として、軽くみてもらったらいいですね
〜目次〜
①学習期間
学習期間としては、大体40日程度で、時間に直すと250~300時間は勉強した気がします。
他の記事を見ていると、20時間程度で合格する猛者もいるっぽいですけど、AWSの経験が浅い方は、少なくとも150〜200時間ぐらいは勉強時間を確保しておいた方がいい気がします。
とはいえ、時間はあくまで目安でしかないので、学習方法を工夫するなりすれば短縮できると思います。
今回試験を受けてみて、試験と勉強方法があまりマッチしていないような気がしたので、後半ではその辺の情報や勉強方法をシェアします
②学習教材
教材を複数購入する人や、一冊のみの人がいますが、自分は主に以下の4つをベースに学習しました
1、AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト
AWSのサービスについて分かりやすくまとめられた本でした!ただ、内容が少し古かったり、試験で求められる内容に達していないような気がするので、問題集を購入するなり、追加の学習が必要です。
ただ、初学者の方が、AWSについてざっくり知りたいという人には向いている本だと思います。
2、【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)
実際のテストに近い問題集です。人によるらしいですが、この問題集に近い内容の設問が試験でも問われるそうです。自分はほぼ初見問題だった気がします。。。
ただ、この問題集を通して、サービスのユースケースや特徴を抑えることができたので、その部分は試験に大いに役立った気がします。
3、これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
AWSの経験が浅い人向けの教材になっています。ハンズオンを中心とした学習となっており、それぞれのサービスについて細かく解説されているので、教材よりも深い知識を得ることができると思います。
ただ、トータルで32時間あるので、真面目にハンズオンをやっていたら倍以上の時間がかかります(自分はハンズオンもやったので、3倍の時間がかかった気がします)
→おすすめの勉強方法は、概要を理解し、ハンズオンは流し見することです。
ざっくり、設定の流れやボタンの場所などを覚えれば、十分です。
なんせ、いくら正しくサービスを構築できても、試験の内容とは異なるので、問題集やdevelopers IOなどの記事を通してサービスのユースケースを覚えた方が効果的だと思います
4、cloud tech
くろかわさんが運営している、サイトでAWSSAAの問題が200問無料公開されていました。
一問ごとに回答を確認することができ、S3のデータ型の変更など、新しい情報にも対応しているので、重宝していました。
解説も分かりやすく、サクサク進めるので、自分は200問を8周しました。笑
③テストの所感と勉強方法の反省
今回テストを受けてみて、反省は3つあります
1、構築手順ではなく、サービスの使い方を覚える
SAAは割と、サービスの概要ではなく、場面に応じた適切なサービスの組み合わせが問われると思います。(試験のガイドラインにも記述あり)
そのため、単純にサービスの概要を丸暗記するのではなく、この場面では、このサービスとこのサービスみたいな勉強をしていった方が良いと思います。
そして、サービスの特徴を押さえた上で、選択肢を選ぶことが大事です!
2、ハンズオンではなく、問題集
前述したように、実際、構築手順よりもユースケースに応じた適切なサービス選択の方が重要です。
また、問題集を通じて、問題の問われ方や傾向を掴むことができるので、問題の数をこなしていき、適宜、記事を参考に学習していくスタイルがいいかと思います
3、早めにとく
試験は130分あり、余裕かと思いますが問題文が長い&ややこしい問われ方をするので、意外と時間がなかったです。
また、見直しの時間を考えると、1問1分で1周して、1時間程度で確認するのがいいかと思います。
そのため、わからない問題は飛ばし飛ばして進めてった方が効果的かと
とこんな感じで、勉強しました。
皆さんの健闘を祈ってます!!!
ほなまた