プログラミング初心者だった私がIT企業に。

f:id:potato_head0809:20210404191830p:plain




はじめに。



こんにちは!ポテトヘッド(@potato_head0809)です!



今回は全くのプログラミング未経験だった私が独学で



IT企業に就職できた過程について記事を書きながら、



「していて良かった。」と思ったことや、



「こうしておけば良かった...。」と思うことなどを



おすすめの勉強方法として書いていこうと思います。



もし、これからプログラミングの勉強を始めようとしている方や、



勉強に行き詰まっている方などにこの記事が届けば良いなと思っています。



長い文章を読みたくない!という方は、



下まで一気にスクロールして頂いて構いません!



 

この記事を読んで欲しい方



・これからプログラミングを始めようと思っている方

 

・まだプログラミングを始めたばかりの方

 

・何から始めたら良いか分からない方

 

・勉強を始めたけど、行き詰まっている方





始めた理由



私は学生時代の趣味として、競馬を見るのが好きでした。



少し賭けたりしましたが、ギャンブルという楽しみ方よりも



色々な要素から考えて考えて...予想を組み立てることが好きでした。



ですが、いくら好きといっても手間が掛かり過ぎては辛いです。



そこで、効率化できないかと思い、プログラミングへの挑戦が始まりました。



ここで何を伝えたいか...。



まずはやりたいことを考える。



プログラミングを始めるきっかけは何でも良い。



いざ、始めてみよう。



さぁ、始めてみようと思ってみたものの、



何から手を付けたらいいのか全くわかりませんでした。



例えば、プログラミングってどうやってするんだ...



どうやって勉強すればいいんだ...。という感じでした。



そこで、ネットで調べてみることにしましたが、



出てくる言葉が今までに聞いたことのない言葉ばかりで



やる気が削がれてしまいそうになりました。



そこで調べ方を色々変えているうちに、



新たにやってみたいことが出てきたのです。



それが私の場合は、「Python 自動化」でした。



最初はプログラミングで予想をしたいと思っていた私が、



自動化に惹かれて、まずはPythonを勉強することになりました。



そこで、Pythonの簡単そうな参考書を購入し、



基本を勉強することから始めました。



ここまでで伝えたいことは...



まずは「競馬予想 プログラミング」のようにネットで色々調べてみる。



調べた時に新たにやりたいことが見つかれば方向性をズラしても良い。



やりたいことが見つかれば、その言語の基本から学習。



言語とは何かを一応簡単に説明しておきますと、



プログラミングはプログラミング言語というものを書いて



プログラムを作成します。



つまり、プログラミングをするためには言語が必要です。



その言語にはさまざまな種類があって、



それぞれの言語にはそれぞれの特徴があるので



やりたいことによって使う言語が異なります。



ですので、やりたいことには何の言語を使うのかを知り、



その言語の基本学習から始めると良いと思います。



f:id:potato_head0809:20210405215652p:plain




一通り基本を学習したら...



基本を一通り終えたら、次にどうするのか。



ここがかなり重要になってくると思っています。



まずここで最初に伝えておきたいことは



「基本を完璧に理解する必要はない」ということです。



それは、何故か。応用を勉強した方が理解が進むからです。



でも、何をすればいいのか...



やりたいことが決まっている方はそれに関することの



勉強を進めればいいですが、



もしかするとここで詰まってしまう方もいると思います。



そこでおすすめしたい方法は、何でもいいから簡単なものを作ってみる。



何を参考にしても良いと思います。本でも、動画でも...。



とにかく何かを作ってみましょう!



私の場合は基本を学習した後、



Pythonを使ってネットからニュースの情報を取得してみる」



というプログラムを作ってみたりしました。



ここで伝えたいことは...



言語の基本を完璧に理解する必要はない。



まずは簡単なプログラムを作成してみる。



無理してやってみたいことに関する勉強をする必要はない。



f:id:potato_head0809:20210405215727p:plain




勉強途中で感じた問題



基本の勉強を終え、簡単なプログラムを作成してみた私に



問題が出てきました。



プログラミングに関する知識以外にも



