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

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

Webアプリケーションとは?必要な基礎知識のまとめ

f:id:ShotaNukumizu_1000:20210603061116p:plain

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

今日はWebアプリケーションの開発に必要な知識を簡潔に、かつ詳細に解説していきます。

【目次】

Webアプリの基礎知識

Webアプリとは、ブラウザで使えるアプリのことです。手軽さが特徴で、ユーザやサーバ両方にとってもメリットがあります。

例えば、「食べログ」、「YouTube」や「Twitter」のようなアプリをダウンロードしなくてもGoogle用な検索エンジンでWebサイトを開くことができ、利用することができます。

このようなページがWebアプリです。

サーバのメリット

Webアプリの開発は、前述した通り、ネイティブアプリ(インストールして使うアプリ)よりもコストを抑えることができます。また、Webアプリはアップデートしやすいというメリットもあります。WebアプリならWebサーバ側でアップデートできるので、すぐに更新できます。

ユーザのメリット

ユーザがWebアプリを使うメリットは「手軽さ」です。

アプリをインストールしなくても使えるので、通信のデータ容量を節約できます。Webサイトをブックマークしていれば、日常的な利用でも手間がかからないのでこちらを好んで使う人もいます。

Webアプリ開発の手順、おすすめ言語やスキル

Webアプリを開発するために必要な知識はざっくり次の通りです。

  • Webの基礎知識:「Web」とは、インターネットで情報を後悔・閲覧できる仕組み。
  • Webの仕組み:フロントエンド、バックエンド、データベース
  • プログラミング言語の種類:「フロントエンド言語」(Web上の表面的な部分を作成)と「サーバサイド言語」(Web上の裏側の処理)
  • 必要なスキルを学ぶ:フレームワーク

本ブログでは、特に重要な「Webの仕組み」と「フレームワーク」を中心に解説していきます。

Webの仕組み

フロントエンド

WebサイトやWebサービスでユーザが実際に使用する側の、例えばインターネットブラウザでアクセスできるウェブページの見た目そのものを指します。

実際にその画面で見える部分を作っているのは「HTML」や「CSS」というようなコンピュータ言語です。

バックエンド

フロントエンドとしばしば一緒に使われる言葉が「バックエンド」です。

バックエンドは、ユーザが操作することのない部分、例えばサーバやデータベースなどを指す言葉です。

また、そのサーバやデータベースの設計や開発、運用などの業務を含めて「バックエンド」と呼称されます。

主に「Ruby」や「Python」がこの種類の言語に該当します。

データベース

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。 狭義には、データベース管理システム (Database Management System, DBMS) またはそれが扱う対象のことをいう。

引用元:Wikipedia

簡潔に述べると、一定の形で整理されたデータの集合体のことです。厳密に言うと、一定の形で「複数で共有、利用すること」と「検索や加工すること」を目的に整理されたデータの集合体を指します。

フレームワーク

フレームワーク」という言葉には、もともと枠組みの意味があります、開発を行う際に、頻繁に必要とされる基礎的な機能をまとめて提供してくれるものです。

フレームワークは、「フレームワークのルールに従って使うことで高度な知識や技術がなくても、うまくいくように考えられた道具」のことです。

その中でも、Webアプリを作成するのに必要なフレームワークWebフレームワークと言います。

まとめ

【本日のまとめ】

  • Webアプリは、簡単に言えばブラウザ場で使えるアプリのことを指す。インストールしなくても使えるので、ユーザは通信のデータ容量を節約できる。サーバはネイティブアプリよりもコストを落とすことができ、Webアプリよりもアップデートしやすい。

  • Webアプリを開発する上で特に必要な知識は、Webの仕組みフレームワークの2つ。

  • Webの仕組みには、フロントエンドバックエンドデータベースがある。

  • フレームワークは、「フレームワークのルールに従って使うことで、高度な知識や技術がなくても、うまくいくように考えられた道具」のこと。

PythonのWebフレームワークとは?特徴や種類を簡単に解説

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます。Shotaです。今日も早速、Pythonに関する記事を書いていきます。

今日は「PythonのWebフレームワーク」について簡単に説明します。

