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サイトへの通信の裏側を…

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

前回の更新から間が空きました。 ちょっとやるコトが多いとこうなっちゃいますね。時間の作り方は本当に難しいです😅 PCやスマホなど起動した後、どのようにネットワーク…

ネットワーク (2) IP Address

インターネットの通信は、HTTP です。ただ、実際には HTTP 以外の通信プロトコルも使って通信をしています。その全体像を見ていきましょう。 今回は特によく使う IP Addres…

ネットワーク (1) 序章

今回からネットワークについて見ていきます。といってもネットワークって本当にいろんな種類がありますが。教養として知っておいた方がいいのはインターネットの仕組みです…

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

さて今回は SSD について取り扱います。 もう皆さんが使っている PC/Mac のストレージはSSDだと思います。HDDのものは無いんじゃないですかね? 裏を返せば、HDDの入ってい…

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

もう皆さんは RAID 組むことはないかもしれないですねぇ… Cloud の IaaS でも組んでいる話を聞いた事が無いので。 ただ、データの冗長化を考える上で良い素材ですし。オン…

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

今回は、PC/Mac/スマホ では、ほぼ発売されていませんが。Cloud やサーバーではまだまだ現役のハードディスクを取り扱いましょう。よく、HDD (Hard Disk Drive) と略され…

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

今回は GPU について取り扱います。 GPU といえば皆さん何を思い浮かべますか? 3Dバリバリみたいな Game の世界? それとも、Deep Learning の世界? 他にもあると思います…

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

さて、CPUの話で忘れていけないのが、その扱える bit 長です。表題にもありますが、32-bit CPUと64-bit CPU。ARMでもARM32とARM64がありますよね。 Intel 64-bit CPU とは…

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

今回は、CPU を取り扱います。 まー CPU には、いろいろあります。皆さんのスマホは ARMが殆どです。ここでは PC/Mac や Cloud で主流の Intel / AMD 系の CPU を題材に扱…

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

さて、今回はハードウェアを取り扱います。 現在のコンピューターに搭載されているハードウェアは、いわゆる半導体を中心にして、いろんなものがあります。 今のコンピュ…

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

さて。前回は、仮想マシンについて取り扱いました。1 台のハードウェアで複数の OSを動かすことができるようになりました。それ自身は新しい技術ではなかったですが、PC ア…

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

さて、前回は Web ブラウザーを扱いました。アプリケーションのOS非依存の方法が増えましたよね。 今回は仮想マシンについて扱います。 仮想マシン - 1つのコンピュータ…

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

さて、前回は Java と .NET の機構を見てきました。当初の目的は OS の違いを超える、という事にあったんです。実質的にビジネスや、個人で扱うOSの数は多くは無いわけです…

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

.NET 6 の起動から翻訳の過程を探るさて前回は、Java と .NET のお話まで来ました。 その際に、CPU が理解できる機械語に翻訳されるまでの幾つもの階層がある事をお話して…

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

前回は、高級言語登場までのいきさつを見ていきましたね。 その続きをみていきましょう。 OS の登場 - IBM System 360ハードウェアを扱うライブラリー。それを体系立てて…

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

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

前回の話で、インターネット技術を使った実際の通信は、IP アドレス のパケットで行われている事が解りました。

今回は、Webブラウザーからの Webサイトへの通信の裏側を追いながら、そこで行われている事を理解していきましょう。

この図で見ていきます。せっかく、構成が頭に入りましたからね。

intra01 にアクセスするすぐ右隣のホストですね。アイコンからするに、Web Server が動いて

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

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

前回の更新から間が空きました。
ちょっとやるコトが多いとこうなっちゃいますね。時間の作り方は本当に難しいです😅

PCやスマホなど起動した後、どのようにネットワークに参加しているのでしょうか?

実際にはまずは LAN (Local Area Network) に参加します。LAN の中で、他と自分の識別をする必要があります。そのために IP Address で、自分と他人を識別するわけです。I

もっとみる
ネットワーク (2) IP Address

ネットワーク (2) IP Address

インターネットの通信は、HTTP です。ただ、実際には HTTP 以外の通信プロトコルも使って通信をしています。その全体像を見ていきましょう。
今回は特によく使う IP Address を取り扱います。

OSI 参照モデルOSI は Open System Interconnection の略です。コンピューター同士が通信するための標準規約ですね。

OSI 参照モデルは、それらを整理したものと

もっとみる
ネットワーク (1) 序章

ネットワーク (1) 序章