勉強しなくてはいけないことが多すぎる。



そうなんです。プログラミングの知識を得ても



数学の知識が無くてはプログラムの構成が分からない...



なんてこともありました。



もちろん、根気強く全ての勉強を頑張っても良いです。



そして、今まで学んだことを活かして方向性を変えることも大切です。



簡単に言うと、予想をするためにPythonを勉強してきたけど、



難しすぎるので、Pythonを使った他のことの勉強を始めた。感じです。



ここで挫折するか、それとも継続できるかです。



ここで伝えたいこと...



プログラミングの知識だけ得れば良いわけではない。



勉強の方向性を変えることも大切。



今まで学んできたことを活かす。



f:id:potato_head0809:20210405221236p:plain




就活をするなら...



ここまで、やりたいことを見つけて基本を学習し、



応用に進んで突き進むか方向性を変えるかを書きました。



私はプログラミングを始めたのが大学3年の時でしたので、



就職活動がありました。



そこで感じたことについて触れていきたいと思います。



まず、結論から言うと早めに取り組むことが大切です。



IT企業だけに限らず、当たり前のことですが、



私はPythonを中心に使っている企業に入りたいと考えていました。



しかし、あまり無い事実を知って焦りました。



そこで根気強く自分のやりたい言語を使っている企業を



探しても良し、方向性を変えても良し。



ちなみに私は後者でした。



ほとんどの企業でJavaを中心に使っているのを知ったので、



いい機会だと思いJavaの勉強を始めました。



勉強の面でもいい機会ですし、就活の面でも早めの準備ができるので、



就活はなるべく早めに調べるだけでもした方が良いと思います。



ここで伝えたいことは...



就職活動は早めに始めることが大切。





おすすめの勉強方法



さて、ここまでダラダラと書いてきましたが、



ここからが本題になります。笑



私が独学をしてきた中でおすすめの勉強方法は



以下のようなことだと思っています。



・タイピング

 

・動画での学習

 

・詳しい人に聞く



タイピング



まずはタイピングについてですが、



これは必須だと思います。



作業効率が大きく変わってきます。



キーボードを見ずに打てるようになると



本当に作業のスピードが上がります。



タイピングの矯正を始めた頃は本当に辛いです...。



指がムズムズ...ムカムカ...辛いです。



ですが、それを乗り越えれば本当に楽に打てます。



動画での学習



動画での学習についてですが、



私は最初、本で学習していましたが、



動画での学習に切り替えたところ、



学習の進み具合、理解度、分かりやすさが



魅力的でした。



そこで私のおすすめする動画サイトを紹介します。



それは「Udemy」です。詳細は以下からどうぞ。



Udemyホームページ



ここで簡単に説明すると、



さまざまな講師が動画を作成し、それを参考書のように



購入して学習するという仕組みです。



セールのときには1200円程で購入できます。



詳しい人に聞く



そして最後に、詳しい人に聞くことです。



私には周りにプログラミングに



詳しい人がいませんでした。



ですので、すべて独学で学習してきましたが、



スクールに通ったり、友人に聞くなどすれば



もっと早く上達できることは間違いないと思います。



最近では無料で通えるスクールもあるので



ぜひご自身で調べてみてください。



私が調べた中で、良さそうなスクールも紹介しておきます。



完全無料のプログラミングスクール詳細



無料で通えるなら、満足できなくてもショックは無いでしょうし、



参考書や動画を買うよりコストはかかりません。



調べるだけもタダなので、一度ぜひ覗いてみてください。





さいごに...。



ここまで長々と書いてきましたが、最後にもう一度



伝えたいことをまとめたいと思います。



やりたいことを見つけよう。





基本を学習したら簡単なものを作ってみる。





方向性は変わっても大丈夫。





タイピングの練習は必須。





本より動画での学習がおすすめ。





結局一番良い勉強法は詳しい人に教わる。



完全無料のプログラミングスクール詳細



最後までご覧頂きありがとうございました!



質問などございましたらTwitter(@potato_head0809)へ!



 

