Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【毎週日曜更新】本の要約・考察第42回~『なぜ人と組織は変われないのか』~

f:id:ShotaNukumizu_1000:20211228133451p:plain

おはようございます。Shotaです。今日は日曜日なので、本の要約・解説記事を執筆していきます。

今回紹介する書籍は、『なぜ人と組織は変われないのか』です。


はじめに

f:id:ShotaNukumizu_1000:20211228153330p:plain]

リーダーの立場にある人なら誰でも、変わることと改善することの重要性は身にしみて感じているでしょう。自分自身や他人を変えることの難しさも十分に理解していると思います。

しかし、それが難しい理由や、それを実現できる具体的な方法に関しては、ほとんどの人は十分に理解できていません。どうして人は変わることができないのでしょうか?

最近の研究によると、食生活を改めたり、もっと運動したり、喫煙をやめたりしなければ心臓病で死にますよと専門医から警告された時、実際にそのように自分を変えられる人は七人に一人しかいないそうです。

しかし、生活習慣を変えない大人であっても、彼らは長く生きたいと思う人も少なくないでしょう。彼らは自分が変わることの重要性を理解していないわけではありません。

**このように、人は自分の命に関わる問題でさえも自分自身が心から望んでいる行動を起こすことができません。その原因は意志力の問題ではありません。

本当の問題は、自分が本心からやりたいと望んでいることと実際に実行できることの間に存在する大きな溝です。この溝を埋めることが非常に重要なのです。**

問題をあぶり出す「免疫マップ」

本書では、人間が行動を起こせない根本的な要因を詳細に解明する手段として「免疫マップ」を上げています。「免疫マップ」を作ることで、現状だけではなく、現状の原因やその解決方法を詳細に解明できるのです。

免疫マップには以下の3つを書きます。

  • 自分が達成すべき目標①
  • 目標を達成する時に障壁となる行動②
  • ②の行動をついついやってしまう「裏の目標」③

例えば、以下のようにして書くことができます。

  • ①――新しい価値観をもっと受け入れられるようになる
  • ②――すぐに自分の意見を述べてしまう。断言する
  • ③――「私のやり方でやりたい」という思いがある

人が変わらない理由は、二つの相反する目標の両方を本気で達成したいからです。人間は矛盾を抱えている生き物です。人間が抱えている矛盾に問題の本質があります。自分を変えたいと思っているのに、自分の核となる部分を守りたいという思いを抱いています。

私たちはなにか目標を立てる際に、なくすべき悪い行動と増やすべき良い行動だけに目が向きがちですが、それを邪魔する裏の目標を明らかにしない限り問題を正確に定義したとはなりません。免疫マップは、自分が抱えている問題を正しく理解し、問題を解決する一歩を踏み出すことができます。

まとめ:新しい物事に挑戦する時は必ず障壁がある

f:id:ShotaNukumizu_1000:20211228153446p:plain

今回の記事では、ハーバード大学の教授が執筆した『なぜ人と組織は変われないのか』について詳細に解説しました。

一言でまとめると本書では、自分が本心からやりたいと望んでいることと実際に実行できることの間に存在する大きな問題について詳細に述べられていました。

最後に個人的な補足を入れてこの記事を締めくくりたいと思います。それは、新しい物事に挑戦するときには必ず障壁があることです。

本書でも目標を達成するときには、それを邪魔する行動をする裏の目標を明確にすることが強調されていました。本書の内容を踏まえると、新しい物事への挑戦には障壁がつきものです。新しい物事に挑戦する際に立ちはだかる障壁と、それの対処法を予め言語化しておかないと変われないことを改めて理解できました。

今回の記事はこれで終了です。

【参考図書】

Djangoをメインの開発フレームワークに使う理由4選

f:id:ShotaNukumizu_1000:20220102090648p:plain

おはようございます。Shotaです。

今回の記事では、私がDjangoをメインの開発フレームワークに使う理由を4つ紹介します。

現在プログラミングを学習している人の中で、

🤔「Djangoアプリ開発で使うメリットって何だろう...?」

😥「アプリを開発してみたいけど何のフレームワークを使えばいいのかわからない」

このように考えている人にとっては参考になるかもしれません。

それではさっそく、本題に入りましょう。



Djangoとは

f:id:ShotaNukumizu_1000:20211205071412p:plain

DjangoPythonのWebフレームワークで、世界中のバックエンド開発で利用されています。Pythonで多機能かつ大規模なWEBアプリを開発するのに最適です。

フレームワークは、アプリケーション開発で利用される事が多い機能をひとまとめにしたソフトウェアのことです。開発に取り入れることで、幅広いWebアプリケーションを開発できるようになり、効率的に開発を進められます。

