Patchwork Dream

随時、記事の加筆・修正または再掲載します。

プログラミングのすゝめ

プログラミングは、できるか出来ないかはともかく、まずこういうものが作りたいみたいな頭の中でのイメージが出来てる方が良い。と、大学時代の教授が仰っていた。

あくまで手段としてプログラミングが存在していて、ハッカーのようにコードが書けるのがカッコ良いという、ギター弾けたらモテるみたいな不純な動機だけで上手くいった例を知らない。芸人の野田クリスタルは、ゲーム好きであるのと芸人であることから、自作ゲームをネタに披露し、ついにはクラウドファンディングで自作ゲームが公式にリリースされる展開にまで至った。

noda-party.com

──尖りを見せながらも芸人としてのキャリアを積み上げ、2020年の「R-1グランプリ」では自作のゲームを使ったネタで見事優勝されました。そもそもプログラミングに興味を持ったきっかけは、なんだったのでしょうか?

野田:
プログラミング自体に興味が湧いたわけではなくて「ゲームをつくりたい」という気持ちが最初ですね。ゲームをつくる手段を探したときにプログラミングが一番良いんじゃないかと思い、つくり方を調べていった感じです。

(省略)

──プログラミングを学ぶ中で「これ、分かんないな」となった場合は、どうされていたんですか?

野田:
当時の掲示板で質問攻めです。「ggrks(ググレカス)」と書かれても負けない覚悟を持って、戦っていました。むしろ「ggrks」と言われてからが勝負です! 作りたいゲームを思いついたら、作らないわけにはいかないですから。

──ちなみに、プログラミングを始めてから野田さんの生活に変化はありましたか?

野田:
ありましたね。具体的にいうとプログラミングを進めるやり方は2つあるんです。

「行き当たりばったりでつくるパターン」と「最初から全部決めてつくるパターン」です。プログラミングを通して「最初から全部決めてつくるパターン」の成功率は半端ないと気づきました。これまで、なんでやってこなかったんだと思うくらい。

それまでは何をやるにしても、基本行き当たりばったりだったんです。この気づきをきっかけに、計画的に何かを進めることが多くなったかもしれないですね。

toyokeizai.net

開発環境にはHot Soup Processorを使用しているとのことで、プログラミングに関する書籍として『野田クリスタルとあそぶ! PythonプログラミングBOOK』も出版されている。

野田さんが選んだプログラミング言語Hot Soup ProcessorHSP:ホットスーププロセッサー)。このHSPは初心者でも自作でゲームが簡単に作れる開発環境を提供しているのが特徴だ。通常、こうしたプログラミング言語を学ぼうとすれば、関連書籍などを1冊購入して勉強するという人が多いかもしれないが、野田さんの場合、のちのち読んでみたものの、結局、参考書のようなものはほとんど使わなかったという。

「自分では勉強したつもりはないんです。プログラミングを学びたいからゲームを作るのではなく、ゲームを作るためにプログラミングをする。とにかくゲームを作るために、どうすればいいのか。その一心で、プログラミングを学び始めたのです。最初はネットでHSPを検索にかけて調べることから始めました。そして、わからないところはネットの質問板でしつこく聞く。いわば、プログラミングをする中で、疑問点や不明点をどうやって解決できるのか。ゲームを作っていく段階ごとに自分で調べていったんです」

実際にプログラミングで使ったものはパソコン1台だけ。予算はゼロで1円もお金をかけていない。とはいえ、実際のプログラミング技術を習得するのは大変だった。

ttj.paiza.jp

政府も英語と共にプログラミングも小学校のカリキュラムに導入することを推進しているが、小学校で行うような単純なパッチ処理によるプログラミングのscratchから大学で講義を進めていたので、かなり先進的な教育だと思える。

www.mext.go.jp

読み物にはなるが、この『一太郎』製作者の女性の記事が興味深い。やはりMicrosoftAppleの台頭がインターネット界隈では絶大なる影響であることがわかる。

―――プログラミングをフリーランスにしても相場をわからない者が発注を仕掛ける

下記noteはベテランエンジニアの方がクラウドワークスで請負業務を受けたところ、相場の10分の1程の価格で見積もられ、結果、相場がわからない相手と折衝しても提示金額で引き受けられずにおじゃんになるという末路を語っている。

note.com

―――素人がAIに喰われるようになる世の中でのプログラミング

