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

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

凡人で終わる人の習慣5選

f:id:ShotaNukumizu_1000:20210906130640p:plain

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

今日はいつもと趣向を変えて、プログラミングの技術的な内容とは関係ない記事を投稿します。

ただし、今回の記事は人より突き抜けた存在になりたい人だけ見てください。人生の価値観は人それぞれで「絶対に正しいこと」はありません。それぞれの価値観で生きるのが一番大事です。

もし、この記事を読んでいるあなたが

  • 現状を変えたい!
  • 大勢の中のひとりは嫌だ!
  • 他の人よりも特別な存在になりたい!


このように考えるのならば、自分の毎日の習慣を見直すきっかけになれるはずです。

では早速、本題に入りましょう!



その1:自己満足のSNSへの投稿・閲覧

f:id:ShotaNukumizu_1000:20210906130846p:plain

SNS現代社会における合法的な麻薬そのものです。毎日でも、いや毎時間でも見ていないと落ち着かなくなってしまいます。SNSで他人の投稿に「いいね」を押したところで何の価値もありません。

投稿は閲覧よりもさらに依存度が高いです。SNSへの投稿は達成感を得られるからです。

情報収集や発信等でSNSを使っているなら問題はないです。しかし、フォローするアカウントは絞ってください。

もし投稿するのであれば、自分のアカウントや投稿内容を真剣に見ている人に役立つ内容を考えて投稿しましょう。

余談ですが、明確な目的もなくスマホをダラダラとみるのもやめたほうがいいです。


その2:テレビを見ること

テレビは私達から時間を無尽蔵に奪っていきます。テレビを持っているなら今すぐメルカリに売ることをおすすめします。

世間で起きていることを全部知る必要はありますか?世間で起こっていることはほとんど私達の人生に無関係です。自分に大きく関係するようなニュースは、スマホやパソコンで得られる情報だけで十分です。

しかし、人によってはコミュニケーション能力や雑談のネタが無くなるのは良くないことがあると考えています。そのような場合は自分から情報を取りに行くべきです。私の場合は雑談のネタを増やすこと、あるいは世の中で何が流行っているのかを知るため時折Amazon Primeでアニメを見ることがあります。

テレビで受動的に情報を入れるのは、本当に時間の無駄でやめたほうがいいです。私はこれを2年半以上継続していますが、生活に支障をきたしたことはありません。


その3:無駄な飲み会に行くこと

無駄な飲み会は金銭的な面だけではなく、時間的な面でも無駄だと思います。

良質な人間関係を作るためにアルコールは必要ではありません。お酒がなくても、良質な人間関係を作り出せます。

普段のメンバーで集まって週に何回目的もなく集まって飲んで、愚痴をこぼしている人は今すぐやめたほうがいいです。馴れ合って傷をなめあっているだけなので。

飲み会に行くことは本当に無駄なのでやめたほうがいいと思います。


その4:他人のせいにする・他人を批判する

f:id:ShotaNukumizu_1000:20210906131212p:plain

  • 何かトラブルがあったら「これは〇〇さんのせいで自分には関係ない!」と思う

  • 有名人の成功エピソードを見て「どうせこの人は悪いことをしている!」と考える

  • SNS上で有名人やインフルエンサーに悪口を言ったり批判したりする


今挙げた3つのことのうち、一つでも当てはまっている人は今すぐそのような行為をやめたほうが賢明です。


その5:勉強しない

f:id:ShotaNukumizu_1000:20210822094616p:plain

総務省統計局によると、社会人の一日の勉強時間はなんと6分だそうです。勉強している人そうではない人を混ぜた平均時間とはいえ、「1日6分」は非常に驚きです。

これを逆に考えれば、平日で1~2時間勉強時間を確保している人はそれだけで他の人よりも突き抜けた存在になれるということになります。

まずは30分でもいいから自分で勉強する時間を確保しましょう。

今おすすめの勉強内容は、プログラミング、英語、Webデザイン、動画編集の4つです。


