Python::Cyta.jp https://cyta.jp Cyta.jpのPythonの講師がブログを通じて、Python情報を発信! プログラマを目指すなら知っておいてほしいこと https://cyta.jp/python/b/92775 <br>プログラミングのコーチをしていて気付いたことを少し書いてみたいと思います。 ## プログラミングの初歩はアルファベットみたいなもの ## プログラミング言語の環境セットアップや文法を覚えるのは、英語で言えばアルファベットを覚えるのと同じです。 理屈じゃないですね、そこは。 プログラミング言語に苦手意識がある人は、インストールの仕方や基本的な文法を覚えるのにものすごく抵抗があるように見えます。 その抵抗の中身というのは「素直になれない自分」なんだと思うんです。 簡単に受け入れられない、というか。 でも、アルファベットのAやBやCを頭に入れるときって、理屈じゃないですよね。 それを覚えないと(というか、踏まえないと)なーーーんにも勉強が進まないわけだから、もう頭に記憶や経験として入れちゃうしかない。それ以外に選択肢がないんです。「より良い思考法」とか、「より良い解決方法」とか、そういう選択の余地がない。とにかく、やっちゃえばいいだけのもので、それ以上でもそれ以下でもない部分です。 だから、この初歩のところで拒絶反応をされても、実は先生やコーチはなにもできることがありません、本質的には。 励ましたり、今ここにこうして書いているような話をしてあげることはできますけど、それ以上はなにもできない。そういう意味で本質的になにもできない。 結局やるかやらないかは本人が決めるしかないし、乗り越えるのも本人だけの孤独な作業になります。 そこはある意味覚悟しちゃったほうがいいと思います。 ## 頭脳を使う勉強は関数から ## じゃあ、アルファベットを抜け出して、頭脳的な思考を駆使する勉強が始まるのはどこからかというと、関数からです。 これは割合、どのプログラミング言語もいっしょだと感じます。 関数以降は、「どうやったらまともにプログラミングできるか」「どうやったらもっとよくなるか」「どうやったら修正しやすくなるか」などのテーマがどんどん出てきます。 それらのテーマを熟考/熟慮しながら、「では、コードはどう書くべきか」を考えていきます。この段階ではもう既に基本的な文法は頭に入っていることが前提になります。 もし、部分的にそうでなくても、自分で調べて不明点を解消するサバイブ能力が必要です。 だから、教える方も、教わる方も、関数から先はモードを変えなくてはいけません。 それまでのアルファベット的な、「とにかく覚える」「身体で覚える」というやり方を、関数以降の頭脳を使う領域に入ってまで引きずってしまうと、今度はそれが弊害になります。 関数以降の学習領域では、覚えることより「考えること」が重要視されます。 これは本当に重要なことです。このターニングポイントでモードの切り替えを忘れると、とても不幸な学習体験になってしまいます。 生徒さんがプログラミング初心者の場合、やはり教える側がこの辺の切り替えは先導してあげる必要があると思います。 また、もし関数以降の領域に進もうとする段階で、生徒さんに「自分で調べて不明点を解消する」というサバイブ能力が欠けていると感じたら、しっかり補習すべきだと思います。一番困るのは生徒さんですから。 ## 実務領域でHOWを考える力が活きる ## 関数以降のどちらかと言うと高度な学習内容を一通りやり終えると、もうあとは実務的な領域に進んでいくしかないです。 プログラミング言語の学習/習得というものの限界がそこです。 あくまで道具を伝授するだけなんですね。 道具の使い方を習ったらあとは使うだけ、ということです。 手前味噌ですが、私自身の実務領域はECの分野です。 ネットショップでものを売るときに、販売する商品の情報や在庫の状況、また、広告のデータなどを管理する必要がでてきます。 これらは規模が小さければ手作業でハンドリングしてもいいのですが、ある程度の売上規模になると、システム的に自動化したほうが効率的にコストダウンを図れます。 そういう場面で必要になる人材がシステムエンジニアとかプログラマです。 私の場合、システム関係は基本単独行動で処理しますので、営業、マネージメント、コーディング、保守、経理、...と一通りのことを自分でやります。 そうやって全体像を俯瞰して思うのですが、プログラマ(仕事的には「コーディング」の部分)に求められるスキルの中で一番重要なのが、 「自分でやり方を考える」 という姿勢と能力です。 どうやればいいか、どうやれば問題が解決するか、というのをいつまでも他人に頼っていてはプログラマとして失格です。 とにかくその部分 ー HOWを考える作業 ー を自分で積極的にやらなければいけません。というか、そのスキルを発揮することによってお金をもらえるんだと思ってください。 これは本当に大事なことです。それがあなた(プログラマ)の価値なんです。 現場では、HOWを絞り出すのを他人に任せちゃ負けなんです。HOWを考える/見つけるのが仕事ですから。 一方、HOWを考える部分以外はどんどん助けてもらったほうがいいと思います。 物事が、WHY(目的)に始まって、HOW(方法)を経由し、WHAT(プロダクト)にたどり着くとしたら、WHYやWHATの部分はむしろ独りで抱え込まずにそれらの専門家にどんどん相談しましょう。 WHYなら、それは企画や営業の人が専門家でしょうし、WHATなら経営者やそもそもオーダーしてきたクライアントが専門家になります。 そういった別の領域の人たちとうまく連携するためのコミニュケーション能力は最低限必要になるかと思います。 ## 境界線を超えたらうまくモードを切り替える ## このようにプログラミングの学習から仕事へという流れをざっと見ると、通り一遍のやり方ではなかなか難しいと言えるんじゃないでしょうか。 ところどころ存在する別の領域との接点=境界線を見過ごさないように注意を払う、これが大事ですね。 ある領域での最適解が別の領域でもそうかというと違うことが多い。 だから、今自分が(自分たちが)どこにいるのかをよく確認すること。 あなたがプログラマを目指すのなら「どうやったらいいのか(HOW)」には特に責任感を持っていただきたいわけですが、それも通り一遍じゃ駄目です。実際、ウザがられますw HOWにも多様性がある=領域が違えば多様なHOWが存在する、ということを忘れないでほしいです。 Python Thu, 26 Sep 2019 12:46:38 +0900 Python入門講座::心のPython入門講座 中村 心 【告知】間もなくレッスン枠がいっぱいになります(2019年9月現在) https://cyta.jp/python/b/92610 <br>みなさん、こんにちは。 コーチの中村です。 現在サイタでは、PythonとJavaScriptのスクールを持っていますが、お陰様でレッスン枠がいっぱいになりつつあります。 近々、体験レッスンの受付を一旦休止させていただく可能性が高くなって参りましたので、ご検討中の方がいらっしゃいましたらお早めにお申し込みください。 Python Mon, 16 Sep 2019 11:29:18 +0900 Python入門講座::心のPython入門講座 中村 心 黒板代わりにcodeshare.io https://cyta.jp/python/b/92557 <br>みなさん、こんにちは。 コーチの中村です。 今日はレッスン時に使用しているツールについて少し。 ーーーー サイタのプログラミングスクールのレッスンは基本カフェやファーストフード店で行います。 コーチがPCを操作して見本を見せ、生徒さんも実際にご自身のPCでコードを実行する… このやり取りをこまめにやってなんぼのジャンルです。 なので、座席のスタイルとしては横並びになり、お互いの画面が見える状況でレッスンを行うのが望ましいと思います。 ただ、お店の混み具合などで横並びの状態になっている席がうまく確保できないときもないとは言えません。 そういうときの強い見方が今回ご紹介するcodeshare.ioというサービスです。 <blockquote><a href="https://codeshare.io/" target="_blank">codeshare.io - Share Code in Real-time with Developers<br /> https://codeshare.io/</a></blockquote> これはサービス内で生成されたURLを共有している者同士なら双方向でコードを書き合ってリアルタイムで共有できるというものです。 アカウントを作らなくても24時間という有効期限がある共有URLならば自由に作れます(レッスンに使うには十分です)。 実際に自分がレッスンでどう使っているかと言うと、「黒板」のように使っています。 生徒さん側の画面の一部に黒板としてcodeshare.ioが表示されていて、その横にコードを打ち込んで実行する環境が別途立ち上がっている…という状態ですね。 codeshare.ioのある意味いいところは、コードを書いてもそれは書いただけであって実行はされない、というところです。ですから、codeshare.ioに書いたコードを生徒さんは「見る」だけです。本当に授業の黒板のような立ち位置で使えるわけです。 生徒さんのPCにてリアルタイムにコーチ側のコーディングが見れます(逆も然り)。 それを生徒さんのほうで実行環境に入力していただきながらレッスンを進めています。 このスタイルを採用するようになってから、生徒さんがレッスン内で手を動かす量がぐんとUPしたと感じます。 講義中心だったり、コーディングも「見てるだけ」になってしまうことが多いと、受講生さんが本当に理解しているのか分からないまま進んでしまう傾向が強くなりますが、手を動かすと違いますね。 このスタイルでやってみると、「コードを打ち込んでみないと発見できない学習ポイント」というのが結構あるんだなと改めて実感しました。 そういうわけで、横並びでレッスンできる席が確保できてもcodeshare.ioを使ってレッスンを進めるようになりましたw これから私のスクールに申し込んでみようと思う方、もしくは、他スクールのコーチのみなさんにとって参考になれば嬉しいです。 :-D Python Thu, 12 Sep 2019 09:15:30 +0900 Python入門講座::心のPython入門講座 中村 心 コードがどこから来ようがPythonは気にしない https://cyta.jp/python/b/92444 <br>みなさんこんにちは。 心のPythonコーチ、中村です。 ## 何でPython始めてる? ## 今回は、Pythonの知識0の方と言うよりは、少しコードを書き始めてみた方々に向けて書いてみたいと思います。 Pythonを勉強するにはまずPythonのコードを書いてみる必要がありますよね。 そこでお聞きしたいのですが、みなさんPythonを「何で」書き始めました? ここ数年のトレンドを独断と偏見で読み取ると、 ・IDLE ・Jupyter Notebook などの対話環境でPythonコードを実行することに主眼を置いたツールで書き始める方が増えているのではないでしょうか。 一方で、Visual Studio CodeやAtomなど、高機能なテキストエディタでコードを書いて実行してらっしゃる方もおられると思います。 更に今はオンラインでPythonを学習できる環境が整ってきている時代なので、「ブラウザでしか書いたことないです」という方がそろそろ出始めていると予想します。(← 先日、Google Colaboratoryを試していて、自分がPython初心者だったらこうなる可能性大だなぁと思いました。) 私はここで「本来ならこういう始め方をしなきゃいけない!」というような堅苦しいことを言うつもりは毛頭ありません。 むしろ、みなさんそれぞれ好きな環境を選択してPythonを始めてほしいです。 一番大事なのはとにかく始めることです。 ## 環境が変わると戸惑ってしまう ## Python初心者の方を対象にレッスンをしていて非常によく遭遇する事態があります。 それは、Pythonコードを書き込む、または、その後で実行する環境がいつも使っているものと異ると、頭が真っ白になってしまい...、手が止ってしまう... という状態です。 Pythonのコードそのものが日常的に見慣れた簡単なものであっても、それが置かれた環境が異ると、どこをどうしていいのか分からず戸惑ってしまうわけですね。 実はこれ、誰しもが経験することです。 かく言う私自身にも経験があります。しかも、プログラミングを10年以上やっていても未だに経験します。 ## 戸惑ってしまうのは普通のこと ## 環境が違うと戸惑ってしまうのは極当たり前の自然な反応だということをまず認識してください。 だからそれはあなただけの問題ではないし、別に恥しいことではありません。 精神的に戸惑っている状態なわけですから、冷静な判断をするのは必然的に難しくなります。 このような場面でコードが1行も書けなかったり、書けたとしてもいつもできていることがうまくできなかったりしても落ち込まないでください! それは自然なことです。 「戸惑っている自分」を否定したり消し去ろうとせず、「受け入れる」てみてください。 戸惑ってしまって駄目だなぁと思う自分も、「自分」という世界の中の一部なんだなと認めてあげてください。 無闇にその自分の駄目な部分を排除しようとしてパワーを浪費しないでほしいのです。 先生に質問し問題を解消しましょう。 分からなかったら聞いてください。 ## コードがどこから来ようがPythonは気にしない ## Pythonの実行環境が変化したときに解決の糸口として覚えておいてほしいことがひとつあります。 コードをIDLEに書こうが、Jupyterに打ち込んでいようが、ファイルに書き込んでいようが、最終的にPythonが「実行」するときには、そのコードがどこから来たものかなんて気にしない、というこの事実を今日は覚えて帰ってください! Pythonが興味を示すのはそのコードの中身です。 そのコードを何で書いたかはには無関心なんです。 だからこれだけ豊富に多種多様なPythonの実行環境があるわけです。 Pythonが無関心でいてくれるからこそ、クリエイターの人たちは自由により便利なものを目指していろんなツールを開発できるわけです。 そのおかげで、「機械学習にはJupyter Notebook」とか「サーバで実行するにはターミナルから直接実行できたほうがいいよね」など、我々Pythonを使う側(ユーザ)は自分に合った環境を選択できるんですね(ありがたいことです)。 ただやはり初心者からすると「いろいろあって余計に分からん」という気持ちにもなるでしょう。 逆の見方をすれば、「いろいろあって分からん」から出発して「いろいろあって便利」と感じるようになれば初心者を脱したと思えるんじゃないでしょうか。 我々コーチの役目はそこに導くことだと思っています。 Python Fri, 06 Sep 2019 12:02:00 +0900 Python入門講座::心のPython入門講座 中村 心 Pythonで仕事が10倍ラクになる! && 仕事の幅が広がる! https://cyta.jp/python/b/92266 <br>みなさん、こんにちは。 心のPythonコーチ、中村です。 自分自身の経験ですが、プログラマになる以前と以後を比べますと、 ノンプログラマ時代には想像もできないほど 効率的に事務的な作業を消化することができるようになったと思います。 正に十人力。 アウトプットだけ見たらそれくらいのインパクトがあります。 また、プログラミングを習得すると、 プログラマでないと扱えない案件(システム開発など)を 請け負うことができます。 その結果として取引先や協働するチームへ価値を提供でき、 信頼を得ることができます。 信頼を得ることができて、 それをキープする努力を怠らなければ、 働き方は自由に選択することができます。 (自分の場合はフリーランスとして独立する道を選びました)。 Pythonを習得すると、 短期的には仕事が効率化できたり、 効率化したことで自分の時間が確保できたりできると思います。 もう少し視野を広げると、 プログラミングというスキルを、 あるときは軸に、あるときは糧に、 あるときは武器にして働く人が増えれば、 その人自身にとってももちろん良いことだろうし、 社会全体にとっても悪いことではないだろうと思います。 このブログを読んでいる方は、 きっと「プログラミングができたらいいな!」と思っている方だと思います。 でも、どこから手をつけていいのかわからない、 プログラミングを始めるのってハードル高そう、 自分は理系じゃないし、プログラミングは無理なのかなぁ という不安もあるはずです。 まずは、その不安を聞かせてください! 一緒に不安を解消しながら、 「プログラミングができたらいいな!」が叶えられるようにサポートします。 Python Sat, 24 Aug 2019 06:12:57 +0900 Python入門講座::心のPython入門講座 中村 心 自分がPythonを教えたい!と思う理由 https://cyta.jp/python/b/92265 <br>みなさん、こんにちは。 心のPythonコーチ、中村です。 今回は、「なぜ数あるプログラミング言語の中でPythonを教えようと思ったのか」書いてみたいと思います。 実際の作業では、プログラミング言語を複数使います。 実務ではひとつの言語で完結することが少ないからです。 自分も今までに10以上の言語を使って仕事をしてきました。 でも「教える」となったら一番得意なものに絞ろうと思いました。 自分が習得しているプログラミング言語の中でPythonを選んだのにはいくつか理由があります。 1) 自分自身が今一番使っている言語である。 → 現場の知識を伝えられる。 2) これまで経験してきた言語の中で(相性はあると思うが)一番使いやすい言語である。 → 経験上、使いやすい言語は続けやすい。 3) 言語仕様がシンプルでわかりやすく、参考書籍もたくさん出ているので初学者が勉強しやすい。 → 個人の特性に応じていろんな学習の経路を選べる。 4) そうは言っても「プログラミング」という時点である程度の難しさがある。 → プログラマでない人の立場に立ってコーチングすることにニーズがありそうだと思った。 → プログラマでない人にプログラミングの魅力を伝えたいと思った。 → プログラマでない人がプログラマになるための手助けができたら最高だと思った。 5) 機械学習など旬な分野で広く使われている言語なので学びたいと思う生徒さんは一定数いるだろう。 → どうせ勉強するなら、需要や将来性が十分にある言語を学びたいと思うのが人情だろう。 → 自分から提供できるPythonの知識が、その先の専門分野へ赴く生徒さんにとっての橋渡しになればいいなと思った。 ざっと箇条書きにしてみるとこんなところだろうと思います。 レッスンを通じて、これらが伝われば、 生徒さんは多分いろいろなことに活かせるだろうし、 付加価値として今までとは世界が違って見えると思うんです。 自分の役割は、 一番得意なプログラミング言語であるPythonで、 生徒さんの興味があることに向かうのをサポートすることだと考えています。 まずは体験レッスンで、お話しを聞かせてもらえれば幸いです:-D Python Sat, 24 Aug 2019 06:03:45 +0900 Python入門講座::心のPython入門講座 中村 心 なぜPythonのコーチをやろうと思ったか https://cyta.jp/python/b/92259 <br>みなさん、こんにちは。 心のPythonコーチ、中村です。 今回は、私が「なぜPythonのコーチをやろうと思ったか」を書きたいと思います。 先日のレッスンで生徒さんに聞かれたんです。 「なぜ、先生(コーチ)をやろうと思ったんですか」と。 きっかけはある思いがふっとわいたことです。 それは、 「仕事で必要だからと学んだことを、自分の仕事の範囲だけで終わらせてしまうのはもったい」 「この知識や技術を必要としている人にシェアできれば、自分が学んだことの価値が2倍にも3倍にもなる」 このような想いです。 仕事をする上で、 自分に対して仕事をくれたクライアントに十分な対価を返さなければという思いはあります。 その一方、もう少し視野を広げて、 「世の中一般の役に立つには?」と考えた場合に 「さて、どうだろう。果たしてできているだろうか?」と思ったわけです。 こういった社会貢献という視点を持ったときに、 「自分が社会に対して価値を提供できるものは何かあるかな?」と探してみました。 そして、10年以上に渡って積み重ねてきたプログラミングの知識や経験は(ご時世的にも)十分役に立てる代物だろうと思いました。 つまり、すごーーーくまとめると、私がPythonのコーチになった理由は、 「社会貢献がしたい」 ということに集約されるなぁと、 ブログに書き出してみて再確認しました。 今回は、 「このコーチはどんな考えを持っているんだろう?」という視点で ブログを読んでいる方もいるだろうと思い、 このような内容で書いてみました。 参考になれば幸いです。 Python Fri, 23 Aug 2019 11:25:24 +0900 Python入門講座::心のPython入門講座 中村 心 レッスン中にわからない言葉が出てきたら遠慮なく「STOP!」と言ってください!! https://cyta.jp/python/b/92238 <br>みなさん、こんにちは。 心のPythonコーチの中村です。 今回は自分のレッスンの方針について書きたいと思います。 当たり前ですがレッスンは生徒さんのために行うものです。 生徒さんが「わかった!」「やってみよう!」と思う、そして行動を起こす...これがレッスンの目的であり、そこに持っていくのがコーチの役目だと思います。 すごく当たり前のことなんですが、当たり前のことほど踏み込んで言う機会があまり作れないものです。 なので、ちょっとブログの場をお借りして私の考えを書いてみたいと思います。 生徒さんには「理解したい・できるようになりたい」と思う何らかの目標があるはずです。 今現在、生徒さんがお持ちになっている知識や技術のレベルと、その目標との高低差がクリアするべき問題になります。 コーチの役目は、この問題を解く方法を解説したりサポートすることで、生徒さんに「問題の解き方」を身につけてもらうことだと思っています。 レッスンを受けることによって「問題をどう解くか」という<技術>を持ち帰っていただいたほうが、単に答えだけを持って帰るよりもコスパが良いと思います。 なぜなら、技術は応用が利くからです。 コーチである私自身、このような方針でレッスンをしているつもりです。 ただやはり人間ですから、どうしても(特にテンションが上がってくると)ついついまだ生徒さんの脳にインプットされていない専門用語や概念などをうっかり説明の中で使ってしまうことがあるかと思います。 そういうときは遠慮せずに 「STOP!」 と言ってください!! 本当に遠慮しないで話を止めてください。むしろどんどん止めてほしいです!(笑) 生徒さんからダイレクトに「わからない」というサインをいただいけばいただくほど、コーチの側は的確に言葉を選んで解説できるようになります。 わからないことを置き去りにしてしまうと、結果的にそこがネックになって、以降のレッスンや学習そのものに影響をきたしてしまうことになりかねません。 ですから、わからないことを恥ずかしがらず、是非それをコーチにぶつけてください! この投稿を読んだ生徒さんが「あーなるほど、この人にはガツガツ質問して良いんだな」と思っていただけたら大変うれしいです:-D ★★★ 体験レッスンのお申し込みお待ちしています! ★★★ Python Thu, 22 Aug 2019 07:07:09 +0900 Python入門講座::心のPython入門講座 中村 心 「抽象化」という考え方 https://cyta.jp/python/b/92219 <br>みなさん、こんにちは。 心のPythonコーチ、中村です。 今回はプログラミングを学ぶ上で避けては通れない「抽象化」というものについてさくっとと触れてみたい思います。 例えば次のような業務上の課題を考えてみましょう。 ------------------ 顧客から送付されてくるエクセルのデータが社内向けには扱いにくいので、 列の並び順などを変更し、社内用エクセルデータとして保存したい。 ------------------ このような課題が不定期で稀に発生するものなら手作業で編集してもそれほど苦になることはないでしょう。 しかし、これが「毎朝決まって発生する業務」だとしたらどうですか? しかも、その顧客からエクセルデータは過去の蓄積が詰め込まれててすごく重かったら? こういうときにPythonをはじめとするプログラミング言語の出番です。 プログラムで処理をすると、人間業と比較して次のようなアドバンテージがあります。 * たくさんのステップをひとつにまとめて実行できます * 何度繰り返しても正確に動作します * エクセルのソフトで開くと重いデータでも、(ほぼ)問題なく取り扱えます 仮にこういった課題をプログラム化するとしたら、まずはある程度「ステップに分ける」ということを最初にやります。 例えばこんな感じです。 【ステップ1】 &nbsp;&nbsp;&nbsp;&nbsp;顧客から送られてきたエクセルデータをPythonが処理できる形式に変換する 【ステップ2】 &nbsp;&nbsp;&nbsp;&nbsp; Pythonが処理できる形式になったものを元手にして社内用のデータを構成する 【ステップ3】 &nbsp;&nbsp;&nbsp;&nbsp;社内用のデータ構成になったものをエクセル形式に変換して出力する ステップ1〜3をもうちょっと汎用性のある言い方に言い換えると次のようになります。 【汎用ステップ1】 &nbsp;&nbsp;&nbsp;&nbsp;入力を処理してPythonが扱えるようにする 【汎用ステップ2】 &nbsp;&nbsp;&nbsp;&nbsp;Python内で何らかの処理をする 【汎用ステップ3】 &nbsp;&nbsp;&nbsp;&nbsp;Pythonから処理結果を整形して出力する このサンドイッチのような形式は、ゴールデンルールと言っても過言ではないくらい、プログラミングしているとよく出くわす形です。 いきなり応用してみます。 例えば最初の例で「エクセルデータ」だった部分をWEBサイトに置き換えると「スクレイピング」というテクニックになります。 【ステップ1】 &nbsp;&nbsp;&nbsp;&nbsp;WEB上のデータをPythonが処理できる形式に変換する 【ステップ2】 &nbsp;&nbsp;&nbsp;&nbsp;Pythonが処理できる形式になったものを元手にしてその中の欲しい情報を抜き取る 【ステップ3】 &nbsp;&nbsp;&nbsp;&nbsp;抜き取った情報を保存に適した形式に変換して出力する どうでしょう? 対象とするデータは置き換わりましたが、「サンドイッチ形式」である部分(パターン)は同じであるのがおわかりでしょうか。 これらのパターンを貫いているのは「抽象化」という考え方です。 1)置き換え可能な部分はどこか 2)置き換え可能な部分を置き換えても変わらない部分はどこか この2点に注目して構造を暴き出す手法を「抽象化」と言います。 こういった考え方のテクニックはプログラミングだけでなく、仕事や生活全般に役立てることができますよね。 また、プログラミングは抽象化に代表されるロジカルな考え方を鍛える絶好の練習材料になります。 普段こういう切り口の考え方をする機会がおありでしたら、どんどんプログラミングに応用することができます。 逆にもし、こういう考え方にあまりなれていらっしゃらないようでしたら、この機会に頑張って覚えてみましょう! 今までで頭の中でもやもやしていたものが晴れるかもしれませんよ:-D Python Tue, 20 Aug 2019 13:33:07 +0900 Python入門講座::心のPython入門講座 中村 心 Pythonが読めると世界が広がる https://cyta.jp/python/b/92186 <br>みなさん、こんにちは。 心のPythonコーチ、中村です。 今回は、Pythonのコードを読めるようになると世界が広がりますよ、というのをお伝えしたいと思います。 なんの世界が広がるかというと、まずは読める本の種類/分野が広がります。 自分の体験ですと、数学の本で読めるものが少し増えたのが嬉しかったですね。 私の場合、数式がいっぱい出てくる数学の本を読むのが苦手です。 でも数学の考え方には興味があり、憧れもあります。 なので、本を読んでみたいという欲求はあるのですが、いつも数式の難解さに悩まされていました。 それがここ数年、数式だけではなく、むしろPythonなどのプログラミング言語をサンプルにして解説している書籍が増えてきてくれたおかげで、ちょっと数学の本が身近に感じられるようになりました。 それからインターネットで検索などしていても、今まではチンプンカンプンだった記事が読めるようになります。 欲を言えば、プログラミングを勉強するついでに英語もいっしょにある程度勉強するととても良いと思います。 日本語の記事では難解な説明ばかり出てくるようなトピックでも、英語だとシンプルでわかりやすい説明が読めることが多いです。 技術的な知識と語学力を組み合わせると、本当に「世界が広がった!」と実感できる瞬間にたくさん出会えます。 プログラミングを学ぶことが最も実益につながるのはやはりビジネスの場ではないでしょうか。 プログラマというポジションで仕事をせずとも、プログラマの人たちと仲良くなったり、対等に会話ができるようになるだけで、単純にビジネスチャンスが広がりますよね。 私は過去の会社経験の中でテクニカルサポートという仕事をしていたことがあります。 その業務の一部は、プログラマでない人(営業マンや広告担当者)とプログラマ(システムやアプリを開発している人たち)の間に入って「通訳」をすることです。そうなんです、プログラマの世界は特殊な言い回しや専門用語が多いので、こういった仕事が立派に成り立つんです。 どうでしょう。Pythonをはじめとするプログラミング言語で書かれたコードを読めるようになったり、その考え方を理解できるようになるだけでいろいろ世界が広がりそうだなと思っていただけたでしょうか? みなさんが「Pythonを勉強してみよう!」と思うモチベに少しでもつながれば嬉しいです:-D Python Sun, 18 Aug 2019 13:06:43 +0900 Python入門講座::心のPython入門講座 中村 心 専門用語の「海」をどう攻略するかが学習の鍵! https://cyta.jp/python/b/92167 <br>みなさん、こんにちは。 心のPythonコーチ中村です。 今回はレッスンの中でどのように膨大な専門用語と向き合っていくかを書きたいと思います。 --- 専門用語をうまく整理して理解できるかどうか --- このことが、プログラミングの習得において重要なポイントとなります。 プログラミングにおいてはとにかく専門用語が頻発します。 また新たな専門用語も日々作られ続けています。 まるで、専門用語を作り出す河が何本もあって、それがひとつの大きな海に流れ込んでいるようなイメージです。 そういう事情があるため、専門用語はとにかく膨大にあります。 「片っ端からやっつける」という方法論では太刀打ちできるレベルではないです。 なので、学習の段階に合わせて取捨選択し、優先順位をつけて学習していく必要があります。 プログラミングは頭のスポーツという側面があると思います。 身体を使うスポーツにとっては飲食物からの「栄養」がエネルギー源。 一方、頭を使うスポーツにとっては「知識」がエネルギー源となります。 したがって、消化不良などを起こさないよう、正しい知識を適切な配分で脳に与えてあげる必要があります。 詰め込むのは結構簡単なんです。 どちらかというと「なじませる」のが難しいですね。 なんだか、感覚的な表現になってしまって申し訳ないですが、経験上そう思います。 例えばみなさんも、なにか本を一冊読んでみたけど全然頭に入ってないなぁという経験はないでしょうか? レッスンでは 「これは重要な基礎ワードなので今しっかり理解していきましょう」(← 重要度高) 「今のところこのワードは頭の片隅においておく程度にしてください」(← 重要度低) などのように、生徒さんのレベルに合わせて調整を加えていきます。 それと同時に、都度振り返りを行って理解度を確認し、実践で使える知識を習得していただきたいと思っています。 また、生徒さんが「これってどういう意味なんだろう?」思っている言葉をストレートにコーチへ質問できるというのも個人レッスンの良いところではないかと思います。 初心者のうちは、書籍やWEBで出会う専門用語がどれも同じように難しく感じるのではないでしょうか? 自分もそうでした。 どれも大事な言葉のように見えてしまい、少しの分量を読むのが本当に大変でした。 また、難しそうな専門用語ほど格好良く見え「早く使ってみたい!」という焦りもありましたね(苦笑)。 私の場合は独学でしたので、結構最初の頃は痛い目を見ましたねw 難しく見える専門用語も、よくよく分解してみたり、その背景を知ったりすると案外すんなり頭に入るものです。 こういった経験者と対話できる環境を活かした勉強法は、個人レッスンの強みだと思います。 興味のあるスクールが見つかったら一度体験レッスンを申し込んでみてはいかがでしょうか。 Python Fri, 16 Aug 2019 09:12:39 +0900 Python入門講座::心のPython入門講座 中村 心 プログラミングに夢中になっている時間は楽しい https://cyta.jp/python/b/92072 <br>みなさん、こんにちは! 心のPython講師の中村です。 突然ですが、みなさんは最近 「何かに夢中になって時間が経つのを忘れた」ことってありますか? 普段のアタマの中を振り返ってみると… 夕食のメニューが気になったり、 芸能人の極秘結婚が頭をよぎったり、 クライアントのことが気がかりだったりと思考って、 あちこち飛び回って忙しいものです。 現実問題として 仕事や家事や育児、趣味もあるし、 夢中になれるような時間が取れないかもしれません。 でも、ほんの少しの時間でもいいんです。 「何かに夢中になって時間が経つのを忘れた」って、 すごく楽しいことですよね。 ちなみに自分は仕事の内容によってかなりムラがありますが、 コーディング(プログラムのコードを書くこと)に集中し始めると 食事するのを忘れちゃうほど夢中になります。 以前からPythonの生徒さんも 「夢中になってプログラミングしているときは本当に楽しい」と言っていました。 彼はプログラムがエラーを吐きまくっても、 そのエラーを解消するのに集中している時間が楽しいそうです(すごい!!!)。 「そうは言っても、それはプログラミングができる人の話でしょ?」と思われるかもしれません。 そうではありません! 何かか1つでも2つでも、イディオム(Pythonの中で使う「言い回し」のこと)を覚えて、それを使えるようになると 急にPythonが友達のように思える瞬間がやってくるのです! そうなったらこっちのもの。 どんどんプログラミングに夢中になっていけると思いますよ! みなさんも、一緒にPythonを学んで 久しぶりに「時間が経つのを忘れた!」という時間をつくってみませんか? 【心のPython入門講座】では 「なにもわからない」 から 「これだけは分かったぞ!」 までをまずはお手伝いできれば嬉しいです:-D Python Fri, 09 Aug 2019 07:45:23 +0900 Python入門講座::心のPython入門講座 中村 心 プログラムは何で書く???: テキストエディタについて https://cyta.jp/python/b/92038 <br>## テキストエディタはたくさんある ## 最初は、プログラムを対話モードで1行ずつ書いて実行する、という練習から始められる方が多いでしょう。 対話モードでの練習段階ではあまり気にしないことですが、少し学習が進んで「その場限りでないプログラム」を作ろうとなったらテキストにコードを保存することになります。 テキストを編集するにはテキストエディタが必要です。 今回はそのテキストエディタの話です。 「テキストエディタ…って、、、メモ帳とかの他になんかあるんですか…???」 というかたも結構いらっしゃるんじゃないでしょうか。 そうなんです、メモ帳とかの他にもあるんです。 しかも、 <b>かなりたくさんの種類のテキストエディタがあるんです!</b> 問題は、 <b>種類がありすぎてどれを使ったらいいか迷ってしまうこと、です。</b> ## 初心者が使えるテキストエディタは? ## 正直、最初は何を使ってプログラムを書いてもいいと思います。 ただ、どうしても気をつけなければいけないのは、 <strong>プレーンテキストで保存する必要がある</strong> という点です。 プレーンテキストというのは「ただ単に文字情報<b>だけ</b>を含んだテキストファイル」という意味ですね。 具体的には Microsoft Office の Word や、Mac の Pages.app などでプログラムを書くのは<strong>避けましょう。</strong> じゃあ何で書くのかというと、メモ帳+αの機能を備えたテキストエディタで書けばよいのです。 「+α」は何かと言うと、書いたプログラムを保存するときの<b>文字コードや改行コード</b>を指定できる機能のことです。 <blockquote>[少し脱線] ------------------------------------------- 実は文字はコンピュータにとって数字の連続です。 人間は知っている読み方でその文字が読めるかどうかで文字の意味を識別しますが、コンピュータは違います。 「知ってる数字に変換できるかどうか」で文字を識別します。 この「文字」から「数字」、「数字」から「文字」という変換を行うやり方にたくさんの種類があります。 また、その変換のやり方を「文字コード」という言い方で呼んでいます(具体的には「UTF-8」とか「Shift_JIS」などですね)。 見える文字に数字が割り当てられているのと同様に、「見えない文字」にも数字が割り当てられています。 その代表格が行の分割を意味する「改行コード」です(具体的には「LF」とか「CRLF」とかです)。 このへんの文字コード・改行コードの話はややこしいけれど大事な内容なので、レッスンの機会にじっくりお話させていただければと思います。 -------------------------------------------</blockquote> WindowsやMacに標準装備のメモ帳アプリだと、文字コードや改行コードを適切に指定できるか微妙です。 なので「メモ帳+α」のアプリをインストールして使いましょう! コーチも初心者の頃とてもお世話になった下記の2つが無料ということもあっておすすめです。 *** Windowsユーザ向け *** &nbsp;&nbsp;&nbsp;&nbsp;TeraPad &nbsp;&nbsp;&nbsp;&nbsp;download: <a href="https://tera-net.com/library/tpad.html" target="_blank">https://tera-net.com/library/tpad.html</a> *** Macユーザ向け *** &nbsp;&nbsp;&nbsp;&nbsp;mi &nbsp;&nbsp;&nbsp;&nbsp;download: <a href="https://www.mimikaki.net/" target="_blank">https://www.mimikaki.net/</a> ## おまけ: コーチは何を使ってる? ## コーチ自身は<a href="https://neovim.io/" target="_blank">Vim(実際はNeo Vim)</a>というエディタをメインで使っています。 基本はVimなのですが、やりたいことの用途に応じて<a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code(略してVSCode)</a>というものも使います。 Vimは操作するためのコマンドをいくつか覚える必要があるのでちょっとハードルが高いかもしれません。 VSCodeに関しては、使い始める敷居はVimなんかに比べたら全然低いです。 初心者のかたでも、人によっては、TeraPadやmiをすっ飛ばしてVSCodeから使い始めてもよろしいかと思います。 ---- なんでもまず興味が湧いたら、調べて、インストールしてみて、使ってみる!というチャレンジ精神が大事です! 果敢にトライしてみましょう:-) Python Wed, 07 Aug 2019 10:09:51 +0900 Python入門講座::心のPython入門講座 中村 心 Pythonチュートリアル 第3版 [書籍レビュー] https://cyta.jp/python/b/92024 <br>Pythonチュートリアル 第3版 単行本(ソフトカバー) – 2016/3/24 by Guido van Rossum (著), 鴨澤 眞夫 (翻訳) <a href="https://www.amazon.co.jp/dp/4873117534/" target="_blank">https://www.amazon.co.jp/dp/4873117534/</a> ---- 以前<a href="https://cyta.jp/python/b/91921" target="_blank">書籍レビュー: Head First はじめてのプログラミング</a>というタイトルを投稿させていただきました。 この<a href="https://www.amazon.co.jp/dp/4873118743/" target="_blank">Head First はじめてのプログラミング</a>の方は、プログラミングそのものがはじめての方にフィットすると思います。 今回紹介する<a href="https://www.amazon.co.jp/dp/4873117534/" target="_blank">Pythonチュートリアル</a>は、 <ul> <li>&nbsp;&nbsp;・薄くて</li> <li>&nbsp;&nbsp;・安くて</li> <li>&nbsp;&nbsp;・簡潔にまとまっている</li> </ul> というのが特徴です。 「チュートリアル」という言葉から初学者でも大丈夫な印象を受けますが、この書籍の場合は少し注意が必要です。 明らかに、何かしらプログラマとしてのバックグラウンドがあったほうが読みやすいと思います。 自分が過去にPythonを「実際に業務で使い始めよう!」と思って手に取ったのがこの本の第2版でした。 当時すでにPerlやRubyなど、用途的にPythonと近い言語を使っていたのでかなりすんなり読めたのを覚えています(「読める」と「使える」はまた別の話なんですが...)。 プログラミング言語は何でも良いのでひとつ覚えておくと、それを応用して他言語(多言語)を習得するための学習コストががくんと下がります。 一番最初は大変ですが、そこを乗り越えれば得るものが大きいと感じますね。 私はたまたまめぐり合わせで、Pythonよりも先に別の言語を習得しましたが、最初に学習する言語としてPythonを選ぶのはナイスチョイスだと思います。 シンプルですし、ドキュメントやライブラリなどがどこに行っても充実しているので、学習や実務で使っていても便利極まりないです。 余談ですが、先日同業者(システムエンジニア)の友人と話していたところ、こんな話を聞きました。 その友人は海外のカンファレンスに参加する機会があるそうです。 カンファレンスにはいろんなプログラミング的バックグラウンドを持った人たちが集まります。 そういった環境で、違ったプログラミング言語を使っている技術者同士が、コードで意見交換をする際にPythonを共通語として使うケースが目に付いたそうです。 こういうのをプログラミングの専門用語で言うと「疑似コード」と言います。 アイデアや意味を伝えることを主眼に置いたコミュニケーションの場面で使うコードのことです。 今はそういう疑似コードとしてもPythonが活躍しているそうです。 まるで英語が国際語になっているように、Pythonがプログラミング界の共通語になってきているみたいですね。 Python Tue, 06 Aug 2019 09:17:58 +0900 Python入門講座::心のPython入門講座 中村 心 はじめはIDLE、少し上達したらターミナル https://cyta.jp/python/b/91999 <br><a href="https://cyta.jp/python/b/91971" target="_blank">前回の投稿(IDLEとターミナルの違い)</a>で書いたことを今一度別の側面から整理しますと、 <ul> <li>・IDLEはPythonの世界が前面にあって、Pythonから外に出るにはひと手間必要</li> <li>・ターミナルはダイレクトにコンピュータの中の世界が前面にあって、Pythonの中に入るにはひと手間必要</li> </ul> と、言えると思います。 自分が初心者のときの経験ですが、コンピュータの中をダイレクトにコマンドでいじるのって結構勇気が要りますよね。 なんか怖いと言うかΣ(ll||д゜ノ)ノ...。 変にいじっちゃってPCが動かなくなったらどうしよう的な感覚ですね。 初心者のうちは、コンピュータを自由自在にいじり倒したい欲求を抑えてでも、<b>ややこしい事態になることを避けたい</b>という思いのほうが強いでしょう。 「コンピュータを安全に使うための知識が足りない気がする」 「どういうコマンドが危険なのかまだ良くわからない」 そういう不安要素が解消しないうちはIDLEで学習するスタイルのほうが無難かもしれません。 IDLEだとまずPythonの世界が前面にあるわけですが、Pythonコード<b>だけ</b>を使ってコンピュータをぶっ壊すことって、実は結構難しいです。高度な技が必要になります。 なのでPythonの初心者の方はある意味安心してどんどんコードを書くことができます:-) 少し上達して「Pythonの外」に出たくなったらやっぱりターミナルを操作する必要が出てきます。 そうなったときは、立ち上げ方、表示内容の見方、コマンドの使い方などサポートさせていただきます! Python Mon, 05 Aug 2019 07:30:00 +0900 Python入門講座::心のPython入門講座 中村 心 IDLEとターミナルの違い https://cyta.jp/python/b/91971 <br>## IDLEとは ## Pythonの入門書などを見ますと、「まず実行環境としてIDLEを使います」という始まり方の本が(特にここ数年は)多いように感じます。 そもそもIDLEとは何かと言うと、<a href="https://docs.python.org/ja/3/library/idle.html" target="_blank">Pythonのドキュメント</a>によると <blockquote>IDLE は Python の統合開発環境で、学習用環境です。</blockquote> だそうです。 「だそうです」などど言う他人事のような語尾を見て「あれ? コーチのくせにIDLEも知らないの???」と思われた方もいらっしゃるかもしれません...。 ある意味ではその通りです。日常業務でも自身のPythonの学習でもIDLEを使ったことが全くと言っていいほどありません。 それはなぜか、なぜIDLEを使わなくてもPythonが実行できるのか、というのがこの投稿の肝の部分になります。 ## IDLEとは(再び) ## Python + IDLEがすでにインストールされているとして話を進めます。 IDLEを立ち上げると、いきなりPythonのコードを入力できる状態になっていると思います。 「>>>」という記号が行頭に出てると思うんですね。 これを専門用語では「プロンプト」と言います。 「ここにPythonのコードを打ち込んでくださいね。待ってます。」という待受け状態を表現しているものです。 「>>>」に続けて<code>print("Hello, IDLE!")</code>と打ち込みEnterを押すと、ひとつ下の行に<code>Hello, IDLE!</code>と返ってくると思います。 入力後の全体の状態は下のようになると思います。 <code>>>> print("Hello, IDLE!") Hello, IDLE! >>></code> 2行目の<code>Hello, IDLE!</code>は1行目の<code>print("Hello, IDLE!")</code>にPythonが応じて返したものなので行頭にプロンプト(「>>>」)がありません。 3行目は次のPythonコードを待ってますよ、という意味で再びプロンプトが表示されています。 ちなみにこのコードの入力とそれに対する応答の繰り返しをREPL(Read, Eval, Print, Loopの略)と言います。 REPLの主語はコンピュータになります。(人間の側ではない点に注意) コンピュータが、 1) コードを読んで(Read 2) その内容を評価して(Eval) 3) 評価した結果を表示し(Print) 4) 次のコードを待ち受ける状態(1)に戻る(Loop) ということをするわけです。 ## ターミナルでPythonを実行する ## MacのターミナルでPythonを実行するのは拍子抜けするほど簡単です。 ※ Windowsではいくつかの選択肢があるのでそれはまた別の機会に書きます。 まずはターミナルを立ち上げます。 ターミナルの場合は「$」や「%」がプロンプトになります。(特に何も手を加えてなければ「$」が表示されるかと思います。) ここで注意なのが、ターミナルはPython専用ではないということです。 Python以外のたくさんのプログラミング言語やコマンドを実行できる「汎用REPL」と理解してください。 そのためここで一手間加えます。 ターミナル標準の「$」というプロンプトに続けて<code>python</code>と打ち込みEnterを押す。 これだけです! すると「$」だったプロンプトがIDLEと同じ「>>>」に変化するはずです。 ここからは基本的にIDLEの使い方で説明した内容と同じになります。 ※ ターミナル上でPythonプロンプトを終了するには Ctrl+D(Controlキーを押しながら「D」キー)を入力してください。 ## IDLEはターミナルを優しくしたもの ## つまりIDLEでできることはすべてターミナルを使っても実行可能です。 というか、ターミナルのほうが「親」のようなイメージですね。 ターミナルでできることの中から、Pythonに関係するところだけ切り取ってまとめたものがIDLEと思っていいでしょう。 「てことは、ターミナルがあれば、IDLEは別になくても良い???」 と思われた方もいらっしゃるのではないでしょうか。 コーチ個人の感覚ではそうなります。 ではIDLEにまったく存在意義がないかというとそれは違います。 ターミナルは汎用的でなんでもできるのですが、汎用的なために扱いが難しい面があります。 代表的なのは「すべてをコマンドで打ち込む必要がある」という点です。 初心者の方は「全部コマンドか...」と思うと結構げんなりするものです。 こういった「実際問題、ちょっと初心者には難しいなぁ」という操作を、IDLEでは他の普通のアプリケーションと同じようにマウスで操作可能にします。 つまり、<strong>IDLEは初心者がPythonを実行するハードルを下げるためにより優しいインターフェイスにしたもの</strong>、と捉えればよいと思います。 Python学習の参考になれば幸いです。 Python Sun, 04 Aug 2019 09:24:53 +0900 Python入門講座::心のPython入門講座 中村 心 Pythonをブラウザで試し書き: paiza.io https://cyta.jp/python/b/91945 <br>「まずもってWindowsへPythonをインストールする時点でつまずいてしまった...」 「MacだからPythonが最初からインストールされているらしいが、ターミナルの使い方がそもそもわからない...」 という初心者の強い味方がブラウザでプログラミング言語を実行できるサービスです(*1)。 今回は paiza.io というサービスを紹介します。 <a href="https://paiza.io/ja" target="_blank">https://paiza.io/ja</a> このサイトはメニューが日本語なのも嬉しいですね。 使い方はとても簡単で「コードを作成してみる(無料)」をクリック → コードを書ける画面に移動したら、左上のプルダウンから書きたい言語(Python3)を選ぶ → あとは書くだけ! ブラウザなのでそれなりに制限はいろいろあります(*2)が、コーチ目線でみると「思った以上にいろいろできるな!」という印象でした。 初心者のユーザが、Pythonの文法を覚えるのにいろいろいじってみる、などの用途には十分ではないでしょうか。 試しに次のようなコードを入力して... <code># coding: utf-8 # Your code here! import json data = { &nbsp;&nbsp;&nbsp;&nbsp;"name":"Keyser Söze", &nbsp;&nbsp;&nbsp;&nbsp;"suspect":True } print(json.dumps(data, indent=2))</code> 「実行」ボタンを押したところ、期待したとおり下記のような出力を得ることができました。(*3) <code>{ &nbsp;&nbsp;"name": "Keyser S\u00f6ze", &nbsp;&nbsp;"suspect": true }</code> みなさんもお試しあれ! ----------------------------- 補足) *1) Pythonなどの言語は通常シェルというものを仲介役にしパソコンの中で動作しますので、ブラウザ上で書いて実行するにはそういう用途で公開されているサービスを利用する必要があります。 (ちなみにJavaScriptのような言語はブラウザそのものに実行する能力(エンジン)が備わってます。) *2) paiza.io などのサービスを用いブラウザ上でPythonを実行するということは、言い換えると「ブラウザを親にして」Pythonを実行するということです。 この場合、 <<ブラウザができないこと == ブラウザ上のPythonにもできない>> となります。 具体的にはHDDやSSDに保存されているファイルを直接 paiza.io 上で書いたPythonにて操作することはできません。 これはセキュリティ上の要求です。 *3) URLの寿命がどの程度かわかりませんが、サンプルコードを入力した状態の paiza.io は下記URLからアクセスできるようです。 <a href="https://paiza.io/projects/e2z5qELyIXzW1B5AHlhEKw?language=python3" target="_blank">https://paiza.io/projects/e2z5qELyIXzW1B5AHlhEKw?language=python3</a> Python Sat, 03 Aug 2019 06:59:29 +0900 Python入門講座::心のPython入門講座 中村 心 書籍レビュー: Head First はじめてのプログラミング https://cyta.jp/python/b/91921 <br>Head First はじめてのプログラミング ―頭とからだで覚えるPythonプログラミング入門 単行本(ソフトカバー) – 2019/4/26 by Eric Freeman (著), 嶋田 健志 (監修), 木下 哲也 (翻訳) <a href="https://www.amazon.co.jp/dp/4873118743/" target="_blank">https://www.amazon.co.jp/dp/4873118743/</a> ---- 自分が初心者だったころにこんな本があったらなぁと思ってしまうくらい良質な入門書です。 あくまでもプログラミングそのものをはじめること、そして慣れることを中心にまとめられていますが、使用する言語でPythonが使われています。 挿絵や図が大変多く、コードの途中を矢印で指し示してコメントがしてある点も初学者には嬉しいと思います。 一般的な教科書でありがちな「それってコードのどの部分の話をしてるの?」と迷ってしまうことが少なくて済みますね。 また、このオライリーのHead Firstシリーズは一環して「ラフなノリ」で解説が進んでいきます。まるでコーチから話しかけられているような感覚、もしくは、同じような学習レベルの同級生といっしょになって考えているような感覚です。(説明の口調はラフですが、言ってることはとてもしっかりしています。) 少し分厚い本ではあります。しかし、小難しい内容と文章がギューギューに詰まってこの厚さになっているわけじゃないので、ノリさえ合えばさくさく読めるんじゃないでしょうか。 Pythonの入門書で最初にどれを買ってよいか迷っている + プログラミング言語の学習ははじめて、という方には文句なしにお薦めの一冊です。 Python Fri, 02 Aug 2019 08:59:32 +0900 Python入門講座::心のPython入門講座 中村 心 業務に使用している言語(2019) https://cyta.jp/python/b/91900 <br>今までいろいろなプログラミング言語を勉強してきました。 今回は現役で業務に使用している言語を簡単に紹介させていただきたいと思います。 1) Python とにかく毎日書きます。 これがないと仕事になりません! 2) JavaScript 最近はフロントエンドだけでなく、Node.jsを使うなどしてサーバサイドでも十分使えるようになってきたJavaScript。 自分が最初に勉強した言語でもあります。(2000年前後) 最近もっと使っていきたいなと思って再勉強中。 3) ShellScript Linuxで仕事をするので、ShellScriptはなくてはならない「友」です。 複雑な処理は、モダンなアプローチの効くPythonなどのスクリプト言語に譲りますが、それ以外の泥臭い部分はShellScriptの出番になります。 4) SQL リレーショナルデータベース(RDB)を操作するための言語です。 RDBにはいろいろな種類がありますが、SQLの基本は大差がないので、一度覚えてしまえば、たくさんの場面で役に立ちます。 5) 正規表現 正規表現を「言語」と言えるかは微妙ですが、「ミニ言語」という言い方なら誰もが納得すると思います。 複数の(もしかしたらほぼ全ての?)プログラミング言語において、多少の差異は当然ありますが、何らかの形で正規表現が顔を出します。 6) Rust 処理スピードが求められる場合と、低レベル(PCの中核に近い領域)の開発が求められる場面ではコンパイル型の言語が必要になります。 以前はGo言語というのを使っていたのですが、現在はRustという言語にトライしています。 参考になれば幸いです。 Python Thu, 01 Aug 2019 13:09:11 +0900 Python入門講座::心のPython入門講座 中村 心 Python学習ことはじめ: 分解して考えよう! https://cyta.jp/python/b/91884 <br>はじめましてコーチの中村 心です。 名前は「心」と書いて「しん」と読みます。 この講座ではPythonのレッスンを担当させていただきます。 よろしくお願いします。 ---- Pythonを始めてみたいなぁと思うきっかけは人それぞれで、様々だと思います。 また、プログラミングの最初の言語でPythonを選択する方もいらっしゃるでしょうし、そうでない方もいらっしゃると思います。 ## 私がPythonを始めたきっかけ ## 私自身は別の言語をメインに仕事をしていたときに第二言語としてPythonを学びました。 なぜ第二言語を必要としたかと言うと、最大の理由は、メインの言語で解決するのが難しい問題に阻まれた場合の迂回策 -- つまりリスクヘッジとして -- ですね。 次になぜPythonを選んだかと言うと、ひとつは仕事でよく使うMacOSやLinuxで標準的に使用できる(Macに至っては購入した時点ですでにインストールされています!)という点もポイントが高いですが、何よりも実際にPythonを書いてみてそのシンプルさに魅せられたことです。 ## 学ぶ目的を具体的にしましょう ## Pythonを道具として使える分野は多義に渡ります。 また、Pythonをどの程度の深さで使うかによってもできることが違ってきます。 つまり「Pythonを習得したい!」と一言で言ってしまうと意味が広すぎるんですね。 Pythonの学習を始める地点でいきなり大きすぎるビジョンを抱き、その遠いゴールへの道を急ぎすぎてしまうと、 * 学習する内容に具体性や即効性が欠けてしまったり * 単純に細かな内容を習得するのに飽きてしまったり する危険性が高くなるように感じています。 Pythonを使って最終的にはどんなことをやってみたいのか、という大きなゴールを念頭に置くことはとても大事なことですが、実際面では、そのゴールへの道のりを細かく分割して「中間ゴール」をたくさん作る作業も同じくらい大事です。 そして - 今日のゴール - 今週のゴール - 今月のゴール - ・・・ のようにまずクリアする目標を具体的に定めて消化していくことが成功の鍵になると思います。 ## その前提がわからんのだよ… ## じゃあ実際に学習を始めましょう!となったら、普通はまず書籍を読んだり、ネットで調べたりして知識を仕入れて行くことになると思います。 しかしここにも落とし穴があって、ほしい情報や知識を追って行くほど、わからない専門用語が並んでいる文章を読む羽目になり、眠気が襲ってくる…という経験をした方も多いのではないでしょうか。 それもそのはずで、目的 = 成果・結果に近い情報ほど、その前提となる細かな知識は省かれて紹介されており、「わかってるでしょ?」という体で書かれているからです。 「今更こんなことは説明しなくてもわかるよね」「前提知識の説明は省いてその先(本題)を説明するよ」「わからないところは自分で調べてね」という書き方の文章は世の中に溢れてますよね。 自分が抱える問題を解決したい一心で検索しまくって、その記事にたどり着いた。 けれども! 予備知識が足りないせいで、記事の内容が理解できない、もしくは、そこに書いてあることが正しいと確信できない…。 こういった状況に陥ったときのネガティブな気持ち、 痛いほどわかります! ## やはり「ステップに分割できるか」が鍵 ## これも結局は筋道を立てて(戦略を立てて、と言ってもよいかと)、その解決法を理解できたり自分のものとして使えるようになるために必要なステップを割り出せるかどうか、ここにかかっています。 このステップわけ自体が最初は難しいと思います。 いや、とても難しいと思います。 難しいことですが、経験から、「慣れの問題」だとも思います。 たくさんの問題に取り組む中で、問題を俯瞰的に観る感覚を養っていくことが非常に重要です。 ---- コーチとして、生徒さんが問題解決の経験値を上げるためのお手伝いができればいいなぁと思います。 私自身は主に独学でプログラミングを学んできたので、一人で悩んでいるときの「悶々感」にノックアウトされた経験がたくさんありますね。 そういうとき、気軽に質問できて、的確なアドバイスができるコーチになれるよう頑張ります! :-) Python Wed, 31 Jul 2019 15:57:01 +0900 Python入門講座::心のPython入門講座 中村 心