コーディングスクールに行かずに勉強しよう「非専門家のためのわかりやすいIT知識

今日はコーディングスクールに行かなくても、コーディングの知識について軽く知ることができる本、 非専門家のためのわかりやすいIT知識をレビューします。

レビュー評価: 4.0 ★★★★☆
難易度: 上 中 理解度: 中・下没入感: 中・下
一行評ITの知識が不足しているため、現業で不満を感じている方におすすめです。
開発を学ぶべきか悩んでいる非専攻生にもおすすめです。
おすすめポイント最後の章である「10章のまとめ」を読んで、わからないところは前の章を見ましょう!
良い点開発者と関係者間の対話形式を借りて解説をしてくれて、
内容理解のセルフチェックのために、その会話について何章にもわたって解説してくれます。

IT書籍レビューの最初の記事です。 この本のレビューを通じて、皆さんと一緒にIT知識の身長が伸びる想像に学ぶ楽しみが倍増します。それでは、この本について見てみましょう。

著者は経営学科出身の企画者で、IT関連の起業をしながら開発(プログラミング)を勉強するようになったきっかけを語りながら、本の序章を綴っています。現場で働きながら感じた「IT必須知識」をこの本にまとめています。 非専門家が知っておくべきレベルまで圧縮で、下図のように ジップ(gipp.co.jp)というホームページで有料のオープン講座も実施しています。

author-webpage-01
深(gipp)ホームページ

テリーの考えと同じように、スマートフォンから始まり、レストランのキオスクまで、私たちの生活の隅々までITが占領し、そのスピードはどんどん速くなっています。 現代ではITへの理解が必須と言います。もちろん、全員が開発者である必要はありません。

この本は下記のように「1章オリエンテーション」から始まり、開発言語/オペレーティングシステム、ネットワーク/クライアント/サーバー、API/JSON、App、Web、DB/画像処理、Framework/Library、コラボレーション/ソース管理、デザインを網羅しています。2020年7月に発行された240ページ分の書籍です。下記のレビュー内容が全てではなく、もっと有益な知識がたくさんあります。必要な方は電子書籍などの書籍を購入して完読することをおすすめします。

1章オリエンテーション(本当にコーディングスクールに行かなくてもいいの?)

著者は自分が開発の世界に足を踏み入れたきっかけを語っています。Java言語から始めて勉強しているうちに 適性その後、Webへの興味からHTML、CSS、PHP、JSP、JS、JS、Ajaxを次々に勉強することになります。学びの場が広がり、C言語、データベース、サーバー、iOSまで学ぶことになります。

IT業界で働く企画者にまず必要なのは、「Python」や「Java」ではなく、「Python」です。 それは、まさに コミュニケーションです。すべてのメンバーと円滑に会話ができる必要があります。...中略しかし、開発に関する知識がなければ、開発者と会話することはできません。

出典:非専門家のためのわかりやすいITの知識で

ITプランナーとして、著者はプログラミング言語ではなく コミュニケーションのためのIT知識を勉強する必要があることを言います。マーケターからデザイナーの創業者まで、すべてのメンバーに当てはまる話だと言いながら。著者は、本書でこれから扱うコミュニケーションのためのトピックを次のように図で説明しています。

book-theme
[興味のあるテーマ(出典:本書) ]。

2章 プログラミング言語 & オペレーティングシステム(OS)

韓国人とアラブ人の間に通訳が必要なように、人間とコンピュータの間にはコンパイラがその役割を果たします。 開発者がプログラミング言語で作成した文書(ソースコード)をコンパイラに渡すと、コンピュータが理解できる0と1に変えて、開発者-コンピュータ間のコミュニケーションが行われます。

では、開発者はプログラミング言語を利用してどこで文書(コーディング)作業をするのでしょうか?それはズバリ IDE(Integrated Development Environment, 統合開発環境)というプログラムで行います。代表的に アンドロイドスタジオ、 VSコード, Eclipse, Pycharm などがあります。