基本情報技術者の勉強をしよう!



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今後、ITの基礎である基本情報技術者の知識を身に付けるために、



いくつかの記事に分けて情報を発信したいと考えています。



この先、IT企業を目指している方には



大切な「はじめの第一歩」になるのではないでしょうか。



私も現在勉強中ですが、一緒に頑張りましょう!!



基本情報技術者とは...?



基本情報技術者という資格があります。



基本情報技術者試験とは、情報処理技術者試験の中で最も受験者数が多い試験です。



つまり、「基本」ということになります。



「資格なんて関係ない!」「実力主義だ!」なんて思う方もいるかもしれません。



しかし、実際に就職してみると、



「資格が必要な為、取得しなくてはいけない。」ということも多いようです。



入社後に「他に覚えなくてはいけないことが多いから基本情報技術者の勉強なんてしてられない!」



なんてことにならない為にも、今から勉強してみるのはどうでしょうか!



ITの基本的な知識も身に付くことは今後のプラス要素になることでしょう!



オススメの参考書は?



もちろん、今後このブログで基本的なことを書いていくつもりです。



基本情報技術者とはどんなものかサラッと見てみたい方などはブログでも大丈夫です。



まずはこのブログでどんなものか把握できたら、



参考書を購入して本格的に勉強してみてください。



私が現在勉強に使用している参考書はこちらです。





参考書って字が多くて読みづらいと思うことありませんか?



それに、難しそうだと思い込んで最後まで続かないことも...。



この本はそんな方にピッタリな本だと思います!



基本的にイラストで説明をしてくれますし、



最後まで読みやすい本になっていると思います。



実際に読んでみて、不自由に思うことは何もありませんでした!



どんなことを学んでいくのか。



今後このブログでは、基礎知識を身に付けるために



「CPU」



「メモリ」



「ファイル管理」



「データベース」



「ネットワーク」



システム開発



などなど、様々な基本について触れていこうと考えています。



最後に。



今後、IT企業に就職しようと考えている方。



ITについて勉強しようか考えている方。



ぜひ、このブログを通して一緒に頑張れたらいいなと思っています。



実際にプログラミングの勉強をしていて



「まだまだ基本的なことを分かっていないなぁ」と感じることがあります。



今は直接的に関係がないとしても



今後必ず活きてくる知識になると思っています。



まだまだ知識のない私ですので、



ブログを読んでいただいて、思うことがあれば



なんでも意見を言ってください。



そのご指摘が成長に繋がります。



画像も使いながら分かりやすく説明することを心がけて記事を書いていくので、



興味のある方はぜひご覧になってください。



記事を更新したタイミングでTwitterでお知らせするので、



ぜひフォローをお願いします!



基本情報技術者 ~システム開発[1]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回はシステム開発について見ていこうと思います!



では早速始めましょう!





システム開発と言っても、ただプログラムを書けば良いというものではありません。



お客様と話し合いをして理想のシステムを考えたり、



予算など、お金の話も欠かせません。



では、全体的にどのような流れになっているのか...。



それは以下の図のような感じです。



f:id:potato_head0809:20201217191326p:plain




このような一連の流れを「ソフトウェアライフサイクル」と言います。



まずはシステムの導入を企画することから始まります。



当たり前ですよね。システムを必要としないと何も始まりません。



続いて、導入したいシステムにはどのような機能が必要かを固めていきます。



ここが結構重要で、この工程をしっかりしていないと



理想のシステムを開発することが難しくなってきてしまいます。



その次がようやく、プログラムを書いていく工程になります。



そしてここで終わり...とはなりません!



作って終わり。ではなくその後もサポートをしなくてはいけません。



それが運用プロセスになります。



そこからは定期的なメンテナンスを行ったりしていくのが



システム開発の一連の流れになります。



システムベンダが決まるまで...。



システムを導入したい発注側はシステム開発をしてくれる



システムベンダを選びます。



その担当のシステムベンダが決まるまでの流れを見ていこうと思います。



まずは図を見てみてください。



f:id:potato_head0809:20201217192131p:plain




発注側がどのようなシステムが欲しいかがある程度決まったとき