Djangoオープンソースとして提供されているので、誰でも無料で使えます。


Djangoを使う理由4つ

f:id:ShotaNukumizu_1000:20210619110155p:plain

数多くあるWebフレームワークの中で、私がDjangoを開発に使う理由としては以下の4つが挙げられます。

  • 情報量が多いから

  • デフォルトで数多くの機能が揃っており、個人開発に最適だから

  • プログラムが非常に読みやすいから

  • APIを開発できるから


それぞれ順番に解説していきます。


情報量が多いから

Djangoは世界中のWEBアプリのバックエンドで活用されているので、ネットや動画両方とも情報量が非常に多いです。(特に英語)

Djangoの公式ドキュメントも非常にわかりやすいので開発が非常にはかどります。特にDjangoで使うフォームやログイン機能はたくさんの情報量があるのでアクセスしやすいでしょう。


デフォルトで数多くの機能が揃っており、個人開発に最適だから

Djangoはコマンドを入力するとデフォルトで開発に必要な機能が一式揃っています。これは効率的に開発を進めたり、個人でプロダクトを開発する上では非常に助かります。

主にDjangoにデフォルトで備わっている機能は以下の通りです。

  • サイトの管理画面

  • サイトの管理者(superuser)作成、ユーザ認証

  • テンプレートエンジン

  • データベースの操作

  • メール送信のフレームワーク

  • 多言語対応

  • キャッシュシステム

  • 開発者用サーバ


これらの機能がデフォルトで全て揃っているのがDjangoの強みです。

それだけではありません。Djangoはライブラリも非常に豊富なので簡単な機能なら数行のコードで実装できます。

それだけではありません。DjangoPythonで開発されているので、Pythonの強みであるライブラリの豊富さを開発に応用できます。アプリに必要な機能をPythonのライブラリで十分に補えるのが魅力です。


プログラムが非常に読みやすいから

先程も述べましたが、DjangoPythonで開発されています。Pythonは少ないコード量で実装できるので非常に読みやすいプログラムが仕上がります。

そのPythonの考え方はそのままDjangoにも受け継がれています。


APIを開発できるから

DjangoAPIを開発できます。DjangoにはデフォルトでAPIを自動で生成するDjango REST Frameworkが搭載されているので誰でもAPIを簡単に開発できます。

APIを開発できるので、マイクロサービスのバックエンドとしても十分に機能できます。


Djangoを開発で使うときの注意点2つ

f:id:ShotaNukumizu_1000:20211013131055p:plain

しかし、Djangoを開発で使うときには以下の注意点があります。


それぞれ順番に解説していきます。


Pythonの前提知識がないと習得が難しい

DjangoPythonで開発されているWebフレームワークです。使いこなすには当然Pythonの文法知識が必要不可欠になります。

Pythonの前提知識がないとDjangoを使いこなすのは難しいですが、Pythonの文法自体はそこまで難しくないので習得には困りません。


フレームワークの仕組みを理解する必要がある

Djangoフレームワークのひとつなので、使いこなすにはフレームワーク独特の仕組みや考え方を十分に理解しておく必要があります。

特に、以下の内容はDjangoを開発する上では特に重要になるので開発で使う場合は十分に理解しておく必要があります。

  • Djangoでhtmlファイルが表示される仕組み

  • Djangoでログイン機能を実装する仕組み

  • Djangoでデータベースを作ったり、他のデータベースと連携させたりする仕組み


まとめ:DjangoはWEB開発において非常に優秀なフレームワーク

f:id:ShotaNukumizu_1000:20210924101936p:plain

今回の記事では、私がDjangoをメインの開発フレームワークに使う理由を4つ紹介しました。

今回の記事を参考に、Djangoに関する理解や知識を十分に深めるきっかけになれば非常に幸いです。

今回の記事はこれで終了です。

【参考サイト】

developer.mozilla.org

coinbaby8.com

www.acrovision.jp

プログラミングを使った仕事とは?|職種と仕事内容、活用事例を解説

f:id:ShotaNukumizu_1000:20220103130058p:plain

おはようございます。Shotaです。

プログラミングは世の中のあらゆるサービスやテクノロジーを支える技術です。プログラミングを勉強している人の中には、

「プログラミングを学ぶとどのような仕事に就ける...?」

「プログラミングで仕事をしてみたい」

このように感じている人も少なくないでしょう。

そこで今回の記事では、プログラミングに関する仕事内容について徹底解説します。

それでは早速、本題に入りましょう。



プログラミングの仕事

f:id:ShotaNukumizu_1000:20211230093315p:plain

本章では、プログラミングを使う仕事とプログラミングが活かせる画期的な仕事を紹介します。



それぞれ順番に解説していきます。


システムエンジニア

