見出し画像

プログラミングを始める前に大切なこと

むらやまです。大阪でプログラムを書いたり、プログラミングの講義をしたりしています。最近、読んで衝撃を受けた本は アフターデジタル で、本の中で解説されているOMO (Online Merges with Offline) という考え方が今の自分のやりたいことだと気づいた次第です。早速、アフターデジタル2もKindleで購入して読み始めました。続きを読むのが楽しみです。

近況報告

つづいて近況報告です。この度、プログラミングが速くなるタイピングアプリ・その名もType-Fire(タイプ・ファイア) をリリースしました。

リリース!と言っても、アプリと呼べるほど高機能なものではなくて、まだ必要最低限のタイピング機能しか実装できていないのですが、とりあえず遊べるようになったのでよかったら一度遊んでみてほしいです。

このType-Fireというタイピングアプリは、これからプログラマーを目指す方にとってキーボードのタイピングを楽しく効率よく学んでもらえたら良いなぁという思いで開発しています。

それからあまり説明する機会がなかったのですが、Type-Fireというタイピングアプリには一つのコンセプトがあります。それは「プログラミングが速くなるタイピングアプリ」というコンセプトです。

私について

今日は記念すべき、初noteですので少しだけ自己紹介もさせてください。私はかれこれ10年くらいプログラミング講師の仕事をしています。ソフトウェアエンジニアの仕事も合わせるとかれこれ17, 18年くらい、IT業界で仕事をしています。以前は東京に出張して仕事をすることも度々ありましたが、ここ数年は地元の大阪を拠点に仕事をしています。

講師の仕事では「プログラミング未経験」の方を対象にプログラミングの講義をすることも多く、プログラミングとは何か、開発環境のセットアップの方法、ソフトウェアの世界ではお約束のHello World! みたいなことをいつもお話しています。

本題に戻ります

面白い自己紹介はまた別の機会にゆっくりするとして、本日のお題である「プログラミングを始める前に大切なこと」の話に戻ります。

オンラインでもオフラインでも、教室に10人〜30人くらいの生徒が集まって講義をしていると、プログラミング演習を進めると進捗に差が出てきます。ここでは、なぜプログラミング演習の進捗に差が出てくるのかを考えてみることにします。

ふつうに考えれば、いわゆる「プログラミング的思考」の優劣で進捗に差がつくように考えるかもしれません。ですが実際に教室で講義をしていると、Hello World!のような簡単なプログラムの作成でも作業の進捗に差が出てきたりします。普段からパソコンに触れているかどうか、というのが進捗に差がつく理由といえますが、より具体的に言えばタイピング速度に原因があるように感じています。

余談ですが、タイピングが苦手なだけで、プログラミングに苦手意識を感じてしまう人も一定数いるように感じます。プログラミングはとてもファンタスティックなものなので、タイピングが苦手なだけでプログラミングを遠ざけてしまうことは非常にもったいないことだと思っています。

プログラミングのタイピングはちょっと難しい

プログラミングのタイピングの話を少し掘り下げてみようと思います。

普段のメールやチャットなどのタイピングは問題なくできていても、プログラミングのタイピングとなると急に作業が遅くなるケースがあります。なぜかと言うと理由は単純で、プログラミング未経験者の多くは英語(アルファベット)のタイピング経験が少ないからです。

プログラミングを習いはじめの頃は、英語に慣れていないので「Hello」とタイピングするときに誤って「Hallo」とタイピングしてしまったり、「search」とタイピングするときに「serch」とタイピングしてしまったり。私自身も20代の頃に、初めてプログラミングに触れたとき、普段使わない英語のタイピングにとても苦労したのを覚えています。

もう少し言いえば、プログラミングを勉強していると出てくる英単語はちょっと独特です。たとえば「config」とか「context」とか、「contents」とか。conで始まる英単語だけでもコンピュータの世界でよく使う英単語みたいなものがあります。プログラミングを習い始めの早い時期に、これらの用語について触れること、意味を理解しておくことは、これからコンピュータやプログラミングについて勉強していく上でとても役に立ちます。

タイピングが苦手な人ほどうつむいてしまう

そんなわけで「プログラミング未経験者」の大半は、英語の入力に苦労しながらプログラミングの学習をスタートしていきます。たとえばPHPというプログラミング言語であれば「function」とか「strtoupper」とか「file_put_contents」とかですね。え、なにこれ、みたいな英字の羅列に習いはじめの頃は特に苦労します。

そうなると「タイピングの苦手なプログラミング未経験者」は手元のキーボードを見ながらタイピングしていくことになり、ディスプレイとキーボードの間で何度も視線の移動を繰り返しながらプログラミングしていくことになります。結果として、タイピングの苦手な人ほどうつむいているように見えます。