まとめ

今日は個人的な意見として、「凡人で終わる人の習慣」を5つ取り上げました。

今回の記事をきっかけに、自分自身の悪い習慣を見直すきっかけになれば幸いです。

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

【参考サイト】

wtar00.seesaa.net

newspicks.com

tech-camp.in

【毎週日曜更新】本の要約・考察第24回~『イシューからはじめよ』~

f:id:ShotaNukumizu_1000:20210818054903p:plain

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

今日は日曜日なので、本の要約・考察記事を書いていきます。

今日取り上げる本は『イシューからはじめよ』です。



イシュードリブン

問題は解くものだと考えがちですが、まず最初にやるべきことは本当に解くべき問題、すなわち「イシュー」を見極めることです。「最終的に何がやりたいかを明確にせよ」と言われたら、きちんと物事を考える人であれば不快になるでしょう。したがって、「やっているうちに見えてくる」というように成り行き任せが横行しますが、これこそが無駄が多く生産性の低いアプローチです。

「これは何に対して答えを出すためのものか」というイシューを明確にしてから問題に取り組まないと、あとから問題が必ず発生して目的意識がブレ多くのムダが出てしまいます。

では、イシューを見極めるためにはどうすればいいのでしょうか?そのためには、「実際にインパクトがあるか」「説得力ある形で検証できるか」「想定する受け手にそれを伝えられるか」というような判断が必要です。ここには、ある程度の経験と「見立てる力」が必要になります。

このような場合は何人かの頼りになる相談相手に確認するのが手っ取り早いでしょう。実際、このような「知恵袋的な人」を発見できるかどうかが、突き抜けた人塗装ではない人との差を生み出していくのです。


よいイシューの3つの条件

ここからは、「よいイシュー」の3つの条件について考えていきましょう。


本質的な選択肢である

まず最初の条件は、「本質的な選択肢である」ことです。

「右か左なのか」というその結論によって大きく意味合いが変わるものではなければイシューとは言えません。言い換えれば、「本質的な選択肢=カギとなる質問」なのです。選択肢があり、どちらになるのかによってそこから先のビジネスに大きな影響が出るのがよいイシューになります。

例えば、ある食品メーカーにおいて「ある商品Xが売れない」理由を検討する場合を考えてみましょう。多くの場合、最初に出てくる大きなイシューの一つは

  • 「Xに商品力がない」
  • 「Xに商品力そのものはあるが、販売方法が良くない」


これらのうちどれかを考えると思います。

「それはそうだ」と思われるでしょうが、現実にはこのようなレベルでのイシューの見極めができていないケースはたくさんあります。「商品はいいのに売り方が悪い」「店舗開拓に問題があるに決まっている」などのように、思い込みで突き進んでしまうのです。

そうならないためにも、まずは大きな分岐点を見極めることが大事です。

イシュー、つまり答えを出すべき問題は、同じ事業やテーマを扱っていても、会社ごとに、部署ごとに、日ごとに、ミーティングごとに、あるいは経験している相手ごとに異なります。イシューは「今、答えを出さなければならないこと」なので、実際に担当している部門や立場によっても大きく変わっていきます。ある人にとってイシューであっても、他の人にとってはイシューではないということはザラにあります。

「これがイシューだ」と考えたら、そのイシューの主語を確認してみましょう。「誰にとって」という主語を変えても成立するものは、真鯛シュートしての検討が甘い可能性が高いです。


深い仮説がある

次の条件は、「深い仮説がある」ことです。仮説をよいものにするためには、次のような定石が必要です。

  • 常識を否定する
  • 「新しい構造」で説明する―共通性、関係性、グルーピング、ルールの発見


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


常識を否定する

仮説を深める簡単な方法は、「一般的に信じられていることを並べて、その中で否定できる、あるいは異なる視点で説明できるものがないかを考える」ことです。