「今まで『食いっぱぐれない』と思っていた仕事ほどなくなる」ChatGPTに「こういうプログラムを、この言語で書いてください」と指示すれば、そのコードを返してくれるようになった。今後、新人エンジニアが育つ環境が一気に減るのを危惧します。

www.moneypost.jp

☟下記記事でも触れたが、ChatGPTの使用によって普段プログラムを書かない人間がマルウェアを開発する事例なども生じていて、これが事件化する事態となってしまっている。

angrybreakfast.hatenablog.com

 

システム開発

☟ITのマリーアントワネット

SIer/SE

ちなみに、SIerエスアイヤー、システムインテグレーター)は企業を示し、SE(システムエンジニア)は個人及び職業である

SIer の年収はけっこう高い。NRI の場合は 30 代半ばで 1200 万だという。アクセンチュアはもっと高い。NTT データでも 800〜900 万くらいはいくだろう。入社すれば年収が上がっていく年功序列の会社で、平均よりずいぶん高い年収をもらい、会社名を誇りに生きている SIer 社員よ。それでいいじゃないか。贅沢言うな。スキルなくても、年収 1000 万もらえるならいいじゃないか。SIer 社員として生きていくのに、スキルアップなんて必要ない。スキルなどなくても、標準化された手順に従ってプロジェクトをマネジメントしていけば、仕事は回るからだ。人間関係の調整だって立派な仕事だ。

realengineer.link

下記noteは元ホストでプログラミングほぼ未経験の方がエンジニアになった過程を綴った話である。案の定、転職サイトで「未経験歓迎・IT」で工事関係の仕事が出てくるのが草(サブコンなどの建築系企業は施工管理・保守のエンジニアを"SE"と表記して募集をかけることがある)。

ベンチャーのIT企業で働くベテランSEの人たちがプログラミングやそのスキルに無関心なのがまたリアル。ただ最終的にnote主はプログラミングを勉強して技術に興味を持ち、もっと技術的な側面で働ける企業へ転職することになったようだ。

プログラミング技術の専門的な内容ではなく、まったくの素人から読んでみても興味をそそられる内容でnote主と心情がリンクする。転職するマインド的な側面からも読んでいて面白い。

note.com

―――要件定義

qiita.com

要件定義という言葉はよく聞くが、IT系業務に携わらない身からするといまいちイメージが湧かない。
下記の記事では要件定義について、その工程についてがわかりやすく説明されている。

出典:【入門】要件定義
要件定義は、システム開発の初期段階で、開発するべきシステムの機能や要求を明確にする作業です。クライアントやユーザーの要望を具体的な形にまとめ、開発の方向性やゴールを設定する「設計図」を作成します。

zenn.dev

個人的にわかりやすいように建築業に結び付けると、たとえば東急不動産(デベ:ここではクライアント)が渋谷に新しい商業施設を開発(ここではシステム開発)するのに工事を清水建設(ゼネコン:ここではSIer)に発注。施設の躯体はゼネコンが作成するが細かい内装工事(水道・ガス・空調・電気設備など)はサブコン(ここではプログラマーやデザイナー)へ発注。という感じに近いだろう。SIerは施工管理及び現場監督的な立ち位置である。

プログラミング

大学時代はプログラミングを習って技術コースを選択してコードばかり書いていたが、いまいち面白さや使い方がわからなかった。「ギター弾けたらモテる」くらいの不純な動機でただ何となく「コードが書けるとカッコ良い」認識だけあり、特にプログラミングを使ってやりたいことがなかった。

フルタイムのプログラマーは、1 週間に何時間プログラミングできるものだろうか。自分は調子がいい時で週 20 時間、大体において 10 〜 15 時間といった感じで、40 時間近くになるとかなりクタクタになってしまう。ここでいう「プログラミング」とは実際にコンソールに向かい入力していることを指している。もちろん時々手を止めて考えることもあるだろうが、プログラミング書籍や仕様書を読んだり、会議に出たりする時間は除いている。そういった時間はプログラミングと比べればランチ休憩のようなものだろう。自分は幸いにも会議が少ない方であるが、脳みそのオーバーヒート防止のために週数時間はネットサーフィンに当てている。基本的には tech 系のニュースを読んだり、たまにメールや Facebook を覗いたりしている。また、自分は IT 部門用のイントラネット用ウェブアプリの担当でもあり、同僚と共に電話対応したり、バグを修正したり、機能を追加したり、新しいアプリケーションを一から組んだりしている。この関連で 1 日に何度かはプログラミングが中断させられるのだが、これは一つのプロジェクトに専念するよりも疲れるように思う。自分のプログラミング時間は一般的と言えるだろうか、それとも短い方だろうか。また、プログラミングは競技に例えるとスプリント競技のようなもので、ウオーキングとは違い「瞬発力」を要するようなものだと思われるだろうか?