f:id:ShotaNukumizu_1000:20211027093121p:plain

システムエンジニアは、システム開発における一連の業務を行います。

プログラミングスキルだけではなく、設計書を作成するスキル、クライアントの業務を理解し、課題を発見する能力やコミュニケーション力など幅広いスキルが必要とされる職種です。


サーバエンジニア

f:id:ShotaNukumizu_1000:20211013131055p:plain

サーバエンジニアは、サーバーの設計、構築や運用をメインとするエンジニアです。

障害への対応やセキュリティ対策も担当するので、OSに関する知識やセキュリティの対応能力などの幅広い知識が必要です。


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

f:id:ShotaNukumizu_1000:20211230093445p:plain

フロントエンドエンジニアは、ユーザが直接操作する部分の実装を担当します。

具体的には、HTML、CSSJavaScriptを使ってデザインを設計していきます。フロントエンドエンジニアはWEBデザイナーと業務内容が重複する部分もあります。

WEB業界の拡大に伴って、フロントエンドエンジニアは近年需要が増えている仕事です。


データベースエンジニア

f:id:ShotaNukumizu_1000:20211206103412p:plain

データベースエンジニアは、データベースの設計、構築や運用をメインとするエンジニアです。

データベースを単に設計するだけではなく、適切な方法で運用するスキルが必要になります。

データベースはWEBアプリの開発で必要不可欠なので、データベースエンジニアもWEB業界の拡大に伴って需要が増えています。


プログラミングが使われる場所

f:id:ShotaNukumizu_1000:20210915061857p:plain

様々なデバイスやコンピュータが存在しているところにプログラミングが必要な分野があります。主に、以下の場面ではプログラミングが必要不可欠なものになっています。

  • 普段の生活

  • ゲームなどのエンタメ


それぞれ順番に解説していきます。


普段の生活

普段の生活でも、プログラミングの技術は必要不可欠なものになっています。

代表的なものとして、SNSなどのWEBアプリケーションやスマートフォンアプリが挙げられます。

また、パソコンやスマートフォン以外のデバイスでも様々なプログラムが使われています。例えば、冷蔵庫の温度制御、指示を出すためのリモコンなどの電化製品にはすべてプログラムが使われています。


ゲームなどのエンタメ

すべてのオンラインゲームやスマホゲームはプログラムで成り立っています。近年ではAR(拡張現実)やVR(仮想現実)を活用したゲームも登場しています。

このように、世の中のあらゆるところでプログラミング技術が生かされているのです。


まとめ

今回の記事では、プログラミングを使った仕事についてまとめてみました。

プログラミングは私たちの生活や社会を支えている技術です。プログラミングを勉強すると、将来の可能性を広げることに繋がります。

今回の記事を参考に、プログラミングを使った仕事に関する理解や興味を深めていただければ幸いです。

今回の記事はこれで終了です。

【参考サイト】

tech-camp.in

web-camp.io

スクリプト言語とコンパイル言語の特徴をそれぞれ徹底解説

f:id:ShotaNukumizu_1000:20220104072823p:plain

おはようございます。Shotaです。

最近プログラミング学習をする人が増えてきましたが、

「プログラミングは習得が難しい」

「プログラミングはどう勉強すればいいのかわからない...」

プログラミング言語ってどんな種類があるの?」

このように感じている人も少なくないでしょう。

そこで、今回の記事では数多くあるプログラミング言語の中でもスクリプト言語コンパイル言語についてそれぞれの特徴や違いについて詳細に解説します。



スクリプト言語とは

f:id:ShotaNukumizu_1000:20220102090648p:plain

スクリプト言語とは、プログラムを実行する際に逐次機械語に変換するプログラミング言語です。人間がコードを読んでもプログラムをある程度理解できるレベルまでに可読性を高めて処理できるのが最大の特徴です。


特徴

スクリプト言語の特徴には主に以下のようなものが挙げられます。

  • ソースコードを書けばすぐに実行できるので、短いサイクルで簡単に開発できる

  • 学習コストが低め

  • ライブラリが豊富

  • 実行速度が遅い


これらの特徴を踏まえると、スクリプト言語は個人開発に非常に向いています。しかし、コードを実行する速度が遅いので大規模開発には向いていません。


主な言語

主なスクリプト言語は以下の通りです。ここで紹介するプログラミング言語はどれも初心者におすすめです。

  • JavaScript:フロントエンド開発で、WEBページにアニメーションや動きをつける際に使われる

  • PHP:サーバ側でWEBページに動きをつける。データベースと連携できる

  • Python機械学習やデータ分析で需要が高いプログラミング言語。WEBアプリも開発できる


コンパイル言語とは

f:id:ShotaNukumizu_1000:20210924113541p:plain