古典的な例で例えると、日常的に生活している限り「太陽が地球の周りを動いている」ようにしか見えませんが、「実は地球が太陽の周りを動いている」ことを証明した地動説がまさにこれです。

一般的に信じられている信念や前提を突き崩せないかを常に考えておきましょう。


「新しい構造」で説明する

深い仮説を持つための2つ目の定石は「新しい構造」で世の中を説明できないかを考えることです。

人が何かを理解するというのは、「2つ以上の異なる既知の情報に新しいつながりを発見する」ことを意味します。このような構造的な理解には4つのパターンがあります。

  • 共通性の発見

    2つ以上のものに、何らかの共通的なことが見えると、人は急に何かを理解したと感じるようになる。

  • 関係性の発見

    完全な全体像を理解できなくても、複数の現象間に関係性があれば人は何かを理解したと感じるようになる。

  • グルーピングの発見

    検討する対象を何らかのグループに分ける方法を発見することで、これまで一つに見えていたもの、あるいは無数に見えていたものが判断できる数の塊として見ることができるようになり、洞察力が高まる。

  • ルールの発見

    2つ以上のものに何らかの普遍的な仕組みや数量的関係性があることがわかると、人は理解したと感じるようになる。


答えを出せる

よいイシューの3つ目の条件は、「本当に既存の手法、あるいは現在着手しうるアプローチで答えを導出できるかどうか」を見極めることです。

「本質的な選択肢」であり、十分に「深い仮説がある」問題でありながら、よいイシューではないというものが存在します。それは、明確に答えを出せない問題です。

一見ごくありふれた問題に見えても、それを解く方法が未だにはっきりしない、あるいは着手しないほうがいい問題がたくさんあるというのは重大な事実です。気軽に取り組んだのはいいものの、検証方法が崩壊した場合は時間の面でも手間の面でも取り返しのつかないダメージを負いかねません。




イシューの見極めにおける理想は、誰もが「答えを出すべきだ」と感じていても「手のつけようがない」と思っている問題に対し、「自分の手法ならば答えを出せる」と感じる「死角的なイシュー」を発見することです。


イシュー特定のための情報収集

前章では「よいイシューとはなにか」と「強引にでも仮説をたてることの重要性」がわかったところで、次にそれを発見するための材料をどのように仕入れるかを考えていきます。

手がかりを得るためには、取り組んでいるテーマや対象について「考えるための材料をざっくりと得る」ことが必要です。言い換えれば、時間をあまりかけすぎずに大枠の情報を収集して対象の実態についての肌感覚を持つことを意味します。

大学の研究などでは、この作業に数ヶ月を費やすケースもあるでしょうが、ビジネスに於いてはこれは非効率であると言わざるを得ません。イシューを明確化し、肝となる検証をスピーディーに進めて、仮説を刷新してこそ本当に生産性の高い毎日が実現します。


一次情報に触れる

まず最初のコツは、「一次情報」にふれることです。一次情報とは、誰のフィルターも通っていない情報のことです。プログラミングの分野においては、ある言語の公式ドキュメントが挙げられます。

あまりにも基本的なことに聞こえるかもしれませんが、これらを呼吸するように実践できている人は少ないです。

いかに優れた情報や表現とは言っても、二次的な情報は何らかの多面的かつ複合的な対象の一つの面を引き出したものに過ぎません。そこからこぼれ落ちた現実は、それを直接見ない人には認知できません。

したがって、数日間は集中的に一次情報に触れることをおすすめします。

一次情報に触れた場合は、現場にいる人の体験から生まれた知恵を聞き出します。読み物をどれだけ読んでもわからない勘所を聞き、さらにその人がどのような問題意識を持っているかを聞きます。ここで、お金では変えない知恵や知識を一気に吸収しておきたいです。


基本情報をスキャンする

情報収集の第2のコツは、一次情報から得た感覚を持ちつつ、世の中の常識や基本的なことをある程度の塊としてダブりも漏れもなく、そして素早くスキャンすることです。ここでは、自分の意見だけで「決め打ち」をしないことが重要です。