컴퓨터 언어 종류
[コンピュータ言語の種類(出典:ピクサーベイ) ]。

人種が多様で、それに応じて言語も異なり、考え方や文化も異なります。プログラミング言語が多様化した理由は、人々の考え方がすべて違うからです。 その多くの言語をあえて分けるなら、コンピュータに優しい低レベル言語と人間に優しい高レベル言語に分けられます。

  

computer component
[ computer component(出典:ピクサーベイ) ]。

プログラミング言語は一人で遊べる存在ではないので、コンピュータの部品についてもある程度の知識が必要です。代表的に中央処理装置(CPU)、メモリ(RAM)、補助記憶装置(HDD、SSD)、マザーボード。コンピュータの頭の役割をするCPU、倉庫の役割をする補助記憶装置、この2つの間で速度が比較的低い補助記憶装置に代わって高速のCPUの作業を助けるメモリ、これを統合して部品への電源供給、通信などを担当するマザーボードなどがコンピュータを構成することになります。

実は、オフィスや自宅でパソコンを使う一般人にとって、上記のような内容はどこか見慣れない内容ではないでしょうか? なぜなら、私たちはエクセルを使い、スマートフォンのアプリを使うだけだからです。 私たちの耳に慣れ親しんだ Windows、MacOS、iOS、Androidのようなオペレーティングシステムが水面下でこのすべての作業を代行してくれます。 オペレーティングシステム(OS, Operating System)によって使用するプログラミング言語も違ってきます。

このうち Javaという言語が表示され、OSに合った言語だけを使わなければならないという障壁がなくなります。 JVA(Java Virtual Machine)をインストールすると、Java言語だけで全てのOSでプログラミングができるようになります。


3章 ネットワーク、クライアント、サーバー

network-server-client
[ server-client(出典:ピクサーベイ) ]。

90年代半ばから、一大ブームを巻き起こしたゲームが登場します。それが ブリザードのスタークラフト(テリーもそのゲームの受益者(被害者?)であり、被害者であったと記憶しています)。 コンピュータがネットワークで接続そうすると、それぞれの家で「ベトルネットの部屋」にアクセスして多くのことをすることができるようになり、大衆的に成功するようになります。

ネットワークは次のように区分できます。学校のコンピューター室、アパートなど、小さなエリアをつなぎ合わせて LAN(Local Area Network)と表現します。都市程度の規模は MAN(マン)(Metropolitan ~~), 都市間/国間の場合 WAN(Wide ~~)といいます。PC通信から始まり、ADSL、VDSL、光ケーブル通信などの超高速インターネット網が全世界を席巻し、その後、3,4,5G無線通信を通じて、外で歩きながらインターネットができる世の中になりました。

私たちがカカオアプリをダウンロードしてインストールしてカカオトークをし、写真をやり取りしている間、私たちの目には見えませんが、多くのことが起こります。 友達の写真リクエスト > 最寄りの通信基地局 > 近くの基地局まで信号伝達 > 私はカカオトークメッセージ確認 > 逆の順序で同じプロセスを進行.

このようなプロセスの中で IPアドレスが登場します。私たちが宅配便を受け取る時に住所が必要なように、メッセージをやり取りするのにも必要です。 IPアドレスは、214.123.142.12のように12桁がピリオド(,)で区切られた形で構成されます。 (最大2桁まで32個、約43億個)

0~255の数字だけで使用していたため、近年のようにパソコンが爆発的に増えた状態で、その需要を 감당할 수 없는 상태로 IPv6(数字の区分が4つから6つに)を併用しています(2)128 個、約3.4*。1038 個でほぼ無限大)

IPアドレスは数字で構成されています。...中略...しかし、Naverのアドレスが数字で構成されている場合、私たちはその数字をすべて覚えなければなりません。 ...中略...だから、人々は数字の代わりに'ドメイン名'というものを作りました。 'www.naver.com' のような文字です。

出典:非専門家のためのわかりやすいITの知識で