まず欲しいものはおそらくそのシステムに関する情報だと思います。



そこで発注側が「情報提供依頼書」を提出し、情報提供依頼を行います。



この書類を受け取ったシステムベンダは情報を与えます。



次の段階では、予算や機能などの要件をまとめ、「提案依頼書」をシステムベンダに提出します。



この「提案依頼書」を受け取ったシステムベンダは具体的な内容を提案書にまとめ、



発注側に「提案書」を渡します。



この提案書を発注側が見て、納得がいったらシステムベンダに見積書の提出を求めます。



そして見積りを行い、それをまとめた「見積書」を発注側に提出して納得すれば



システムベンダとして選ばれるという流れになっています。



ちょっと長々としてしまいましたが、ざっくり言うと



情報→要件→予算という流れですね。





ではシステム開発の工程をもう少し詳細に見ていくとしましょう。



冒頭で触れたシステム開発の流れは覚えていますでしょうか。



要件定義



この工程では作成するシステムにどんな機能がいるのかを明らかにします。



f:id:potato_head0809:20201217193333p:plain




やはり、お客様の要求に応えることが一番です。



そのためにはお客様との話し合いが欠かせません。



これらの要件をまとめた結果については



要件定義書というもので書き残しておきます。



システム設計



この工程では、要件定義の内容を具体的にシステム仕様にしていきます。



システム設計には3つの段階があります。



図を見てください。



f:id:potato_head0809:20201217193632p:plain




外部設計ではシステムを「利用者側」から見た設計を行います。



続いて内部設計ではシステムを「開発者側」から見た設計を行います。



そして、プログラム設計ではプログラムをどのように作っていくのかを設計します。



プログラミング



この工程は、先程のシステム設計で決定した内容に従い、



プログラムをモジュールという単位で作成します。



ここで登場してくるのがプログラミング言語です。



このプログラミング言語を使って命令を書き込んでいきます。



f:id:potato_head0809:20201217194005p:plain




普段我々は日本語を話しています。英語を知らない方からすれば



英語で話されてもよくわかりませんよね。



それと同じで、コンピュータには機械語という言語があります。



プログラミングで書かれた文字ではコンピュータはプログラムを実行できません。



では何が必要か...。それはコンピュータにわかる言語に翻訳することです。



プログラムが書かれたソースコード機械語に翻訳することで、



プログラムが実行できるようになっているのです。



テスト



この工程では、作成したプログラムにミスがないかを確認しています。



システム設計のようにテストにおいても複数の段階に分けられています。



f:id:potato_head0809:20201217194426p:plain




モジュール単位でのテストや、複数のモジュールを組み合わせたテスト、



さらにはシステム全体のテストなど様々です。



最終的には、本番の環境と同じ状態でテストを行います。



さいごに。



今回はシステム開発の流れについて見ていきました。



ただプログラミングをすれば良いというものではないとわかって頂けたでしょうか。



最後までご覧いただきありがとうございます。



宜しければツイッター(@potato_head0809)のフォローをお願いします!



今回は以上です。お疲れ様でした。

基本情報技術者 ~システム開発[2]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回はシステム開発における



代表的な開発手法について学んでいきましょう!



前回はシステム開発の流れについて触れました。



まだご覧になっていない方はぜひご覧になってみてください。



システム開発の流れ

potato-head0809.hatenablog.com

 



では早速始めていきましょう!





まず今回紹介するシステム開発の手法は



ウォータフォールモデル」「プロトタイピングモデル」「スパイラルモデル」の3つです。



これらは基本的なものであり、他にも様々な手法がありますが、



今回は基本的なものだけ紹介したいと思います。



システム開発の流れとしては、要求を確認し、設計し、作成して最後はテスト。



この流れは基本的には変わりません。



その流れに特徴を加え、開発の効率を向上させることが大切です。





ウォータフォールモデルは、最も古くからある開発手法です。



要件定義、設計、プログラミング、テストと



各工程を順番に進めていく開発手法になります。



f:id:potato_head0809:20201221075029p:plain




メリットとしては、開発の管理が行いやすいことです。