書籍ではノウハウ的なものは避け、基本的・原則的なものを見ます。歴史的な視点を得るためには、やや古めのものと新しいものを同時に見るというのがおすすめです。


集めすぎない・知りすぎない

情報収集の第3のコツは、意図的にざっくりやる、つまり「やりすぎない」ということです。速読術やライフハック的な信念とは大きく異なりますが、情報収集の効率は必ずどこかで頭打ちになり、情報が溢れすぎると知恵が出なくなるものです。これを「集めすぎ」「知りすぎ」と呼びます。

人間がある領域について感心を持ち、新しい情報を最初に得ていく際に、始めはいろいろな引っ掛かりがあり、疑念を持つものです。それを人に訪ねたり、解明したりしていくたびに自分なりの理解が深まり、新しい視点や知恵が湧いていきます。

これが、「知りすぎたバカ」にならない範囲で情報収集を止めるこそが、イシュー出しに向けた情報集めの極意です。


まとめ

今日の記事では40万部の売上を記録したベストセラー『イシューからはじめよ』について簡単に解説しました。

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

【参考図書】

プログラミング学習で「メモ」を作ると学習効率が上がる

f:id:ShotaNukumizu_1000:20210718103738p:plain

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

プログラミング初学者の多くは、効率的に勉強する方法を知りたいと思っているのではないでしょうか?

そんな人におすすめする勉強法として、「『メモ』を作る」ことが挙げられます。今日の記事では、プログラミング学習における「メモの作り方」や、「作るメリット」についてお話していきます。



メモを作る前に

メモを作る前に、プログラマーにとって必要不可欠なスキルを理解しておきましょう。

必要なスキルは大きく分けると2つに分類できます。

  • インプットする能力
  • アウトプットする能力


この2つです。両方の能力が揃ってはじめて様々なものを作り出せます。


インプットする能力

ここで言うインプット能力は、欲しい情報に素早くアクセスできることです。具体的に言えば

  • コードの情報を分析する手法を知っていること
  • 適切な情報を選んで検索できること
  • 公式ドキュメントの内容を理解できること


この3つが挙げられます。

インプットする能力がないと、エラーで躓いたり、一般的な実装方法がわからなかったりして長時間作業が進まないことがよく起こってしまいます。

プログラマーは常に情報を追いかける仕事なので、自分自身で答えを探し続ける能力は必要です。


アウトプットする能力

アウトプットする能力は、実際に正しくアプリケーションを作れることです。

言い換えれば、欲しい機能を実際にコードを書いて実現することです。

具体的に言えば、

  • 実装のパターンを知っていること
  • スタンダードな実装方法を知っていること
  • 読みやすくエラーの出にくいコードを書けること
  • 顧客が想定している仕様どおりに実装できるようコミュニケーションを取れること


これらが主に挙げられます。


プログラミング学習でメモを作るメリット

プログラミング学習でメモを作るメリットは、次の2つがあります。

  • より知識を深く定着させられる
  • 知識を整理しながら体系化できる。復習という二度手間を省ける


メモを作ることは、復習のような2度手間を省けるので、学習時間を少なくすることができます。


まとめ

メモを作ることは、プログラミング学習を高速化するために必要なことです。

自分自身の学習のメモが溜まってきたら、今度はエンジニアの知識共有サイト「Qiita」で、他の人の助けになれるように記事を書いてアウトプットしましょう。

そうすれば、より一段階知識を深められると思います。

今回の記事をきっかけに、プログラミング学習の質を向上させるきっかけになれば幸いです。

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

【参考サイト】

www.sejuku.net

【Kotlin入門】②プログラムの基本構造と文字列表示

f:id:ShotaNukumizu_1000:20210627142712p:plain

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

今回の記事では主に次のようなことを説明します。

  • Kotlinプログラムの基本構造
  • Kotlinで「Hello world」と表示する方法