CPUなどコンピュータが処理できる範囲以上の要求が来ると動作異常を起こします。365日24時間問題がないため、インターネット上で様々なことが可能です。単純にネットワークが両端で構成されているとします。片方のコンピュータ(あるいはスマートフォン)は クライアント一方、もう一方は サーバーと呼びます。クライアント側を フロントエンド(顧客が集積的に触れられるもの)、サーバー側を バックエンド(お客様には見えない場所)といいます。 実務的には クラ/フロント, バックとも呼ばれます。

サーバーを考える上で、Linuxは外せないテーマです。 リナックスはOSですが、その上に'サーバープログラム'が動作します。Linuxは トバルスによって開発され、無料で配布されました。 そのため、サーバーでLinuxが多く使われるようになり、時間が経つにつれて有料版のLinuxベースのOSが出ました。

Linuxでサーバーを運営しているときに問題が発生すると、すぐにASが必要な会社は「Red Hat」のような有料版を使用します。Linuxの有名なバージョンの一つで Ubuntu(Ubuntu)がありますが、Windowsのように使いやすくなっています。 もう一つ有名な改良版が下の図のような アンドロイドです。Googleがモバイルオペレーティングシステムの形で発展させたオペレーティングシステムです。

android-version
[ Android版履歴(出典:sitesbay.com) ]。

サーバーは24時間365日稼働しなければならないため、電力消費が多いです。停電対策など、個人が直接運営するのは困難な点が多く、それを代行してくれるところを ホスティング会社(国内:Cafe24、Gaviaなど海外:Amazon AWS、Chemicloudなど)


第4章 APIとJSON

クライアントとサーバーの リクエスト(Request)-応答(Response) 間には体系的な何かがなければ、きちんとしたコミュニケーションが行われません。 その体系とは、まさに API(Application Programming Interface)です。クライアントとサーバーの間で決められた約束に基づいて、ログイン、会員登録などの機能を実行し、応答します。

このような過程の中で CRUDという概念が登場します。 作成、読み取り、更新、削除e. この機能の実装に多くのアドレスが発生するのですが、人が介入するため、APIにバグが発生することもあります。 これをもう少し体系的に管理するために RESTful APIが出てきます。以前よりアドレスの数を減らしながらC/R/U/Dに合わせて POST(ポスト)/GET/PUT.パッチ/DELETEというメソッド(Method)を送信してどんなリクエストを送ったか把握できるようにします(実際、難しい概念なので、下記の初心者開発さんが書いた記事を参考することをおすすめします)。

自分が作ったプログラムが個人開発者、企業、機関が提供する機能、プログラムなどを活用できるように支援する中間媒体。
APIとは by 初心者開発

404 error
[ 404 error(出典: 나무위키) ]。

クラとサーバー間のリクエストとレスポンス間の問題はどのように分かるのでしょうか?時々、インターネットをしていると「404ページが見つかりません」という画面に遭遇することがあります。異常がない時は200番台(201, 202,...)、クライアント側の問題は400番台(401, 404,...)、サーバー側の問題は500番台(500, 501,...)で表します。もう少し詳しい内容は ウィキペディアを参考にしてください。

まとめると、APIは、ソフトウェアが他のソフトウェアの機能を使うために、中間で必要な仕組みです。 簡単に言うと、機能を使うためにアドレスにリクエストを送ると、応答してくれるソフトウェア同士の仕組みと理解してください。

出典:非専門家のためのわかりやすいITの知識で

ソフトウェアを開発するためのツールとして SDK(ソフトウェア開発キット)という用語があります。例としてグーグルマップSDKを挙げることができます。グーグルが提供するSDKをインストールすると、自分のSWでグーグルマップSDKが提供するAPIを使ってグーグルマップにリクエストを送ることができます。