基本的には大規模な開発で用いられています。



デメリットとしては、利用者が確認できるのは最終段階のタイミングなので



万が一、「ここを直して欲しい」と言われたときに直す作業が大変になってくることです。



プロトタイピングモデル



プロトタイピングモデルでは、開発初期の段階でプロトタイプ(試作品)を作成し、



それを利用者に確認してもらってから開発を進めていきます。



f:id:potato_head0809:20201221075333p:plain




メリットとしては、開発初期の段階で利用者に確認してもらうことで



利用者と開発者との意識のズレを無くすことができます。



ウォータフォールモデルのように、後々直して欲しいという



問題がでることはありません。



デメリットとしては、プロトタイプを作る作業にももちろん手間はかかります。



もし、利用者からの要望が細かい場合は、何度もプロトタイプを作り直さなくてはいけません。



試作品を作らなくてはいけない点から、大規模な開発には向いていません。



スパイラルモデル



スパイラルモデルでは、システムを複数のサブシステムに分割し



それぞれのサブシステムごとに開発を進めていきます。



このとき、それぞれのサブシステムの開発には



ウォータフォールモデルが用いられています。



f:id:potato_head0809:20201221075850p:plain




スパイラルモデルでは、サブシステムをプロトタイプの代わりとして



利用者に触れて確認してもらうことが可能です。



そして、この時の利用者の意見を次のサブシステムの開発に活かすことができます。



このような点ではプロトタイピングモデルに似ているところがあります。



スパイラルモデルは、ウォータフォールモデルとプロトタイピングモデルを



組み合わせたような開発手法というわけです。



さいごに。



今回見てきた開発手法はどれも基本的な手法になります。



冒頭でも述べましたが、この他にも開発手法があります。



今後、それらの開発手法も紹介できたらと思っています。



今回も最後までご覧いただきありがとうございました。



宜しければツイッター(@potato_head0809)のフォローをお願いします!



今回は以上になります。



お疲れ様でした。

基本情報技術者 ~システム開発[3]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回はシステム開発を行う際に、その開発周りのマネジメントについて



学んでいこうと思います。



システム開発の基本的なことには以前の記事で触れていますので、



ぜひご覧になってください。



システム開発の基本

potato-head0809.hatenablog.com

 



システム開発の手法

potato-head0809.hatenablog.com

 



では今回の内容に入っていきましょう!



プロジェクトマネジメント



プロジェクトには様々なことを明確にしたり決定したり



しなくてはいけません。



例えば、どのようなシステムを作成するのか。



期限は。予算、品質、スケジュールなど...。



これらのマネジメントを体系的にまとめたものがあります。



PMBOK(Project Management Body of Knowledge)です。



これは米国のプロジェクトマネジメント協会というところが



まとめたプロジェクトマネジメントの知識体系で、



国際的に標準的なものとなっています。



f:id:potato_head0809:20201223220229p:plain




WBS



ここでWBSについて軽く説明をしたいと思います。



WBS(Work Breakdown Structure)とは、



プロジェクトに必要な作業や成果物を階層化した図で表したものです。



先程出てきたPMBOKではスコープ管理に活用されています。



f:id:potato_head0809:20201223220733p:plain




何か大きなシステムを作るとしたとき、



いきなりそのシステムを完成させようとしても難しいと思います。



そこで、図のように細かく細分化することで、



何をするべきかなどが明確になり、全体的に把握することができます。



見積り



では続いて、開発コストについての話をしたいと思います。



開発する前に、お客様に予算などを伝えなくてはいけませんよね?



では、その予算はどのようにして算出しているのか...。



これには2つの方法があります。



「プログラムステップ法」と「ファンクションポイント法」です。



それぞれについて見ていきましょう。



まずはプログラムステップ法です。



昔からある見積り方法で、



ソースコードの行(ステップ)数によってコストを算出します。



一方、ファンクションポイント法



表示画面や出力ファイルなどの利用者から見た機能に着目し、



その個数や難易度からコストを算出します。



メリットとしては、利用者が見える部分が費用として算出されるため、