もしかしたら目が疲れたり、肩が凝ったりする理由もこういったところに原因があるのかも?しれませんね。

キーボードを見ていても間違えてしまう

タイピングの苦手なプログラミング未経験者は、キーボードを頻繁に見ながらタイピングするわけですが、それでも一定の頻度でタイプミスをします。それはなぜかと言うと、動かしやすい人差し指や中指のタイピングに頼り過ぎているからです。

一昔前にエンターキーを大きな音で叩く人が話題になったように、タイピングの苦手なひとはエンターキーを中指や薬指で押してしまうひとが多いです。本当は右手の小指で押すのが、距離的に見ても一番効率が良いのですが、演習中などは「みんなに遅れないようにプログラミングしなきゃ!」という焦りのもとに、ついつい普段の慣れた指でキーボードをタイピングしてしまうようです。

もしエンターキーを右手の中指で押しているとしたら。右手をいったんキーボード(ホームポジション)から離して移動しないといけないので、大きな動作になってしまいます。またキーボードから右手が浮いた状態で次のキーをタイプしようとすると、不安定なタイピングになるので、タイプミスも増えてしまうわけです。

要はブラインドタッチができれば良いのですが、プログラミングの勉強をしながら、タイピングの練習も同時に行うのはなかなかストレスのかかる作業です。

プログラミング学習の前にタイピングの練習

ここまでの話を整理しておくと次のようになります。

・プログラミングのタイピングはちょっと難しい
  ・英語のタイピングに不慣れだから
・タイピングが苦手な人ほどうつむいてしまう
  ・キーボードを見ながらタイピングしてしまうから
・キーボードを見ていても間違えてしまう
  ・人差し指や中指に頼りすぎているから

これらの問題について眺めていると、プログラミング未経験者にとって、プログラミングを本格的に学習する前に、タイピングをきちんと練習しておくことは大きなアドバンテージになりそうです。この文章の本題であるプログラミングを始める前に大切なこと、それは「タイピングをきちんと練習しような」ということです。

それで前置きが長くなりましたが、実は冒頭で紹介したType-Fireというタイピングアプリはここにあげた3つの問題を解決します。

うつむかずに前を向いてプログラミングしよう

Type-Fireは実際に遊んでもらうとわかるのですが、画面の上段にドーンっとキーボードを表示しています。また次にタイピングすべきキーが赤く強調されるようになっています。

スクリーンショット 2020-12-14 13.01.15

とても単純ですが画面にキーボードを表示することで、手元のキーボードを見なくても次にどのキーをタイピングすれば良いのか、ディスプレイを見たまま考えることができます。つまり「うつむく」必要がなくなります。

また表示されたキーボードをよく見てもらうと、赤く強調されたキーボードには「左薬」のように押すべき指の名前を表示しています。

スクリーンショット 2020-12-14 13.01.35

最初のうちは薬指や小指の操作にストレスがあるかもしれませんが、繰り返し練習していくと少しずつ指の操作にも慣れてくると思います。

さらにType-Fireでは課題として挙げられるテキスト(問題文)はプログラミング固有の用語(つまり英語)に限定しています。

スクリーンショット 2020-12-14 13.02.06

たとえばこの「strlen」というものはPHPというプログラミング言語に用意されている関数というもので、指定された文字列の長さを返却します。たとえば "Hello" という文字列は5文字で構成されているので、strlen 関数に"Hello"という文字列を与えると 5 という数値が返却されます。

個人的にはタイピングの課題(題材)に、お寿司のネタを打ち込むのも趣があって好きなのですが、ここは学習効率重視、と言いますか、プログラミング用語に慣れてもらうためにこのような仕組みにしています。

プログラミングが速くなるタイピングアプリ

そんなわけでType-Fireのコンセプトは「プログラミングが速くなるタイピングアプリ」です。

Tipe-Fireはこれからプログラミングを始める方にとって、楽しんでプログラミングを学習してもらうために「キーボードを見ながらうつむいてプログラミングすることを減らしたい」という思いで開発しています。

Tipe-Fireを使ってIT用語に触れながら繰り返しタイピングを練習することで「前を向いてプログラミングする」ことができるようになります。そうすることで、自然なタイピングが身につくので、プログラミングも速くなる、と考えています。

最後までお読み頂きありがとうございました。よかったら一度、Type-Fireで遊んでもらえると嬉しいです。それでもし周りに、プログラミングを始めてみたい!という方や、プログラミングの学習に苦労している方、いつもうつむいてプログラミングしている方がいらっしゃれば、このnoteをシェアしてもらえると嬉しいです。

以上、初noteでした。

次はもうちょっと面白い話が書けますように。

この記事が気に入ったらサポートをしてみませんか?