developers.srad.jp

たとえば、プログラミングがわかればこういうソースコードがどうなっててどうやってサイトが構築・構成されているのかがわかるのとか、知っていることによって奥深さを知る入口になる感じがしてワクワクする。

下記、なんとなくでコード書いたりできるプログラミングカッコイイ、という考えで安直に大学でプログラミングサークルに入ってみたものの挫折、という身からすると「こういうのができるようになりたかった」が詰まっている
文化祭で電子決済、注文システムを構築して実行したという内容のQiitaだが、プログラミングの知識だけでなく、周囲とのコネ及びコミュニケーション能力、そして記事の文章力共に長けている。今は高校の授業もiPad必須で資料もPDF。アニメーション作成の授業があったりと、教育面でデジタルネイティブを加速させているのが良くわかる。

qiita.com

下記の記事のように、自分の仕事をすべて自動化して働かずに年収1000万貰う、とかやってみたい(というよりそういう技術を持ち合わせたい)。ただ当の本人は自動化の際に書いたコードを忘れてしまっているようで、また再就職に向けて努力しているオチなのが悲壮感と面白さがある。

プログラマーは自分の仕事を減らすために便利なツールやソフトを作成することができることから、怠け者で愚かな人間ほど優秀と言われることがあるほどです。自作ツールを活用すれば単調で反復的な仕事の生産性を上げられるわけですが、なんと全ての仕事を全自動化して6年間にわたって給与を得ていたプログラマーが、最終的にクビになってしまったというredditの投稿をInteresting Engineeringが取り上げています。

gigazine.net

―――プログラミングの学び方

実際、プログラミングを勉強するにあたって、独学でやる場合はどう勉強したらよいのかがわからない。プログラマーとはいえ、0からコードを書き始める人なんてそうそういないのはわかっているし、せいぜい簡単な構文だけだろう。ITベンチャーで働いているプログラマーの方と話したことがあるが、簡単なデバックなら出来るが、普通にデバックを頼まれた時はどこかのサイトを参照して書くことが多い。曰く、参考書を全部読む必要は無いが、自分が作りたいものを作ってる中で、ここ分からないという部分を参考書で処理するのだとか。また、その方は1か月何も進捗がないときもあり大変だったと述べていた。
下記サイトでは、そういったエンジニアの方に向けてどう勉強を進めていくべきかや、問題についてを整理して問題提起している。技術的・抜本的問題解決の回答というよりは「こうしたら現状を改善できるのではないか?」という状況整理であって、問いかけである。ただこうやって問題を整理することは重要で、まず第一歩として必要。

genkiroid.github.io

―――プログラミングはほぼ才能

ひろゆきも言っていたが、あるプログラムを作る際に複雑ではない単純なコードを書いて組んでいる人を見るとほぼ才能だと思ってしまう。努力ではなく才能だというのは自身が学生時代によくプログラミングの講義で耳にした言葉だ。複雑なプログラムは動作も遅くなり、コードも読みづらく編集しづらい。数学が得意、英語が得意だからプログラミングが向いているなどということは決してない。
ある人から、高専で技術系を選んでプログラミングのC言語や電工2種を学ぶものの試験に落ち、向いていないと確信したと聞いたことがある。その人は、医療系の短大を出て臨床検査技師になったようで、採血などを行っているらしく、高みを目指して別の資格を取得予定のようだった。ただその人の知人は日産のテスラなどのプログラマとして年収1000万、投資と資産運用で1000万の年収2000万という嘘みたいな話を聞いて、その知人の話が本当なのかどうかは怪しいが、その人が言っていたプログラミングがほぼ才能であることは十分頷けた。

正直な話…作りたいものも無いのに「プログラマーになりたい」ってのは、教えようがない。 弾きたい曲もないのにギター弾きたい、みたいな。 ああ、自分がギター弾けないのはこれか。w

