1

モウフカブール
大澤文孝

2

大澤文孝
技術ライター／システムエンジニア／プログラマ／インフラエンジニア。
著書はもうすぐ100冊（そろそろ越えたかも）。
100冊記念パーティーやりたい（けど反対されている）。

3

主な著書

もうすぐ100冊（越えたか？）パーティーやりたい！

4

新刊

駆け出しエンジニアを応援したい• #駆け出しエンジニア• #駆け出しエンジニアと繋がりたい

応援するよ！
（この業界に来てね）

何を勉強すればいいの！？

• そんなに勉強しなくても……

現場のエンジニア以上のことしてない？

• 僕について
技術ライター
プログラマ
システムエンジニア
インフラエンジニア

趣味は作曲。
「デバッグ音頭」もよろしくね！

• 技術ライターからエンジニアへの歴史
14歳で月刊I/Oのプログラミングコンテストに投稿。
この道に進む

月刊I/Oに投稿
月刊I/O関連のシステムを構築
プロバイダ業務の委託お願いされる
雑誌いっぱい書く

添付CDのシステムとか、社内業務システムとか作る

学
生
時代

社内ネットワーク担当者が退社。「大澤くん、パソコン詳しいよね？」で、急遽、ネットワーク担当にインターネットマガジン、DOS/Vマガジン、ソフマップ
ワールド、VBマガジン、.NETマガジン、いろいろやりました

出版不況（雑誌が軒並み、休刊に）

エンジニア兼務

SIerで業務委託。開発・設計・インフラ構築、なんでもやります。
あれ、意外と、現場って2～3年遅れてない？

• 現場は最先端技術とは限らない
・Git導入されてない
・CI/CD、なにそれおいしいの？
・単体テストってなに？
・テスト自動化っておいしいの？
・DockerやAWSも導入されてない
・Kubernetesってなに？
・チケット駆動開発も導入されてないかも（さすがにSlackとともにほぼ導入されてきてる）
最先端じゃなくても仕事できるよ！

• それって一部の会社だけじゃないの？
・No・数社ある• それってイケてない、将来不安な会社じゃないの？
・No・みんな基本を身につけている
・機会があれば、導入される・技術レベルの有無ではない機が熟せば導入されるよ• きらびやかな技術より基礎を学ぼう
Kubernetes
DockerAWS

Git
CI/CDLinuxPythonTCP/IP
情報基礎理論

基礎も合わせて勉強しよう

プログラマとインフラエンジニア

• プログラミングできるようになるには・プログラミング言語だけ知っていてもプログラムは書けない→命令のやり方を理解したというだけ・アルゴリズムとデータ構造の理解が必須→データの持ち方、処理のやり方、処理方法を考える能力
基本の習得もそうだが、実践が必要「何かひとつプログラムを完成させる」ことを目指す。
本を繰り返し読んでも、作れるようにはならないよ• プログラミングを習得する早道
・言語の入門書で勉強しよう
・並行してサンプル豊富な入門書で勉強しよう
・「自分が作りたいサンプル」に近い入門書を入手しよう→だいたい「定番の書き方」がある。それを真似る→「何が定番なのか」を知るため、数冊読もう・サンプルを真似て、自分が作りたいものを作ろう
何か作ることを目指そう• プログラミングしなくてもいいエンジニア
職種

概要

プログラミ
ング必須？

プロジェクトマネージャ

プロジェクト全体を統括する人

×

システムエンジニア

設計する人

×

バックエンドエンジニア

サーバー側のプログラムを書く人○

フロントエンドエンジニア

クライアント側のプログラムを書く人 ○アプリケーションエンジニア スマホアプリやPCアプリを書く人

○

デザイナ

デザインする人

×

インフラエンジニア

サーバーやネットワークを構築する
人

×

テスター

動作テストを担当する人

×

プログラマ

• インフラエンジニア
・ネットワークやサーバーを構築する人・やり方の定番があり、習得すれば、誰でもできるようになる・突拍子もないアイデアとかがあまり必要ない→というか安全重視だから、やっちゃダメ！
・資格試験制度も豊富。勉強しやすいし、実力判定もしやすい→勉強次第でできるようになる
マジメな人は、インフ
ラエンジニアが向いていると思います（私見）• クラウドを使ってインフラを習得する
・インフラの構築を体験するには「ネットワーク機器」と「サーバ」が必要
・クラウドなら、そうした実機を用意せず、自分で勉強できる環境を整えられる

Amazon Web Services 基礎からのネットワーク&サーバー構築

日経BP• プロジェクトマネージャとシステムエンジ
ニア
・企業が募集しているときに応募する
・未経験の人は、紛れ込んで経験していく
・案件ごとにまちまちなので事前勉強はあまりない
・要件定義の本を読む

事前にというより、企業に入ってから勉強することのほうが多いよ• 難しいけどプログラミングに挑戦してくれると嬉しいな
・Pythonで数行のコードを書いてみて！
・GoogleのColaboratoryならブラウザのみで試せる
https://colab.research.google.com/
・テキスト加工とか、つまんない定型作業をプ
ログラミングで解決するといいよ！
プログラミング
楽しいよ！
でも、苦痛ならやらなくてもいいよ！

技術を習得するときのポイント• 知識と知恵• 知識
動く仕組み、プロトコル、APIなどなど「決まりごと」• 知恵
考え方、アルゴリズムなどなど「制御の仕方」• 仕組みに従ったモノを作っている
HTML

CSS
ブラウザ

JS

制約から外れた動作はできない。
たとえば、ブラウザでJavaScript以外のプログラム言語を動かすのは（最近はWebAssemblyがあるけど）難しいし、HTTPとかTCP/IPの規約に外れた通信はできない。