利用者は理解しやすいものとなっています。



f:id:potato_head0809:20201223221524p:plain




アローダイアグラム



では次に、スケジュール管理に関することについて見ていきましょう。



スケジュール管理にはアローダイアグラムを使って明確にしていきます。



アローダイアグラムは以下の図のようなものです。



f:id:potato_head0809:20201223221812p:plain




数字の書かれている◯は作業の開始と終了を表しており、



結合点と言われます。



1つの結合点から開始できる作業は1つのみ。



→は作業を表す矢印(アロー)で線の上に作業名、



線の下にはその作業にかかる日数を記載します。



点線の矢印はダミー作業を表す矢印です。



2つ以上の作業がある場合には、このダミー矢印を使って



結合点へと繋げます。



では、全体の日数はどのようにして見るのか。



先程の図では、ダミー矢印が書かれているところで



枝分かれしているのでどれを数えて全体の日数にすれば良いのか...。



悩んでしまうかもしれません。



最初に簡単に述べておくと、一番日数のかかる経路で数えれば大丈夫です。



f:id:potato_head0809:20201223222404p:plain




なぜ一番日数のかかる経路で数えるのかというと、



例えばFの作業はCとDとEの作業が終わっていないと



Fの作業を開始できないようになっているため、



一番日数のかかる経路で全体を見ていかなくてはいけないのです。



これを「クリティカルパス」と言います。



最早結合点時刻



ではアローダイアグラムについてなんとなく理解ができたところで



少し応用に入っていこうと思います。



と言っても、そんなに難しくはありません。



最早結合点時刻とは、対象とする結合点で、最も早く作業を開始できる日時のことです。



まずは図を見てみましょう。



f:id:potato_head0809:20201223222814p:plain




そこまでの日数を数えて足すだけです。



少し気をつけることとしては⑥の作業のように



それまでに済ませておかなくてはいけない作業がある場合には



クリティカルパスの経路で数えることくらいです。



最遅結合点時刻



最遅結合点時刻とは、対象とする結合点が



全体に影響を与えない範囲で最も開始を遅らせられる日時のことです。



これについてもまずは図を見ておきましょう。



f:id:potato_head0809:20201223223153p:plain




上の図でいうと④の作業の開始は⑥の最早結合点時刻が70日であるため。



④自身がかかる日数20日前の50日には作業を開始していなくてはいけません。



この50日が④の作業の最遅結合点時刻となります。



さいごに。



今回はシステム開発周りのことについて触れました。



スケジュール管理を中心に見ましたが、



もちろんこれ以外にもたくさんあります。



それらについては次回以降にでも記事に書きたいと思います。



今回も最後までご覧いただきありがとうございました。



宜しければツイッター(@potato_head0809)のフォローをお願いします!



今回は以上になります。お疲れ様でした。



基本情報技術者 ~セキュリティ[1]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回はセキュリティについて学んでいこうと思います。



ネットワークにはさまざまな危険が潜んでいます。



情報の漏洩、データの破棄、迷惑メールなど



数えきれないくらいあります。



これらの悪意から情報を守らなくてはいけません。



今回はそんな情報セキュリティについて見ていきます。



セキュリティマネジメント



情報セキュリティは、とにかく頑丈にすれば情報を守れるというものではありません。



例えば、パスワードが漏れてはいけないから、2重、3重に設定しようとしたとしても



使いづらいですし、忘れてしまうこともありますよね。



どうすれば、「安全性」と「利便性」のバランスが取れるのか



ということが大切になってきます。



そこで、情報セキュリティは次の3つの要素を重視しています。



f:id:potato_head0809:20201216123113p:plain




セキュリティポリシ



では、先程触れた情報セキュリティについてバランスを考え



「こんな感じ」という想像だけでは情報を守ることはできません。



そこでセキュリティポリシの登場です。



企業としてどのように守っていくかを明文化し、



社内に共有をしていきます。



セキュリティポリシには次の3階層で構成されています。



f:id:potato_head0809:20201216123512p:plain




まずは方針を定め、その方針を実現するために対策や基準を定め、