【目次】

Pythonとは?

Python」はプログラミング言語の一つです。機械学習やWebアプリの設計など、汎用的なプログラミング言語です。

近年、AIに使うためPythonが注目されています。2010年に始まった「第三次AIブーム」んみよって、AIやIoTの開発に着手する企業も増加しています。これによって、AI開発に使えるPythonの需要も高まってきています。

Pythonの特徴

Pythonの特徴としては、まず文法がシンプルで読み書きしやすいということが挙げられます。それだけではありません。開発できる分野が幅広いのもPythonの強みの一つです。有名企業のWebアプリ、Webサービス開発にはPythonが使われていることがあります。

その他にも、統計処理、画像処理、音声認識など豊富なライブラリが公開されています。その充実したライブラリのおかげもあって、機械学習ディープラーニングでよく使われています。

Webフレームワークとは?

Webフレームワークとは、Webアプリケーションの開発を効率化するための機能が詰まったツールのことです。Webフレームワークを導入することで、プログラマーが手で各コード量を少なくして作業する速度を向上させることができます。

ただ、フレームワークだけですべてのソースコードを記述するということは殆どありません。一部をフレームワークで補い、残りはエンジニア自身がコーディングしていきます。

代表的なWebフレームワーク

Django

Djangoは様々な用途で使えるフレームワークです。定番のフレームワークであり情報も多いです。PythonのWebフレームワークの中で最も人気が高いです。Djangoはプログラミングで使う機能が一通り揃っています。

ちなみに「Pinterest」や「YouTube」もDjangoで開発されています。

Djangoは多様なサービスやアプリの開発に対応していますが、カスタマイズしにくいのが短所としてあげられます。

大規模な開発を行うのであれば、Djangoを使うのがおすすめです。

Flask

Flaskは小規模なウェブアプリケーションの構築に適しているWebフレームワークです。軽量なWebフレームワークの中では最も人気があります。

動作が軽量なため比較的簡単に扱えるのがメリットです。小規模なサイトやアプリであれば短い期間で作れます。ところが、軽量なので大規模な開発には向いていません。

まとめ

【本日のまとめ】

  • Python」はプログラミング言語の一つで、機械学習プログラミング言語など数多くの場面で使用されている
  • Pythonは、「文法がシンプルで読み書きしやすい」、「豊富なライブラリがあって多種多様な開発に適応できる」というような特徴を持つ。
  • PythonのWebフレームワークとして、DjangoとFlaskがある。両者もWebアプリケーションの開発に適している。大規模な開発を行いたいならDjango。小規模に開発したいならFlask。

今日の記事はここまでです。最後まで読んでくださり本当にありがとうございました。

プログラミング勉強で大事なこと 3つ

f:id:ShotaNukumizu_1000:20210603061116p:plain

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

今日はプログラミング勉強で大事なことを3つ紹介します。

プログラミングの勉強を始めた時、何をすればいいのかわからず戸惑っていた人も少なからずいたと思います。私も全くの未経験からプログラミングを勉強したので、わからないことがたくさんあってGoogle検索を何回も何回もやっていました。私はプログラミング勉強を初めて3ヶ月が経過しますが、プログラミング勉強で「これは大事だな」と思った3つのことを紹介していきます。

では早速、本題に入っていきましょう。

【目次】

①高い集中力・強いメンタル

プログラマーの主な仕事は椅子に座ってパソコンに向かい、コードを書き続けることです。長時間イスに座って作業できるぐらいの集中力は必要です。椅子に座って作業することは誰にでもできる作業のように思えますが、実際にやってみると集中力が途切れて作業がなかなか進捗しません。

それだけではなく、独学を始めた頃はたくさんのエラーに遭遇したり、思い通りに行かなかったりすることがよくあると思います。それらにも打ちのめされないメンタルもプログラミングの勉強に必要な要素の一つです。

自分で集中力を高く維持できる方法や、強いメンタルを作る方法をプログラミング独学中に身に付けておきましょう。

ググる

先程も述べましたが、プログラミングの独学を進めていく中で予想できないエラーが発生したり、自分の知識では対応できなかったりすることはしょっちゅうあります。こういうときはググる必要があります。

