Daiyu Hatakeyama | 畠山 大有 | dahatake

Architect | Software Engineer | Applied Dat…

Daiyu Hatakeyama | 畠山 大有 | dahatake

Architect | Software Engineer | Applied Data Scientist | Speaker | Hacker @Microsoft Technical Fellow@SUNABACO SAGA Smart Tech Adviser

マガジン

  • 教養としてのソフトウェアエンジニアリング

    ソフトウェアエンジニアとして質の高い成果を出すために知っておきたいコンピューターのハードウェアやソフトウェアの基礎情報を整理します。 実は基礎というのは10年以上変わらない知識です。 ライブラリーやパッケージは1年もすれば覚えなおす必要があります。 そして、基礎は、あまり儲からないという事もあり書籍やネットであまり取り扱われません。でも、それがおろそかになると、より良いアーキテクチャを描けないんです。 ソフトウェアエンジニア歴20年強の私が大事だと思う事柄を纏めていきます。

最近の記事

ネットワーク (4) 名前解決

前回の話で、インターネット技術を使った実際の通信は、IP アドレス のパケットで行われている事が解りました。 今回は、Webブラウザーからの Webサイトへの通信の裏側を追いながら、そこで行われている事を理解していきましょう。 この図で見ていきます。せっかく、構成が頭に入りましたからね。 intra01 にアクセスするすぐ右隣のホストですね。アイコンからするに、Web Server が動いている様です。というか、動いています。MyComputer-01 が自分が使ってい

    • ネットワーク (3) PC 起動後、どうやってネットワークに参加しているのか? DHCP と DNS

      前回の更新から間が空きました。 ちょっとやるコトが多いとこうなっちゃいますね。時間の作り方は本当に難しいです😅 PCやスマホなど起動した後、どのようにネットワークに参加しているのでしょうか? 実際にはまずは LAN (Local Area Network) に参加します。LAN の中で、他と自分の識別をする必要があります。そのために IP Address で、自分と他人を識別するわけです。IP Address については、前回触れましたね。 さて、ここでは、以下の図を例

      • ネットワーク (2) IP Address

        インターネットの通信は、HTTP です。ただ、実際には HTTP 以外の通信プロトコルも使って通信をしています。その全体像を見ていきましょう。 今回は特によく使う IP Address を取り扱います。 OSI 参照モデルOSI は Open System Interconnection の略です。コンピューター同士が通信するための標準規約ですね。 OSI 参照モデルは、それらを整理したものと言っていいですね。 OSI参照モデル - Wikipedia 今回は主に H

        • ネットワーク (1) 序章

          今回からネットワークについて見ていきます。といってもネットワークって本当にいろんな種類がありますが。教養として知っておいた方がいいのはインターネットの仕組みですね。 インターネット インターネットとは The Internet を指します。inter と net の造語なんです。net は network。inter は「その間」という意味です。つまり network どうしがつながっていて、その間という意味。今では、繋がっている場所・空間を指します。 インターネットの仕

        ネットワーク (4) 名前解決

        マガジン

        • 教養としてのソフトウェアエンジニアリング
          18本

        記事

          ハードウェアを知る (6) SSD

          さて今回は SSD について取り扱います。 もう皆さんが使っている PC/Mac のストレージはSSDだと思います。HDDのものは無いんじゃないですかね? 裏を返せば、HDDの入っているPCに今のOSを入れてみると、如何に重たいのかを実感できると思います。「サクサク動いている」はSSDなどハードウェアの高速化・大容量化の恩恵ですから。 SSD - Solid State Drive とは?SSD は円盤の回っていたHDDと違って、フラシュメモリのストレージです。 なんと

          ハードウェアを知る (6) SSD

          ハードウェアを知る (5) ハードディスク (2) RAID

          もう皆さんは RAID 組むことはないかもしれないですねぇ… Cloud の IaaS でも組んでいる話を聞いた事が無いので。 ただ、データの冗長化を考える上で良い素材ですし。オンプレミスは無くならないので、是非知っておいてくださいね。 RAID とはRAID (呼称 - レイド) は、元の英語が2つあるんですよね。 Redundant Arrays of Inexpensive Disks、または Redundant Arrays of Independent Disks

          ハードウェアを知る (5) ハードディスク (2) RAID

          ハードウェアを知る (5) ハードディスク (1)

          今回は、PC/Mac/スマホ では、ほぼ発売されていませんが。Cloud やサーバーではまだまだ現役のハードディスクを取り扱いましょう。よく、HDD (Hard Disk Drive) と略されますね。 HDDの登場こちらにありますが、HDDが登場したのは、1956年と言われています。IBMですねー。 注目したいのが、その大きさと記憶容量です。50cmのディスクが24枚! メッチャ場所をとりますよね。音も結構大きかったかもしれません。これは私には、わからないのですが。そし

          ハードウェアを知る (5) ハードディスク (1)

          ハードウェアを知る (4) GPU - CPU と比較して

          今回は GPU について取り扱います。 GPU といえば皆さん何を思い浮かべますか? 3Dバリバリみたいな Game の世界? それとも、Deep Learning の世界? 他にもあると思います。 Graphics Processing Unit と銘打っているのに、なぜ Deep Learning なんでしょうか? 今回は特にCPUと比較してのGPUの世界を見ていきましょう。 CPU と GPU は何が違うのか?昔のCPUはコアは1つでしたね。 で、マルチコアが出て

          ハードウェアを知る (4) GPU - CPU と比較して

          ハードウェアを知る (3) CPU - 32-bit と 64-bit

          さて、CPUの話で忘れていけないのが、その扱える bit 長です。表題にもありますが、32-bit CPUと64-bit CPU。ARMでもARM32とARM64がありますよね。 Intel 64-bit CPU とは?ここでも PC/Mac/Cloud でよく使われている Intel 社のCPUをベースに見ていきます。 実は、64-bit CPUというのは、2種類あったんです。この表現でいいのかわかりませんが😅… x64 これは、32-bit CPUとして長年使われた

          ハードウェアを知る (3) CPU - 32-bit と 64-bit

          ハードウェアを知る (2) CPU

          今回は、CPU を取り扱います。 まー CPU には、いろいろあります。皆さんのスマホは ARMが殆どです。ここでは PC/Mac や Cloud で主流の Intel / AMD 系の CPU を題材に扱います。 CPU - Wikipedia CPU の構造ざっくりと以下の図のような構造をしています。 Intel Core2 Duo は、2006年くらいに登場したCPUですから、ちょっと古いですよね。 ですが、PC向けに 1つの Socket に 2つの Core

          ハードウェアを知る (2) CPU

          ハードウェアを知る (1) スピードと太さの違い

          さて、今回はハードウェアを取り扱います。 現在のコンピューターに搭載されているハードウェアは、いわゆる半導体を中心にして、いろんなものがあります。 今のコンピューターを前提にした場合は、主なものは以下ですかね。 CPU メモリ ストレージ - 最近は SSD が主流ですね。Server側にはハードディスクも多いと思います。 ネットワークカード - WiFi や SIM なども含みます 私は専門ではないので、書籍で勉強した程度ですがね。 電気信号の速さこれ、意外と

          ハードウェアを知る (1) スピードと太さの違い

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (6): コンテナ

          さて。前回は、仮想マシンについて取り扱いました。1 台のハードウェアで複数の OSを動かすことができるようになりました。それ自身は新しい技術ではなかったですが、PC アーキテクチャの中に搭載され、パフォーマンスが劇的に改善したことで普及しました。 今回は、コンテナについて取り扱います。 コンテナ - アプリケーションの仮想化。OSの軽量な仮想化仮想マシンによって、x64 コンピューターをファイルとして持ち運びできるようになりました。OS を 100 個立ち上げるのが比較的

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (6): コンテナ

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (5): 仮想マシン

          さて、前回は Web ブラウザーを扱いました。アプリケーションのOS非依存の方法が増えましたよね。 今回は仮想マシンについて扱います。 仮想マシン - 1つのコンピューターに別の種類のOSを動かす仮想マシンは、エミュレーターの一種と言えるでしょう。Windows OS の上で Linux を動かすことが出来ます。Windows 11 の上で、Windows 7 を動かす事もできます。 仮想マシン と 仮想OS は若干異なるんです。 仮想マシン - 特定CPUのエミュレ

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (5): 仮想マシン

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (4): Web ブラウザーと HTML5

          さて、前回は Java と .NET の機構を見てきました。当初の目的は OS の違いを超える、という事にあったんです。実質的にビジネスや、個人で扱うOSの数は多くは無いわけです。それでも、OSのバージョンアップという事態があるわけで… そして、使う人が増えれば、進化もしていきますよね。 Web ブラウザー - アプリケーションランタイムとしてインターネットが爆発的に広まったのは、Windows 95 の登場と同時に語られます。1995年発売。覚えやすいですね。 インター

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (4): Web ブラウザーと HTML5

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (3): .NET を動かしてみる

          .NET 6 の起動から翻訳の過程を探るさて前回は、Java と .NET のお話まで来ました。 その際に、CPU が理解できる機械語に翻訳されるまでの幾つもの階層がある事をお話してきました。機械語も電気信号に翻訳されるんですけどね。 そろそろ実際にモノを動かしてその流れを探っていきましょうか。 軽めに行きます。.NET や Java がどう動いているのかは、別途お話します。こちらの参考情報の先にあるPowerPointのスライドではある程度説明しています。 実際に動かし

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (3): .NET を動かしてみる

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (2): OSの登場から Java / .NET まで

          前回は、高級言語登場までのいきさつを見ていきましたね。 その続きをみていきましょう。 OS の登場 - IBM System 360ハードウェアを扱うライブラリー。それを体系立てて一つのパッケージにしたものが OS = Operating System と言えます。 これによって、個別に作る必要のある業務フローやデータにより集中できるようになりました。 この図の様に。 プログラムは、OS に対しての命令になっていくわけです。裏を返すとOSを超えてハードウェア命令をする事が

          コンピューターの進化の歴史から読み解く。プログラムとは翻訳だらけ (2): OSの登場から Java / .NET まで