href.li

―――ロマンを与えて騙しに使われる場合も

―――近年はAIの台頭でAIがコードを書くようになるかもしれない
プログラミングと言えば英語で、文法を学んだ上で試行錯誤してコードを書いていくイメージがあるが、もう自然言語でそれができるとなれば話が早い。

―――エラー対処

よくエラーが起きてもそのエラー内容を検索掛けて調べれば答えが出る・原因がわかるなどと宣うプログラマー齧りがいるが、それが難しい。インデントや半角全角の違いなどと言う簡単なミスであったこともあるが、プログラミングは更新されるので文法が変われば昨年まで動いていたプログラムコードがエラーだらけということもしばしば。検索がある意味肝なのかもしれないと踏んでいる。

note.com

CodePen

ブラウザ上でHTML,CSS,JavaScriptのコードを記述してリアルタイムで表示を確認しながら開発ができるサービス。

ソースコード、その表示を他のサイトに埋め込める(シェアできる)
HTML,CSS,JSの外部ライブラリなども使用できる
他人のソースコードを見ることができる
基本無料で使うことができる

qiita.com

各言語のライブラリの読み込みも可能なようだ。

JavaScript

COBOL

Python
京都大学Python演習資料

repository.kulib.kyoto-u.ac.jp

京都大学の講義で使用された、無料ダウンロード可能な資料。

■「Python ゼロからはじめるプログラミング」サポートページ

mitani.cs.tsukuba.ac.jp

Pythonを使ってプログラミングに触れるのに分かりやすい資料。他にもC言語Javaもある。一般にプログラミングができる人にはその人が得意な言語があり「これは知らない(できない)」と言う言語がある。文法が全く異なるので、どの処理をここで記入してという概念がわかっても書けない(英語は話せないがなんとなく言おうとしてることはわかる状態)。

■理系大学生のためのPython環境のススメ

qiita.com

これからPythonを使用する大学生向けに、あると便利なライブラリのインストールとコンテナ・フォルダの格納方法を紹介している。開発環境の整理の参考になるだろう。

機械学習のためのPython入門講座

skillupai.com

アプリ開発

■Penmark 大学生の時間割アプリ、履修・授業管理に対応

play.google.com

在学中の大学生が作成したという時間割アプリ。当方、理系の大学の出なのでこういうシステム自体大学のポータルやら管理サイトで確認できたので時間割に困ることはなかったが、こうして時間割アプリを作成する学生は少なくないのかもしれない。

下記は前述のQiitaに似て、創作意欲や好奇心をそそられる内容になっている。この記事を書いたのは理系大学出身の学生の方らしいが、そもそも大学ポータルでの時間割がわかりづらいという難点を克服するために開発されたようだ。

qiita.com

―――ゲームアプリは発想も重要

―――いくつになっても開発はできる

下記は81歳の時にiPhoneのゲームアプリ「hinadan」を開発して世界最高齢プログラマーとなった若宮正子氏のインタビュー記事である。

この「hinadan」は正しい位置にひな人形を飾るというゲームアプリで、お年寄り目線で楽しめる視点で開発されている。お年寄りが孫と一緒になって遊ぶシチュエーションが想定できる。
この方の凄いところは、定年退職後に友人を作るためにパソコン通信を始めようとパソコンを購入して模索したり、エクセルアートを考案したり、50代になってから英検1級を取得したり、とにかく興味を持ったことに対してアグレッシブであるところである。

若宮 本当にそう思いますね。私は自分のやりたいことは、誰かに何かを言われてもやるつもりです。まあ、これは若い時からそうでしたけど。和田 そうですね(笑)。若宮 ネットなんかで調べると、いろんなことを言われています。「もうすぐ90歳にしては口紅の色が濃すぎる」とか。だけどあれだって、たまたま買ったものが濃くて、もったいないから使っているだけなんです(笑)。でも面白いですよね。みんなが評論家で、やっている人を好き勝手に批評する。私は気にしないからいいんですけど。和田 人の目を気にする人と気にしない人。この違いは、生まれついての性格もあると思います。でも、その性格に対して、親がどう接したかで変わってくるのだと思います。若宮 性格に、親の価値観や常識が上書きされる?和田 はい。例えば、活発な子に対し「女の子なんだから、こんなことしちゃダメ」と性格への修正が入ったりする。そうやって性格が変わったり、能力が衰えたりするんです。でも、若宮さんみたいに、子供の頃から変わらない人もいるんです。若宮 そうですね。和田 さっきの若宮さんの話で僕がすごく興味を持ったのは、「面白そうだったらやる。でも面白くなかったらやめる」という部分。それだけのことなんですよ。イヤだったらやめりゃいいだけの話ですから。若宮 そうなんです。和田 いつだって変えられるんですよ。