自分でわからないことや疑問に感じたことを見つけたときに、すぐにググることは大事です。私もプログラミング学習にはGoogle検索が非常に役に立ちました。

特に発生したエラーの対処や、プログラミング独特の専門用語はググれば出てきます。Google検索を駆使してプログラミング学習をどんどん進めていきましょう。

③論理的思考力

プログラミングする際に、作業内容とプログラムの工程を客観的に分析することは重要です。私の場合はプログラミングを作りたい時はを必ず箇条書きで整理します。

その分析結果をプログラミングで表現する際には、「客観的に物事を見る力」や「問題解決能力」「論理力」が必要不可欠です。

まとめ

【本日のまとめ】

《プログラミング勉強に必要な3つのこと》

  • 高い集中力・メンタル:自分で集中力を高く維持できる方法やちよいメンタルを作る方法をつくる。
  • ググる力:エラーへの対処法やわからない専門用語はGoogle検索をフル活用する。
  • 論理的思考力:プログラミングする際には作業内容とプログラムの工程を客観的に分析することが重要。

【毎週日曜投稿】本の要約・考察第10回 ~『GAFA 四騎士が創り変えた世界』~

おはようございます!Shotaです。本ブログで書籍を解説するのも本日で10回となりました・

今日は日曜日ということで、有名書籍の解説を始めていきます。今日紹介する本は、12万部超えのベストセラー『GAFA 四騎士が創り変えた世界』です。

この本はめちゃくちゃ面白いです。文章が読みやすく、かつ具体的なアクションプランに落とし込んでいるので次に私たちがどうすればいいのかという指針が的確に書かれているのが推しポイントです。

 

さすがにほんの全部を紹介することはできないので、今回のブログでは特に印象に残った内容をピックアップして伝えていきます。

 

[スコット・ギャロウェイ, 渡会 圭子]のthe four GAFA 四騎士が創り変えた世界

 

 

【目次】

 

はじめに――GAFAとは何か

テクノロジー業界の四強と言えば、誰もがGoogleAppleFacebookAmazonを思い浮かべるでしょう。これらの巨大企業は過去20年にわたって、歴史上かつてないほどの喜びや人間同士のつながり、あるいは経済的な繁栄や発明を私たちにもたらしてくれました。

これら四強企業は「GAFA」と呼ばれ、何十億の私たちの日常生活の基盤となっています。本書ではこの四強企業を「四騎士」という言葉で表現しています。

四騎士はビジネスや社会、地球に極めて多大な影響を与えています。四騎士はどのように生まれてきたのでしょうか?それを知ることこそが、今後のデジタル時代のビジネスと価値の創造を理解するカギとなります。

今回の記事では、その強みをベースに作られた「神話」を指摘します。そしてこれらの企業が成長と利益のために人間の本能をどのように利用しているかを説明します。

 

四騎士が共有する「覇権の8遺伝子」

 もうタイトルで強大なインパクトがありますね。ここでは、四騎士に共通する8つの要素が列挙されております。全部を列挙することはできないので、その中でも特に印象に残った4つの要素を書き出します。

 

商品の差別化

かつて小売業の世界で株主が価値を築くための大きな強みは、場所そのものでした。人々が近所よりも遠くの店に出かける機会はそこまでありませんでした。鉄道が発達して、消費者は大量生産されて価格が下がった様々な製品を運ぶ機会を得ました。そこから強力なブランドが生まれたのです。

 

ビジョンへの投資

四騎士の高い競争力の第二の要素は、安い資本を収集する力です。それには理解社水ビジョンが必要です。例えば、Googleのビジョンは「地球上の情報を整理する」です。Facebookのビジョンは「世界をつなぐ」です。これらはシンプルで説得力があり、株を買いたくなりますよね。

 

好感度

ビジネスの世界に規制はつきものです。企業の成長には、政府、独自の監視集団、そしてメディアが大きな影響を与えています。そのため、大きく成功するためには企業が良き存在、よき市民であり、国や国民、従業員、製品を調達するサプライチェーンに関わる人々に配慮しているとみなされる必要があります。