最後に手順を進めていきます。



この方針を決めることと対策や基準を定めることが



セキュリティポリシと言われています。



ユーザ認証



さて、我々が普段使っているスマートフォンでも



ユーザの認証が行われる場面が多くあると思います。



ATMなどでもそうですね。識別されています。



ユーザの認証手法には以下のようなものがあります。



f:id:potato_head0809:20201216123823p:plain




アクセス権



続いて、アクセス権について見ていきましょう。



社内メールなどでよく使われていると思います。



許可されている人のみが見れるものや、



全員に見てもらいたいため全員に許可されているものなど、



種類は様々だと思います。



そこでアクセス権を設定するのです。



言葉で説明するより図を見て全体的に理解してみてください。



f:id:potato_head0809:20201216124112p:plain






さて、最後にどのようにして不正アクセスが行われているのか。



その手法について見ていきましょう。



軽くこんなものがあるのかという風に



見ていただければと思います。



f:id:potato_head0809:20201216124319p:plain




さいごに。



今回はセキュリティについて学びました。



不正アクセスには個人的に対応できないものも



あると思いますが、パスワードなど個人的にも



対応できるものもありますよね。



不正アクセスにあわないように



セキュリティの知識も大切ですので学ぶことがおすすめです。



最後までご覧いただきありがとうございました。



よかったらツイッター(@potato_head0809)のフォローをお願いします!



今回は以上です。お疲れ様でした。

基本情報技術者 ~ネットワーク[1]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回はネットワークについて学んでいこうと思います!



では早速始めましょう。



LAN・WAN



「LAN」と「WAN」



みなさんは一度は見たことや聞いたことがあると思います。



まずはこれらが一体どういうものなのかを軽く見ていこうと思います。



f:id:potato_head0809:20201211075815p:plain




図にもあるように、「LAN」はオフィスなどのように



比較的狭い範囲のネットワークのことを指します。



一方「WAN」はそのLANとLANを繋いだネットワークのことです。



通信路



データをやりとりするためには通信路が必要になります。



その通信路にもさまざまな方式があり、それらについて見ていこうと思います。



まずは最もシンプルな方式の専用回線方式。



これはお互いを直接1本の回線で繋いでいるだけになります。



f:id:potato_head0809:20201211080313p:plain




しかし、この専用回線方式では1対1のやりとりしか行えず、



効率的にも悪いですし、もっと多くのコンピュータで自由にやりとりがしたいのです。



そこで、交換方式というものがあります。



f:id:potato_head0809:20201211080435p:plain




この交換方式には交換機というものが存在し、この交換機が



回線の選択を行って必要に応じた通信路が決められています。



交換方式には大きく分けて2つあります。



回線交換方式」と「パケット交換方式」です。



f:id:potato_head0809:20201211080628p:plain



回線交換方式では、送信元から送信先までの経路を交換機が繋いで、



通信路として固定しているものです。



しかし、回線交換方式でのデメリットとしては、



通信路として選択された通信路は送信元と送信先のペアに



占有されてしまうので他の端末がその回線を使うことができません。





続いてパケット交換方式です。



f:id:potato_head0809:20201211080959p:plain




パケット交換方式では、パケットという単位に分割された通信データを



交換機が適切な回線へと送り出すことで通信路を作っています。



現在のコンピュータネットワークで用いられているのは、



基本的にはすべてパケット交換方式です。



LAN



LANを構築する際、それぞれのコンピュータをどのようにして繋ぐのかを



考える必要があります。



その接続形態のことをトポロジーと言います。



トポロジーには代表的なものが3つあります。



以下の図で確認してみてください。



f:id:potato_head0809:20201211081509p:plain




まずは「スター型」。



ハブを中心としてコンピュータを接続する形態です。



使われている規格はイーサネットが使われています。





続いて「バス型」。



1本の基幹となるケーブルにそれぞれのコンピュータが



接続されている形態です。



こちらもスター型と同様イーサネットという規格が使われています。



最後に「リング型」。



リング上にコンピュータを接続する形態です。



こちらのトポロジーではトークンリングという規格が使われています。