▼前回の記事はコチラ

shotanukumizu-1000.hatenablog.com



プログラムの基本構造

プログラムではWEBサービス人工知能スマホアプリやゲームなど色んなものを作れます。そう聞くと、一見プログラムでは複雑なことをしているように思えるかもしれません。

しかし、プログラムの動きはシンプルです。次の3つに分けることができます。

  • 順次進行
  • 条件分岐
  • 繰り返し


この3つの基本構造を使えば、複雑なプログラムを作ることができます。そして、この3つはどのプログラミング言語にもあります。


順次進行

順次進行とは、プログラムが書かれている上から順に処理をしていくというプログラムの構造です。プログラムの最も基本的な動きになります。

例えば、ソースコードが「A」「B」とPCの画面上に表示させるプログラムだったとします。このプログラムを実行すると、上から順番に「A」「B」と表示されます。これが順次進行です。


条件分岐

条件分岐とは、特定の条件に応じて処理を変えるというプログラムの構造です。

例えば、ある変数の値が10以上であれば「X」と画面上に表示させて、それ以外であれば何も表示させないという処理ができます。


繰り返し

繰り返しとは、決まった回数や条件を満たすまで同じ処理を繰り返すプログラム構造です。反復処理とも呼びます。

例えば、文字列「X」を20回表示させたい場合や配列型のデータにある要素を順番に取り出したい場合に使います。


Kotlinで文字列の表示

では、実際にKotlinで文字列を表示してみましょう。デスクトップに適当な名前をつけましょう。管理人はkotlin-sampleにしました。

作ったファイルの中に新しくファイルを作りましょう。ファイル名は何でもいいですが、拡張子.ktを忘れないようにしてください。さもないとKotlinファイルとして機能しません。

完成形は以下の画像になると思います。

f:id:ShotaNukumizu_1000:20210904100053p:plain


それでは、Kotlinのコードを書いていきましょう!

Kotlinでは、関数からプログラムが開始します。

まずは、次のコードをコピペしてください。

fun main() {
    println("Hello world")
}

関数の書き方は次のとおりです。

funと書いて、半角スペースを開けてmainと書きます。そして、丸括弧を書き中括弧の中に処理を書きます。

Kotlinではmain関数からプログラムが始まります。

実際にこのコードを実行してみましょう。

ちなみに実行方法は書いたプログラム上で右クリックして「Run Code」をクリックします。

すると、画面の下に次のような文字列が表示されると思います。

[Running] cd "c:\Users\....." && kotlinc-jvm sample.kt -include-runtime -d sample.jar && java -jar sample.jar
Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
Hello world

[Done] exited with code=0 in 6.732 seconds

あとはこれに次のコードを付け加えてみましょう。

println("Hello Kotlin")

sample.ktの全体像は次の通りです。

fun main() {
    println("Hello world")

    println("Hello Kotlin")
}

実行すると、以下のように表示されると思います。

[Running] cd "c:\Users....." && kotlinc-jvm sample.kt -include-runtime -d sample.jar && java -jar sample.jar
Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
Hello world
Hello Kotlin

[Done] exited with code=0 in 5.473 seconds

上から順番に処理されていることがわかりますね。


まとめ

今日の記事では主に次のようなことについて説明しました。

  • Kotlinプログラムの基本構造
  • Kotlinで「Hello world」と表示する方法


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

【参考サイト】

kino-code.com

【Kotlin入門】①Kotlinの環境構築 for Windows

f:id:ShotaNukumizu_1000:20210729065304p:plain

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

WindowsでKotlinの環境構築をやってみたいけどそうすればいいのかわからない」

これからKotlinの環境構築を始めようとしている人の中には、このような悩みを抱えている人も多いのではないでしょうか?

環境構築はプログラミング学習の中では一番重要で、これをミスってしまうと学習が不可能になってしまいます。

そこで、今日はWindowsでKotlinの環境構築をするための手順を徹底解説します。