「イメージ」はとても重要です。外からどう見えるかが会社の現実そのものです。そうなると好感度が高まり、可愛げのある存在になることが重要です。

企業の好感度が低いと、筋の通らない理由で反プライバシー保護の取り締まり対象に選ばれやすくなり、素早く行政介入が行われてしまいます。

四騎士は誰にとっても親しみやすいイメージがあります。

 

地の利

 場所は重要です。四騎士がある企業は、ほぼ例外なく世界的な技術系あるいは工学系の大学に自転車で通学できる距離にあります。優秀な人材を集めるためには、優秀な人材が集う場所(例えば、世界のエリート大学)の付近に企業の本部をおかなければなりません。

土地の力を利用することは意外と重要な要素の一つと言っても過言ではありません。

 

GAFA「以後」の世界で生きるための武器

このチャプターではGAFAが世界を牛耳っている時代での具体的なアクションプランを説明します。全部を紹介することはできないので、特に印象に残った2つの要素を書き出します。

 

何かを成し遂げた経験を作る 

 まずは、何でもいいので「何かを成し遂げた経験」すなわち「業績」を一つ作りましょう。何かを成し遂げた経験というのは、何度でも繰り返せる習慣です。

 何かを成し遂げた経験を作るためには、まず競争に参加する必要があります。時には失敗の屈辱に耐えなければなりません。それでこそ何かを成し遂げられます。競争には勇敢さと行動する勇気が必要です。

業績を何でもいいので一つ作りましょう。私の場合はPythonのFlaskを使って簡単なウェブアプリケーションを作ったこと」です。(リリースはまだしていない)

 

平均に回帰する

これだけ説明しても全く意味がわからないと思います。言い換えれば、「大勝利を収めても驕ることなく、しばらくリスクを避けた安全策を取れ」ということです。

例えば、あなたが経営している会社が一部上場したことを想定しましょう。その際に出た利益を海外旅行やパーティなどで浪費するな、ということです。

一方で、仮に打ちのめされたとしても、あなたはその時世間が思っているほど間抜けではないということもわかってほしいです。打ちのめされた時、大事なのは再チャレンジすることです。

一番言いたいことは、しばらくはリスクを避けた行動を取るということです。

 

まとめ 

 【本日のまとめ】

《世界を作り上げた四騎士》

  • 商品の差別化
  • ビジョンへの投資
  • 好感度
  • 地の利 

 

GAFA以後の世界で生きるための武器》

  • 「何かを成し遂げた経験」を作る
  •  平均に回帰する

 

 

【参考図書】

the four GAFA 四騎士が創り変えた世界 | スコット・ギャロウェイ, 渡会 圭子 | 工学 | Kindleストア | Amazon

管理人の休日のルーティン

f:id:ShotaNukumizu_1000:20210603061116p:plain

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

本日は「管理人の一日のルーティン」について詳細に説明していきます。

【目次】

管理人の休日のルーティン

5:40 起床

だいたいこの時間帯に起きます。私は賃貸暮らしなので他の住居者のことを考え、音を使った目覚ましではなく光を使った目覚まし時計で起きるように心がけています。

5:40~5:55 水飲み、10分マインドフルネス瞑想

まず朝起きてすぐにすることは水を飲むことですね。コップ一杯分の水道水を注いでそれを飲む、というだけの単純作業です。水を飲んだあとは音楽を聞きながら10分間瞑想します。YouTubeでピアノの音楽を聞きながら瞑想しています。10分間の瞑想は半年くらい継続しています。

6:00~7:20 ブログ執筆、Twitter確認

瞑想が終わったら、Hatenaブログでブログの記事を書き始めます。最初にタイトルを決めて、そのタイトルに沿った内容を1500~2000字程度で書き進めていきます。時々10分くらい書く記事について悩むことがしょっちゅうありますね。最初に書くときは、何も考えずに自分のアイデアや書きたいことをとにかく書いている感じですね。記事の推敲はそこからです。必要に応じて書籍やネット記事を明後日そこから引用することがあります。