HTTP
TCP/IPOS
ハードウェアCSSで表現できる以上のデザインはできない。
→こうした「制約」を知って、そのなかで作らなければならない。
→「制約に、どうやって押し詰めるのかを考える」のがエンジニア• ぶっちゃけ業務アプリって…

データベース
入力フォーム

帳票など• ぶっちゃけ業務アプリって…
入力フォームの表示方法

データベースへの保存方法

データベースからの集計（取り出し）の方法

入力のやり方

エラーメッセージの出し方
入力フォーム
どんな入力項目を作るかデータを並べて表示・印刷する方法
データベース
帳票などどんな条件・計算式で集計するか• それぞれ分けて勉強する
入力フォームの表示方法

データベースへの保存方法利用するプログラミングに関する本（PHP、Ruby、Java、JavaScriptなど）

データベースからの集計（取り出し）の方法

入力のやり方

エラーメッセージの出し方
入力フォームHTMLやCSS、サーバーサイドプログラム、クライアントサイドプログラムなどの本

データを並べて表示・印刷する方法
データベース
データベースに関する本
サーバーサイドプログラムの本

帳票など
HTMLやCSS、サーバーサイドプログラム、クライアントサイドプログラムなどの本• 目的を達成するには何が必要かを考える
目的を達成するためのズバリの資料・参考書は皆無
分解して組み合わせて作る方法を考えよう• 現場のストーリーで理解する

水越 賢治著 オーム社
当時のUNIX入門の定番書でした。

• インフラエンジニアになるのに勉強したこと・UNIXの考え方・基本コマンド（The UNIX Super Textという当時の定番書）
・viエディタの使い方
・adduserとかpasswdとかのユーザー操作
・インターネットについて（TCP/IP）・pingとかtracerouteとか・BSD/OSだったので、そのTCP/IPの設定方法（ルーティングミスって上位プロバイダに教えてもらった）・ドメイン設定のためのDNS
やりたいときに・DHCP
調べればいい！
・Newsグループ読みたいと言われて、その設定・メーリングリスト設定したいと言われてml・某システムとメール連携することになってsendmail.cf

駆け出しエンジニアに即戦力は求められない• 基礎理論から実践の3本立て
・情報処理技術者試験のような「教科書」で理論を学ぶ
2進数、16進数、データ構造（変数・配列）、フローチャート
・言語学習（プログラマの場合）/プロトコル学習（インフラエンジニアの場合）
PHP、Ruby、Java、Pythonなど / TCP/IPの基礎

・実践（ハンズオン）
プログラムを作る、サーバー構築、ネットワーク構築など• 必要なツールの使い方（プログラマ）
・エディタの使い方
・ビルドの方法
・ビルドしたプログラムを実行（デプロイする方法）-----------------------------・SSHでのログイン方法
公開鍵認証の基礎
・SSHのログイン先のシェルの使い方（Linux）
・GitHubの使い方
・Dockerの使い方
知らなくて平気！
先輩に聞けば、3日で使えるようになるよ！

• 必要なツールの使い方（インフラエンジニア）
・SSHでのログイン方法
公開鍵認証の基礎
・SSHのログイン先のシェルの使い方（Linux）-----------------------------・特定のソフトウェアの設定方法
・ネットワーク機器の設定方法
ロードバランサとかキャッシュとか知らなくて平気！
都度、環境によって違うから、そのときに考えよう• 余計な応用はいらない
現場のエンジニアは、駆け出しエンジニアに、応用的なことは求めない。
最低限の基礎的なやり方さえ知っていれば十分。

ツールの使い方とか、特定のソフトウェアの設定とかは、現場によって違うし、がんばって覚えても活かせないことも多い

現場は、それぞれやり方が違う。
むしろ、しったかで勝手にやられると困る。

• 就活の現場では……

業界の考え方がわかる
ので、就活以外の人にも、ちらっと見て欲しいな！

何を目指せばいいの？

• 適材の職種を見つけよう
プログラムがうまく書けないのに、書き続けるのは辛い→絵が描けないのに、毎日、アニメの動画を描かなければならないようなもの→絵が描ける人には天国だが、そうでなければ地獄→苦手なら、インフラエンジニア→設計が得意ならシステムエンジニア→管理の仕事が好きならプロジェクトマネージャ

• スターを目指さない
スターは、ほんの一握り。
スターに求められるスペックと、ふつうに求められるスペックは違う→フルスペックエンジニアの少数精鋭のチームで進めていくのが流行だが、そこに入れるのはごくわずか→それ以外のチームでは、せっかくフルスペックの技量があっても、全部活かせる場面は少ない
自分の仕事の分野だけできれば十分！
何でもできる人は、ごく少数。

• アジァイルはジャズセッションできる人が何人か集まって、あーだこーだいいながら進めていく開発スタイル。
→経験者のためのもの。できない人は戦力外→できる人は優しい人が多いから嫌な思いはしないけど、「自分の無能さを知り、ダメージが大きい」はず…。
→それって「できない」わけじゃなくて、「できる人のなかでできない」ってだけ。
修行を積んで再挑戦！ 自信を持って！

まとめ• 駆け出しエンジニア応援します！

・こんなこと知りたい・こういうことがわからない→是非、教えてください！

今後の活動モウフカブール

小笠原種高

大澤文孝

モウフカブール
http://mofukabur.com/

同人活動「とらのあな」「メロンブックス」「Booth」「BOOK TECH」などで頒布中。

技術書展12 新刊「モウフカブール」で検索。
AWS・Dockerの使いどころは？

https://bit.ly/OSC2022Osaka_Form

Follow me@sour23

https://bit.ly/OSC2022Osaka_Form

Follow me@sour23

https://bit.ly/OSC2022Osaka_Form

Follow me@sour23