今回からネットワークについて見ていきます。といってもネットワークって本当にいろんな種類がありますが。教養として知っておいた方がいいのはインターネットの仕組みですね。

インターネット
インターネットとは The Internet を指します。inter と net の造語なんです。net は network。inter は「その間」という意味です。つまり network どうしがつながっていて、そ

もっとみる
ハードウェアを知る (6) SSD

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

さて今回は SSD について取り扱います。

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

SSD - Solid State Drive とは?SS

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

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

もう皆さんは RAID 組むことはないかもしれないですねぇ… Cloud の IaaS でも組んでいる話を聞いた事が無いので。
ただ、データの冗長化を考える上で良い素材ですし。オンプレミスは無くならないので、是非知っておいてくださいね。

RAID とはRAID (呼称 - レイド) は、元の英語が2つあるんですよね。
Redundant Arrays of Inexpensive Disks、ま

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

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

今回は、PC/Mac/スマホ では、ほぼ発売されていませんが。Cloud やサーバーではまだまだ現役のハードディスクを取り扱いましょう。よく、HDD (Hard Disk Drive) と略されますね。

HDDの登場こちらにありますが、HDDが登場したのは、1956年と言われています。IBMですねー。
注目したいのが、その大きさと記憶容量です。50cmのディスクが24枚! メッチャ場所をとりま

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

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

今回は GPU について取り扱います。

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

CPU と

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

ハードウェアを知る (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種類あったんです。この表現でいいの

もっとみる
ハードウェアを知る (2) CPU

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

今回は、CPU を取り扱います。
まー CPU には、いろいろあります。皆さんのスマホは ARMが殆どです。ここでは PC/Mac や Cloud で主流の Intel / AMD 系の CPU を題材に扱います。

CPU - Wikipedia

CPU の構造ざっくりと以下の図のような構造をしています。
Intel Core2 Duo は、2006年くらいに登場したCPUですから、ちょっと

もっとみる

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

さて、今回はハードウェアを取り扱います。

現在のコンピューターに搭載されているハードウェアは、いわゆる半導体を中心にして、いろんなものがあります。
今のコンピューターを前提にした場合は、主なものは以下ですかね。

CPU

メモリ

ストレージ - 最近は SSD が主流ですね。Server側にはハードディスクも多いと思います。

ネットワークカード - WiFi や SIM なども含みます

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

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

さて。前回は、仮想マシンについて取り扱いました。1 台のハードウェアで複数の OSを動かすことができるようになりました。それ自身は新しい技術ではなかったですが、PC アーキテクチャの中に搭載され、パフォーマンスが劇的に改善したことで普及しました。

今回は、コンテナについて取り扱います。

コンテナ - アプリケーションの仮想化。OSの軽量な仮想化仮想マシンによって、x64 コンピューターをファイ

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

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

さて、前回は Web ブラウザーを扱いました。アプリケーションのOS非依存の方法が増えましたよね。

今回は仮想マシンについて扱います。

仮想マシン - 1つのコンピューターに別の種類のOSを動かす仮想マシンは、エミュレーターの一種と言えるでしょう。Windows OS の上で Linux を動かすことが出来ます。Windows 11 の上で、Windows 7 を動かす事もできます。

仮想マ

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

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

さて、前回は Java と .NET の機構を見てきました。当初の目的は OS の違いを超える、という事にあったんです。実質的にビジネスや、個人で扱うOSの数は多くは無いわけです。それでも、OSのバージョンアップという事態があるわけで… そして、使う人が増えれば、進化もしていきますよね。

Web ブラウザー - アプリケーションランタイムとしてインターネットが爆発的に広まったのは、Windows

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

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

.NET 6 の起動から翻訳の過程を探るさて前回は、Java と .NET のお話まで来ました。
その際に、CPU が理解できる機械語に翻訳されるまでの幾つもの階層がある事をお話してきました。機械語も電気信号に翻訳されるんですけどね。

そろそろ実際にモノを動かしてその流れを探っていきましょうか。
軽めに行きます。.NET や Java がどう動いているのかは、別途お話します。こちらの参考情報の先

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

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

前回は、高級言語登場までのいきさつを見ていきましたね。
その続きをみていきましょう。

OS の登場 - IBM System 360ハードウェアを扱うライブラリー。それを体系立てて一つのパッケージにしたものが OS = Operating System と言えます。
これによって、個別に作る必要のある業務フローやデータにより集中できるようになりました。

この図の様に。
プログラムは、OS に対

もっとみる