余談ですが、ブログやプログラミング学習をすすめることでタイピング速度が劇的に向上しました。(笑)

7:30~8:00 YouTubeで情報収集

この30分間で、YouTubeで情報収集をします。私がよく見ているYouTubeチャンネルを次に示します。

  • 両学長:お金に関する知識やノウハウ、マインドセットをわかりやすく配信してくれます。
  • マコなり社長:明日から自分の人生に活かせる情報を提供してくれます。この人が商品を紹介すると、その商品はすぐに売り切れになります。
  • サラタメさん【サラリーマンYouTuber】:巷で売られている書籍を面白おかしく説明してくれます。

動画は2倍速で見ています。動画で得た内容や動画の感想をそのままコメント欄に書いたり、Wordファイルやパワポで図解にしてアウトプットしたりします。

8:00~11:00 プログラミング勉強

この時間は動画教材やネット記事を参考にプログラミング学習に集中します。最近はWeb開発(FlaskやDjango)について勉強しています。ネット記事や動画で紹介されたプログラミングを写経したあと、別のファイルで自分が書いたプログラムをフローチャートの形、あるいは箇条書きで表現します。私は勉強で悩むのは個人的に嫌いなので、とにかくキーボードを叩いて勉強することを心がけています。

テキストエディタAtom、あるいはVSCodeを使ってコーディングをしていきます。とにかく、ネット記事に出ていることや動画教材で示されていることはできるようにしていきます。

余談ですが、プログラミングを勉強している最中はノイキャンイヤホンをつけて勉強に没頭できるようにします。

11:00~13:00 昼休憩

この時間帯に昼食、昼寝、アニメ鑑賞をします。

昼食は野菜中心で量は少なめを心がけています。(最近はセブンイレブンで買ったサラダが中心)午後でも午前と同じように集中して勉強できるようにするため、30分間昼寝をします。

13:00~16:30 プログラミング勉強

ここで再度Web開発のプログラミングについてより深く勉強します。クラウドソーシングで受注した案件に取り組むこともあります。

ポートフォリオの作成、午前中に書いたソースコードの復習やリライトを中心に行います。この時間帯に再度自分の苦手な文法の復習をすることもあります。

16:30~17:10 歩行瞑想

休憩をここで一旦取ります。スマホとイヤホンを用意して自宅周辺を散歩するという単純作業を行います。

音楽と「歩くこと」にすべての意識を集中していきます。これを行うことで、つまらない不安や悩み、疲労感から解放されます。

17:10~18:00 ブログ執筆、Twitter確認

この時間帯にブログを執筆したり、Twitterを確認したりします。TwitterはSocialDogを使ってツイートすることがあります。Twitterではプログラミングに関する知識や考え方を中心に図や画像を使ってツイートします。SocialDogを使うことで、「ツイートを忘れる」ことを未然に防ぐことができます。

Twitterに投稿する図や画像は、パワポで作った図解をpng形式に保存して使っています。

18:00~19:00 夕食

この時間帯はとにかく自分の好きなものを我慢しない程度で食べるようにしています。この時間帯が一番楽しみと言っても過言ではありませんね。夕食を食べながらYouTubeやアニメを見ることもありますね。(映画鑑賞の感覚で)

19:00~20:00 読書

Kindlewhitepaperで読書をします。読んだ本はブログの執筆のネタにしたり、明日からの行動のアクションプランにしたりして積極的にアウトプットします。最近は『影響力の武器』を読んで、人間の心理行動を勉強しています。 ベッドの上に寝転んで読書しています。

20:00~20:30 YouTube視聴

ここで再度情報収集をします。付箋に気づきや動画の内容の要旨をじゃんじゃん書き込みます。余った時間はタイピング練習します。

20:30~21:00 入浴

ちょうど寝る90分前に入浴をします。浴槽につかって読書をすることもあります。

21:00~22:30 自由時間

この時間帯に洗濯機を回したり、読書をしたり、音楽を聞いたり…と自由な時間を過ごします。

22:30 就寝

この時間にはすべての電気を消して眠りにつきます。これで私の休日は終了します。(コロナ禍で自宅にいる時間が増えた)