# JSON形式
{ { {} の形式
  Key1 : Value1、
  Key2 : [Value3, Value4, Value5] # 配列(Array)形式、複数の情報を呼び出すときに使用します。
} }
# JSONの例
{ { #
  "category":"飲み物"、
  "item":["카파모카","카페라떼","아메리카노"]
}

APIを媒介にクラウドとサーバー間の通信をする時、データを入れる機能を一緒に開発する必要があります。 現在はJSONという形式を利用します。キーと値がコロン(:)で区切られてJSONが表現されます。 著者は理解を助けるため'GitBook'サービスのAPIサンプルページを見せます(GitBookは簡潔なAPIドキュメントの作成を助けてくれるサービスです)。


第5章 アプリケーション(Application)

アプリケーションとは、OSにインストールして使用するすべてのプログラムを指します。スマートフォンの登場で アプリ(App)という言葉が広まり始めました。多くの場合、開発者は'1.0.2'のような形式でバージョンを管理します。数字の2は小さな変化を、0は下位バージョンと互換性があるが大きな変化を、1は下位バージョンと互換性のない大きな変化を意味します。バージョンごとにそのアプリのポリシーが変わる可能性がありますが、価格政策の変更が発生した時、既存のアプリのバージョンを持っている場合、問題が発生します。 ちなみに、iOSは アプリストアアンドロイドは グーグルプレイストアからアプリを購入することができます。


第6章 ウェブ(Web)

著者はこの章でウェブ言語(HTML、CSS、JavaScript)、ブラウザ、レスポンシブウェブなどについて話します。 HTML(Hyper T内線 Mアークアップ Language)の始祖である欧州粒界物理研究所の職員である「チーム・バーナスリー」を紹介します。研究所内のオペレーティングシステムに関係なく情報をやりとりできるように、一定の形式(HTML)で作成した文書を提案しています。 その文書には コード(タグ)が使用され、代表的に以下のようなものがあります。

# HTMLタグ
<h> ... </h> # 大見出しを意味する
<p> ... </p> #段落
<ol> .. </ol> #順序付きリスト(ordered list)
<ul> .. </ul> # 順不同リスト
<a href = '/ja/웹주소/'> .. </a> #リンク

ここで注意すべき点は、HTMLはプログラミング言語ではないということです。HTMLはコンピュータに特定のことをさせることができる言語ではなく、ただブラウザが見ることができる文書を書いた言語です。

出典:非専門家のためのわかりやすいITの知識で

HTMLは情報伝達に重点を置いているため、デザイン機能が不足しており、これを補完するために CSS(C昇順 Sスタイル Sheets)が開発されました。情報修正はHTML、デザイン修正はCSSが担当することになり、この二つの作業を合わせて'パブリッシング(その仕事をする人は「パブリッシャー」と表現します。)もっと細かい内容は ウィキペディアを参照してください。

この2つの言語で実装が困難な機能に対する需要で JavaScript(js)というプログラミング言語が表示されました。Naverに接続してウェブブラウザを開いて右クリック後、'Inspect(Inspect)'を選択すると、下記のようにウェブページのソースが表示されます。 </scriptのようなタグ部分がジャバスクリプトファイルと繋がって色んな機能を実装するようにします。下のソースでの部分にマウスを持って行って右ボタンを押して'Delete elememt'を選択するとCSSがないHTML本来の姿を確認することができます(もちろん、また、Naverに接続したら元に戻ります)。

네이버 홈페이지 소스코드
[Naver ホームページのソースコード確認]

第7章 データベースと画像処理

著者はショッピングモールを例に挙げて データベース(Database)について説明します。すべてテキストで構成された会員名、ID、注文商品名、商品価格などでしょう。 これらを一つのテキストファイルで管理したら簡単ではないでしょうか? 1.txtの内容(ホン・ギルドン、hong、アイスクリーム、500円)このようなものが数万個あるとしたら、注文をキャンセルしたり、価格が変動したり、管理するのが簡単でしょうか? だから、すぐにエクセルのように表形式で作成した リレーショナルデータベースという方法論が生まれます。

データには、1%の欠点もあってはいけません。 そのため、データを管理するのが難しいです。

出典:非専門家のためのわかりやすいITの知識で

テキストの束で管理する場合、数万個のテキストファイルを一つ一つ開いて修正しなければならないので、時間がかかります。 会員情報(ユーザー番号、名前、誕生日、住所など), 製品情報(製品番号、製品名、価格など), 注文情報(ユーザー番号、製品番号) などグループ化して関係型データベース体系で管理するとより効果的です。例えば、ユーザー番号1番がアドレスを変更する場合、製品情報と注文情報は修正する必要がありません。


参考までに、データベースをエクセルに例えると、エクセルファイル自体はデータベースあるいは スキーマ(Schema)エクセルファイルのシート(Sheet)は テーブル(Table)と呼びます。

mariadb-heidiSQL
[MariaDBで見るデータベースとテーブル]

開発者たちはtxtファイルやエクセルにデータを保存せずに DBMSという データベース管理システムを使ってDBを管理します。代表的にMS SQL、Oracle DB、MySQL、MariaDBなどがあります。

という声が聞こえてきたら、これはすべて クライアントにデータがあるという表現です。"そのデータはローカルに... 内部DBに保存して...ネイティブから取り込みました。"

一方、'サーバー、API、DB、バック/バックエンド'のような表現は'サーバーからデータを取り込んだ」という意味です。"APIで取り込んだ... DBについてに保存しておけば..."

出典:非専門家のためのわかりやすいITの知識で

第8章 フレームワークとライブラリ

アップルはアプリストアに開発者が良いアプリをアップロードしてほしいです。高品質で便利なアプリはiPhoneの販売につながるからです。 だから、アップル社は フレームワーク(Cocoa)を提供して開発者たちのアプリ開発を助けてくれます。 例えば、アプリにボタンを挿入するとしたら、すでにフレームワークでアップルが提供してるコードを持ってきて使うことができます。参考までに、アップルアプリのプログラミング言語は スイフトです。

apple-framework
[アップルフレームワーク-UIKit]

アンドロイドの場合 Kotlinという言語を使用し Androidフレームワークを利用します。アップルとグーグルの場合、このように開発者がアプリケーションを容易に開発できるようにフレームワークを提供しています。しかし、ウェブはどうでしょうか? JS 言語を使用し React, Vue.js などのフレームワークを利用して開発を行います。 その他にも python-djangoのような組み合わせのツールがたくさん存在します。

ライブラリという言葉をよく耳にしますが、これは何でしょうか? ある特定の機能などのためにすでに作成したパッケージと思っていただければいいと思います。私たちがどのようなアプリを開発するために必要な機能をライブラリをよく探して取り込めば、とても簡単に欲しい機能を実装することができます。コーディングをしていると自然に理解できるようになります。


第9章 コラボレーション、ソース管理、デザイン

プログラム開発を進めていくと、スケジュールがその都度変更されることもあります。 ある機能が必要だからといって、進行中の開発を中断して先に処理をし、キャンセルになることもあります。 このような状況を考慮すると、バージョン管理が必要です。そのためのツールである ギット(Git)を先ほど紹介したリヌス・トバルズが開発しました(羽根を取り付ける ポストを通してもっと詳しく調べてみてください)。

開発段階ごとにフラグを立てて(Commit)メモ(コミットLog)をすることができます。コミットとメモを通して、その行為の当事者と変更内容を追跡することができます。 'チェックアウト'を使って、旗の位置のコードに移動することもできます(ソースコードのバージョン管理)

開発者が企画した通り、ある方向で開発中で、新しい方向で開発を追加する必要がある場合。 支店 作業(値付け)をすることになります。これにより、既存ブランチと新規ブランチ間の相互影響を与えないようにします。後でそれぞれのブランチで作業したコードをマージ(マージ)して合わせればOKです。

もし、開発者が一人ではなく複数人だったら? そのために、リモートリポジトリと呼ばれる ギットハブ(GitHub)が作られました。Naver Myboxのようにクラウドシステムでコードをアップロードすることもできますし、ダウンロードすることもできます(GitHub RStudio連動する ポストを通じてGitHubへの参加について調べてみてください).

アプリケーションを開発していると、様々な理由で開発者とデザイナーの間で葛藤が発生しますが、葛藤管理のために スケッチ、ジャ플린 などのプログラムで相互の接点を減らすことをお勧めします。 結局、このような問題には正解はなく、組織レベルでの 対話文化を作り、お互いの分野の勉強を通じて理解度を高め、相互の配慮が必要だと言います。


10章まとめ

著者はこれまで学んだ内容を10章でまとめています。CPUやメモリなどを備えたコンピュータ(ノートパソコン、デスクトップ、スマートフォン、タブレットなど)は オペレーティングシステムというプログラムに戻ります。ウィンドウズ、Mac OS、アンドロイドなどがそうですね。 このOSで動作するプログラムを クライアント開発者が作ります。クライアント側と同じように、サーバー側でもLinuxのようなOSを運営し サーバー開発者がサーバープログラムを開発します。この2人は APIを通じて リクエストレスポンスを実行します。

クライアントが正確な場所にリクエストを送ると、サーバーはリクエストが来た場所に応答します。応答には成功の場合と失敗の場合があります、 クラの誤ったリクエストに対して、サーバーは 400番大エラー、 サーバー 問題に 500番台 エラーコードを発生させます。 成功200番台 数字で表現します。

出典:非専門家のためのわかりやすいITの知識で

実際のサービス開発には、Webクラ開発者、iOS開発者、Android開発者、サーバー開発者の合計4人が必要です。 ウェブ開発者HTML(骨格)、 CSS(デザイン)、 JS(機能)で開発してこれを簡単にするためReact.jsライブラリを使います。管理者ページの開発もウェブ開発者の 몫です。 そして アプリ開発者は、iOSとAndroidそれぞれの言語とフレームワークを利用してサービスアプリケーションを開発します。

このようにクラプログラムが作られ、会員登録や顧客リストの要求など、サーバーに様々な要求をします。 このような要求に合う機能を作る時、必須的にDBを経由することになりますが、この時、SQL言語が使用されます。 サーバー開発者が各機能を実装した後、それに合わせてAPIを作成し、そのドキュメントを作成します。このドキュメントを基準にクラ/サーバー開発者が活発なコミュニケーションをします。

SQLデータベース管理システム(DBMS)にデータを CRUD するための言語です。

出典:非専門家のためのわかりやすいITの知識で

開発が完了したら、そのウェブ成果物をサーバーに載せてサービスすると、一般ユーザーがアクセスすることになります。この時、彼らのブラウザでHTML、CSS、JS、画像などのファイルがダウンロードされます。必要に応じてサーバーにAPIリクエストを送ると、サーバーがリクエストを受けてデータベースを利用して応答を送ります(ウェブ動作方式)

開発完了したアプリの場合 アップル アプリストアグーグルプレイストアに登録審査を依頼します。Googleは1日以内にストアに載せてくれたり、Appleはもう少し厳しいです。 一般ユーザーはアプリをダウンロードしてインストールし、ウェブ動作のようにスマートフォン-サーバー間のリクエスト-レスポンスコミュニケーションが行われます。

現代のIT産業は他の産業にとってナマズのような存在です。カカオとタクシー業界、サムスン電子のギャラクシーウォッチと時計業界などがそうです。 今後もこのIT技術は既存の産業をそのままにしておくことはないでしょう。 ナマズに食われないためには、IT技術を身につけ、変化しなければ生き残れないのではないでしょうか?


付録- APIドキュメントでサービスを分析する

APIドキュメントについては、付録でもう少し詳しく解説しています。今まで見てきた内容よりもっと深いAPIドキュメントの内容を知りたい方は、この本を購入して見ることをおすすめします。電子書籍でも可能なのはご存知ですよね( シャーロット書店 - 電子書籍無料 ポストを参照してください)

長い長い文章を読んでいただきありがとうございました。
以上です、 人生副キャラ作りサポーター、secondlif.lol テリーでした。

'secondlife.lol'のすべてのコンテンツは著作権法の保護を受けています。無断転載やコピー、配布などを禁じます。

類似の投稿