現在最も普及しているのがイーサネットという規格です。



これについてはあまり説明のしようがないので、



図を載せておきますので詳しく知りたいという方は



ご覧になってください。



f:id:potato_head0809:20201211082029p:plain




イーサネットではアクセス制御方式として、



CSMA/CD方式を採用しています。



このCSMA/CD方式とはどんなものなのか、



図を見ていただいた方が分かりやすいと思いますので



ご覧になってください。



f:id:potato_head0809:20201211082352p:plain




簡単に言うと、誰かが使っているときにはデータを送信することができません。



もし、衝突してしまった場合には両方とも待ち時間が発生します。



一見、悪いばかりに思われますが、この方式を取ることで



1本のケーブルを複数のコンピュータで共有するメリットがあります。





では続いては、リング型LANの規格「トークンリング」について見ていきましょう。



トークンリングではアクセス制御方式に「トークンパッシング方式」を採用しています。



f:id:potato_head0809:20201211082737p:plain




トークンパッシング方式とは、



送信の権利を表すトークンがネットワーク上を流れており、



これを使うことでデータの送信が可能になるものです。



流れは以下の図のようになっています。



f:id:potato_head0809:20201211083154p:plain




ここで重要なのは、図でも示したように



トークンは状態によって名称が変わることです。



そしてそれらがどのタイミングで切り替わるのかです。





無線LANは今までに聞いたことがあるでしょう。



ケーブルを必要とせず、電波などで通信を行うLANのことです。



f:id:potato_head0809:20201211083459p:plain




クライアント・サーバ



ネットワークによって複数のコンピュータが組み合わさるころで働く



処理の形態は色々な種類があります。



その中でも代表的なものとして、



「集中処理」と「分散処理」があります。



それぞれについて見ていきましょう。



集中処理



集中処理ではホストコンピュータが集中的に処理をして



他のコンピュータはそれに紐づけられる構成になっています。



中心はホストコンピュータになるので、もし壊れてしまうと...



それに紐づけられたコンピュータにも影響が出て、



全体的にダメージを受けます。



ただ悪い面だけでなく、中心となる存在があるので



データの一貫性が取れるという良い面もあります。



f:id:potato_head0809:20201211202036p:plain




分散処理



分散処理では複数のコンピュータに負荷を分散させ、



それぞれが処理を行う構成になっています。



集中処理とは違い、ホストコンピュータのような中心の存在がありません。



そのため、どれかのコンピュータが壊れたとしても、



全体には影響が出ず、大きなダメージは受けません。



しかし、分散しているのでデータの一貫性が取りにくいことや、



セキュリティの面でも不安な部分があります。



昔は小型コンピュータの性能があまり良くなかったので、



 集中処理が主流でした。



しかし、最近はコンピュータの性能も上がり、



集中処理では効率が悪いので、小型コンピュータにも



しっかりと仕事をさせようということになってきました。



そこで誕生したのが「クライアントサーバシステム」です。



処理を分散させながらも集中処理のメリットを取り入れたような特徴を持ちます。



f:id:potato_head0809:20201211202055p:plain




クライアントサーバシステム



集中的に管理をした方が良い資源(プリンタなど)やサービス(Webなど)を



提供してくれるサーバと、



リクエストを投げるクライアントという2種類の



コンピュータで処理を行う構成になっています。



言葉ではわかりづらいかもしれません。



図を見てみましょう。



f:id:potato_head0809:20201211202118p:plain




基本的に計算問題など自身でできることは自分で行います。



先ほども述べたように、集中的に管理をした方が良いものは



専用のサーバが用意されています。



メールやWeb、データベースや保存する他のファイルも



それぞれサーバが存在します。



サービスや資源を提供するサーバと



要求するクライアントに分けているのがクライアントサーバシステムです。



さいごに。



最後までご覧頂きありがとうございました。



ネットワークは覚えることが多いので、



今後も何回かに分けて記事を書いていこうと思います。



宜しければツイッター(@potato_head0809)のフォローをお願いします!



今回は以上です。お疲れ様でした。