Kotlinの環境構築


JDK(Java Development Kit)のインストール

KotlinはJVM上で動作するのでJDKの導入が必須です。したがって、まずはJDKの導入から行っていきましょう。

まずは以下のサイトにアクセスして、画像に表示されているサイトを表示してください。

f:id:ShotaNukumizu_1000:20210904085930p:plain

システムの種類にビット数が書かれていると思います。(ちなみに管理人のWindowsのビット数は64です)

このビット数と同じJDKをインストールしましょう。

jdk-14.0.1_windows-x64_bin.exeをクリックし、ダウンロードします。ダウンロードできたらまた再度クリックすると、インストールが始まります。

インストールするフォルダはデフォルトのままにしておきましょう。インストールはこれで終了です。

続いて、Javaコンパイル(コードを機械語に翻訳)ができるようにするために環境変数を設定します。


環境変数の設定―システム環境変数

「Win」キーと「S」キーを同時に押して検索欄を開き、「システム環境変数」と入力して「システム環境変数の編集」をクリックしてください。(画像参照)

f:id:ShotaNukumizu_1000:20210904090624p:plain

環境変数」→「システム環境変数」の「新規」→「編集」の順番にクリックしていきます。

「変数名」にJAVA_HOME、「変数値」にC:\Program Files\Java\jdk-14.0.1を入力し「OK」とクリックします。


環境変数の設定―パス設定

「システム環境変数」内にある変数「Path」をダブルクリックしましょう。

「新規」をクリックし、%JAVA_HOME%\binを入力してOKをクリックします。

以上で環境変数の設定が終了しました。環境変数の設定を反映させるため、一度パソコンを再起動してください。

再起動後に「Win」キーと「R」キーを同時入力し、検索窓にcmdと入力します。

f:id:ShotaNukumizu_1000:20210904091409p:plain

java -versionと入力して、以下のように表示されれば環境変数の設定が完了です。

java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)


②Kotlinのインストール

次にKotlinをインストールしましょう。

まずは以下のサイトにアクセスしてください。

github.com

そして、kotlin-compiler-1.3.71.zipをダウンロードします。

展開先をC:\にして、展開ボタンをクリックします。


パス設定

Kotlinを実行できるようにするために、パスの設定をします。

再度検索窓を開いて、「システム環境変数の編集」をクリックします。

f:id:ShotaNukumizu_1000:20210904090624p:plain

システム環境変数内の変数Pathをダブルクリックし、「新規」をクリックしてC:\kotlinc\binと入力して「OK」をダブルクリックします。

以上でパスの設定が完了しました。

パスが正しく設定されているかどうか確認するため、コマンドプロンプトを開いてみましょう。

kotlin -versionと入力してください。次のように返ってくれば設定完了です。

Kotlin version 1.3.72-release-468 (JRE 16.0.2+7-67)


Visual Studio Code(VSCode)のインストール

次はVisual Studio Codeをインストールしていきます。

まずは以下のサイトにアクセスしてください。

azure.microsoft.com

「Download now」をクリックし、Windowsの「64bit」をクリックしてダウンロードしましょう。

ダウンロードが終了したら、VSCodeUserSetup-x64-1.42.1.exeをダブルクリックします。

設定はデフォルトのままにしておき、インストールを開始します。これでセットアップは終わりです。


Visual Studio Code拡張機能のインストール

VSCodeを起動すると、表示が英語になっているので日本語に変えます。画像に表示されている一番左のバーをアクティビティバーと呼びます。

f:id:ShotaNukumizu_1000:20210904092900p:plain

上記の画像にある資格のアイコンをクリックしましょう。ここで拡張機能をインストールできます。

主にインストールする拡張機能は次の通りです。

VSCodeを再起動すると設定が完了します。

これで環境構築が終了しました。


まとめ

今日はKotlin入門として、Windows用に環境構築の説明をしてみました。

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

【参考サイト】

kino-code.com

www.sejuku.net