コンパイル言語は、プログラムを実行する際に機械語に変換するプログラミング言語です。

そもそも、機械は人間の言葉を理解できないので、機械でも理解できるように言語を翻訳する必要があります。この翻訳作業を「コンパイル」と呼びます。

言い換えれば、コンパイル言語は人が理解できる言語を機械語に翻訳して、機械に指示できるようにするための言語です。


特徴

コンパイル言語の特徴には主に以下のようなものが挙げられます。


これらの特徴を踏まえると、コンパイル言語は予め機械語に近い実行形式に変換するので大規模開発に非常に向いています。しかし、学習コストが高いので初心者には向いていません。


主な言語

主なコンパイル言語は以下の通りです。

  • C言語:フロントエンド開発で、WEBページにアニメーションや動きをつける際に使われる

  • Java:サーバ側でWEBページに動きをつける。データベースと連携できる


コンパイル言語はスクリプト言語に比べて難解ですが、歴史が長く、信頼かつ需要が高い言語です。


まとめ

f:id:ShotaNukumizu_1000:20211114091448p:plain

今回の記事では、スクリプト言語コンパイル言語の特徴をそれぞれ徹底解説しました。

プログラミング学習を始めたばかりの初心者は、比較的難易度の低いスクリプト言語から学習を始めたほうがいいと思います。ただし、今回の記事の内容はあくまで一例に過ぎないので、他の記事も参照して自分のプログラミング学習に役立ててください。

今回の記事を参考に、スクリプト言語コンパイル言語の特徴について理解していただければ幸いです。

今回の記事はこれで終了です。

【参考サイト】

persol-tech-s.co.jp

www.modis.jp

tech-camp.in

マイクロサービスとは?|初心者向けに概要や事例を簡単に解説

f:id:ShotaNukumizu_1000:20211230100947p:plain

おはようございます。Shotaです。

この記事を読んでいる皆さんは、「マイクロサービス」について知っていますか?

🤨「マイクロサービスって何?」

😥「聞いたことはあるけど、具体的な内容までは理解できていない」

このような方がおそらく大半だと思います。

そこで、今回の記事ではマイクロサービスについてその概要と活用事例について詳細に解説します。



マイクロサービスとは

f:id:ShotaNukumizu_1000:20211230093315p:plain

マイクロサービス(microservice)とは、別々で開発された複数の小さなサービスを連携させて管理や運営を行っていくソフトウェアのアーキテクチャを意味します。

マイクロサービスを使うことで、小さなサービス単位をHTTP経由のAPIと言った小さな軽量な通信で連携できるので、処理速度の向上に繋がります。

マイクロサービスは一つのサービスを一つのプロセスとして稼働させる仕組みをとっています。サービス同士はAPIによって最小限の機能を持つのみで、基本的にはそれぞれ独立しています。

そのためには、設計するにあたってそれぞれのサービスに特化した手法を取ることができるようになります。


マイクロサービスのメリット・デメリット

本章では、マイクロサービスのメリット・デメリットをそれぞれ解説します。


メリット

マイクロサービスを使うメリットには主に以下のようなものが挙げられます。

  • リソースを有効活用できる

  • 新しい機能を追加できるなど柔軟性がある

  • 高速に処理できる


一つのプロセスで一つのサービスを開発するマイクロサービスの特性は、サービス同士の依存関係が強く、特異性や独自性を一定レベルで維持できます。

そのため、障害が起きても局所にとどめて影響を最小限にしたり、新しい技術を取り入れたりする際にも柔軟に対応したりできます。


デメリット

逆に、マイクロサービスを活用するデメリットには以下のようなものがあります。

  • サービスを的確に分割して設計するのが難しい

  • 一貫性がないので、運用業務の負担が増える


マイクロサービスは一つのサービスを複数の業務に分担する構造なので、サービスをどう分割するかについては慎重に検討する必要があります。

それだけではなく、一つのサービスを複数に分割するので、サービスごとの管理業務が必要になります。これによって新しくコストが発声する可能性があることも念頭に入れておきましょう。


マイクロサービスの活用事例

マイクロサービスの活用事例には、以下の3つがあります。



これら3つの企業は、マイクロサービスを導入することでユーザにより迅速にサービスを提供することを試みています。


まとめ

f:id:ShotaNukumizu_1000:20210924101936p:plain

マイクロサービスは、小回りの効いた設計で日々スピードを増すデジタルテクノロジーに対抗しています。

とは言っても、どのようにサービスを提供するかは専門的な知識やノウハウが必要です。

今回の記事を参考に、マイクロサービスについての理解を深めていただけると幸いです。

今回の記事はこれで終了です。

【参考サイト】

ncdc.co.jp

ec-orange.jp