goetheweb.jp

☟下記は氏のYouTubeチャンネルでのエクセルアートの紹介動画。

www.youtube.com

知恵袋

■Stack Overflow

ja.stackoverflow.com

プログラミング版ヤフー知恵袋のような存在。

エラー文でググる際、環境に依存する情報を省く際は、そこを *(ワイルドカード) に変えて検索かけたりしてます。そうするとだいたいstackoverflowがヒットする。

b.hatena.ne.jp

■Qiita

qiita.com

前述で何回か登場したサイト。プログラミング・IT系の事象について、備忘録のような形でユーザがハウツーや解法を記事にして紹介している。

学習サイト

大学や総務省などといった公的機関が、期間限定・無料で講座を公開・受講受付しているケースがあるのでこういったサービスがないか逐一エゴサしてみるのも重要。

■CODEPREP

codeprep.jp

無料でプログラミング関係の教材が揃っているサイト。実際にコードを入力するなど実践形式で学ぶことができる。

―――機械学習

HTML・CSS

■とほほのWWW入門

www.tohoho-web.com

1996年から続く古典的プログラミング学習サイト。ひろゆきもこのサイトをYouTubeライブで紹介していた気がする。

■Progate(プロゲート) 

prog-8.com

パソコン、スマホから受講が可能(パソコン版の方が学べる言語数は多い)。初級コースを無料で体験し、続けられそうだと思えば有料版を選んで先に進む仕組みになっている。下記Tweetにある忍者コードと言うサイトも似たような仕組みで一部無料で学習することが出来る。

IT/Webデザイン系

■マナビDX

manabi-dx.ipa.go.jp

Pythonなど一部プログラミング講習もあるが、データ分析やChatGPTやDXリテラシー、ITパスポートなどの講習も掲載されている。ただ、内容的には企業向けのセミナー的要素があり、料金も有料であることが多い。ただ無料講座もあり、それらは受講料無料の講座としてカテゴライズされている

■chot.design

chot.design

UI/UXデザインを主に紹介しており、PhotoshopillustratorなどのAdobe関連やHTML・CSSWordPressなどの入門カリキュラムから、名刺やバナー、フライヤーの制作テクニックまで紹介している。

Office系

■Office Hack

office-hack.com

パワポExcel、WordなどのOffice関係のツールのノウハウが基礎から発展まで載っているサイト。

Microsoft Learn

docs.microsoft.com

Microsoft公式のラーニングプラットフォームで、Microsoft 製品について学ぶことができる。内容としてはOffice関係ではなくAzureなどの技術関係が多い。

AWS

―――意味不明の極み、AWS

 

 

www.itmedia.co.jp

ここはプログラミング問わず怖い話になるのかもしれないが、無料体験中に200ドルの請求が発生してしまっていたという下記の注意勧告記事が教訓としてわかりやすく書かれており、良い。

qiita.com

サービス内にあるAmazon EBSというのが、終了ではなく停止状態としたために常に起動状態であり、それによって従量課金が発生してしまったというオチ。サブスクの解約期限忘れで…なんて経験がある身からするととても他人事とは思えない。

AWS Cloud Quest

aws.amazon.com

プログラミング系

☟下記記事ではゲーム感覚で無料でプログラミングを学習できるサービスが紹介されている。

qiita.com

■有名企業のエンジニア向け研修資料まとめ

各企業の研修資料が動画付きで掲載されており、演習のような形で実際に進めて行けるくらいに情報は整っている。

qiita.com

■ニコニコプログラミング

www.youtube.com

RTAのように短時間でコードを作成してシステムを実装する様子を公開しているチャンネル。実況プログラミングとあるが、英語学習でシャドーイングするが如くプログラミングを学んでいくのにはオススメ。

参考・関連文献・サイト

anond.hatelabo.jp

zenn.dev

qiita.com

www.apple.com

firebase.google.com

 

以上。