2018年7月20日金曜日

おいおい、自民党いくら何でも、むちゃくちゃじゃないかい?

民主党だか、民進党だか、何とか民主党だか、わけのわからない党ばかり作っている人々が、政権を取ったときの行動に愛想を尽かして、ここ何回かの選挙では多くの人は自民党に入れてきた(んじゃないかと私は想像している)。

しかし、今回の選挙区の話はひどすぎないかい? いくら何でも選挙民をバカにしすぎだと思うよ。

自分たちの候補者があぶれないように、参議院で6つ議席を増やすって、こんなバカにした話ありますかい? しかし公明党は反対しないんかい? そんなに与党にいるのが居心地がいいわけ?

さすがに次回の選挙はお灸を据えたくなる人が多いんじゃないでしょうか。

最初「反対する」みたいなことを言っていた小泉氏もあっさり賛成票投じちゃったし、お父さんのほうが、自分の考えを貫ける人なのかな〜。

自民党で唯一人造反した、「船田元」という名前はしっかり覚えておこう。もう大昔に起こった江川問題の首謀者の一人(だと私は思っている)船田中さんのお孫さんとのことだけど、まあ、おじいちゃんとは別人格だから、そのこととやかく言ってもしょうがないわな。

しかし、党で決めればどんなことでも反対はしないっていうのは、おかしいよね。

たとえば、アメリカの議会は全然違うんだよね。何から何まで一緒じゃなくちゃ同じ党にいられないなんていう、超古い考え方はさっさと止めるべきだと思うんだけれど。

というか、そもそも考え方で集まったわけじゃなくて、「当選できそうか」という視点で集まっているだけだから、考え方なんてどうでもいいんだね。きっと。

2018年7月16日月曜日

日本語の変数名や関数名はレビューの評判が悪いけど... (JavaScript)

拙訳書『JavaScript 第3版』で、付録に日本語の識別子(変数、定数、関数の名前)を使ってみたのだけれど、Amazonに悪いレビューがけっこうある

しかも全面的に日本語にしたわけではなくて、自分が書き下ろした付録でそうしてみただけなのに、そんなことはまったく書かずに鬼の首でも取ったみたいに攻撃をする方が何人かいらっしゃる。

変数名や関数名に自信をもって英語を使える人、手をあげてくださ〜い

かれこれ○十年英語を学習し、TOEICのスコアは895点(ぐらい)だった私ですが、私は手をあげられません。

英語ができる人が読めば、理解はしてもらえそうな名前を付けることはできます。 しかし、自信があるかと言われれば、「ない」。

「ある」と答えられる人は、ネイティブ並みの(あるいはそれに近い)英語力を持っている人か、自分の英語の実力を知らないかのどちらかでしょう。私は簡潔に正しく表現できているか、いつも自信がありません。

就職したての頃、上司のソースに「xxxCount」という変数がいくつか並んでいて、「こういうときcountって言うのかな〜。numberOfxxxとかのほうがいいんじゃないかな〜」とけっこう悩みました(最近はネイティブスピーカーのソースを簡単に見られるので、まあ、頻繁に出てくる表現は身につけようと思えばさほど難しくは何のかもしれませんが)。

チームに日本語ができない人がいる場合、これは仕方ない。下手な英語でも日本語よりは理解してもらえる。

しかし、たとえば自分が練習するのに、日本語の識別子を使っても回りの人に不都合もありません。

「変数が日本語だと、読みにくい」という方がいらっしゃいますが、多分「慣れ」です。慣れれば日本語のほうがパッと見て意味がわかります。試してみてください。3日もすれば慣れてしまう人がけっこういると思います。

 
  • 説明するときは、日本語のほうがはるかに理解度が高い —— 英語ができない人は世の中にけっこう多いのです。プログラミング講座を運営していた身にしみているのですが、つまずく方の3割から5割ぐらいは、英語が原因です。docmentとかMath.randamとか綴って、「動かない」ということがけっこうあります。そういった方が、変数名を自分で英語で考えるというのは、かなり難しいでしょう(逆に言えば、英語ができればプログラミングには有利だということでもありますが)
  • 自信を持って変数名や関数名を書けるし、日本語で考えたほうがはるかに楽
  • 長いプログラムになればなるほど変数名は長くなる。そうすると自分の英語が正しいのかますます自信がなくなる

英語で書きたい方が書くのは一向にかまいません。ただし、やってもみないで「読みにくい」と断言するのは止めていただきたいのです。

ご自分で何日間か試して、回りに方にも何日間か試してもらって、それでも「全員一致して読みにくい」という結論になったら、具体的に「合計○人が△日間試してみたが、読みにくいということで一致した」とご批判をどうぞ。

ただし、一人でも「日本語のほうがわかりやすい」という方がいらしたら、それでも頭ごなしに「読みにくい」と断言できますか?

2018年7月2日月曜日

新聞は「過去の」メディア?

昨日のこと。「(プロ野球の)ヤクルト戦は何時からだろう?」と思ってブラウザに目を移した。日曜日なので、デーゲームなのか、ナイターなのか、ナイターだとしても少し早く始まるのかわからない。

いつもなら「トップサイト」を表示して「Yahoo! プロ野球」のサムネール(アイコン)をクリックするところだけれど、いつもと違うパソコンを使っていたのでトップサイトには見あたらない。そしたら、偶然少し前に表示したのだろう、Yomiuri Onlineのサムネールが目に入った。

「ちょうどいいや」と思ってそのアイコンをクリックすると、最新ニュースのページが表示された。「プロ野球はどこかな?」と思って左上のメニューのボタンをクリックして、表示された[スポーツ]→[プロ野球]と選択する。

「今日の試合はどこかな?」と思って探したのだけれど見あたらない。 トップ、試合結果、順位表、「セ・打撃成績」、「パ・打撃成績」...とメニューが並ぶのだけれど、今日の試合予定が見あたらないのだ。

「トップ」は昨日の試合関連のニュース。「試合結果」をクリックしたら昨日のスコアが表示される。

今日の試合開始時刻がわかるページが見あたらないのだ。

(紙の)新聞ならば、スポーツ欄の左下にいつも(小さく)今日のいろいろなスポーツの予定が表示されていたものだけれど...。

試しに、朝日新聞と毎日新聞のサイトを見てみたのだけれど、どのサイトでも今日の試合開始時間が簡単には見つからな〜い(というか、1、2分探してみたのだけれど、見つからなかった)。

自分が作ったサイト、自分で使ってる?

新聞って、「過去のメディア」になっちゃったんじゃない?

後日談

今日(2018年7月20日)もう一度、見てみたら、「試合結果」の所に、先発予定とか開始時刻とか書いてあるのを見つけた。試合開始何時間か前からは、「試合結果」に現在の試合の状況が表示されるようだ。

まだ始まっていない試合って、「試合結果」なの?

それから、チケット買うときには先の予定を見たいのだけれど、見つからないんですけど〜。

やっぱり「過去」のためのメディアであることを貫いていらっしゃるように思える...。

Yahoo!のページのほうがはるかに役に立つ。

2018年6月2日土曜日

Let’s Encrypt がインストールできなくて、ちょっと時間を取られた...

少し前にプロバイダを変えることで、運営中のサーバをhttpsに対応させたのだけれど、やっぱり前のプロバイダのほうがいいということがいくつかあって、前のサーバで(無料で!)httpsに対応しようとちょっと頑張ってみた(まだ解約はしてなかった)。

Let’s Encryptをインストールしようとしてみたのだけれど、途中でエラーになってしまう。

Error: Command '['/opt/eff.org/certbot/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

このメッセージをググってみたら、どうやらpython3の問題らしい(なのかな〜?)。ともかく次のページの下のほうに書いてあるように lib/python3.4/shutil.py というファイルを修正したら無事できた(日本語のページがヒットしなかったので、ここに書いておくことにします)。

https://community.letsencrypt.org/t/failed-to-run-certbot-auto-successfully-on-centos-6-5/51376/2

実行前に次も必要かも。

export LC_ALL=C  

その他、参考になったページ

  • https://jonkara.net/2017/10/12/ssl_lets_encrypt/ —— わかりやすく書かれていて助かりました。感謝
  • https://www.ssllabs.com/ssltest/analyze.html?d=www.xxx.com —— 最後に確認。www.xxx.comを自分のサイトに変更してください。

2018年1月24日水曜日

JavaScriptのアロー関数( =>)は初心者にとってはバグの元かも

JavaScript講座をやっているのだけれど、受講生の方に例題を解いてもらうと、「何でこれで動かないのだろう?」と考え込んでしまうケースが時々ある。だいたいは長くても5分ぐらい試行錯誤すると「ああ、これが原因か!」とわかるのだけれど、講師の実力が疑われる場面だけに、かなりあせる(笑)。

ところが先日、「なぜこれがエラーにならないのだろう?」というケースがあった。ひとまず動き出すのだが、なぜか途中で止まってしまう。でもコンソールにはエラーメッセージが表示されない。

止まっている(止めている)箇所を探ってみたら、問題のコードは次のものだということがわかった。

if (picnum => 5) {
  clearInterval(timerID)
}

タイトル読んだ人は分かったと思うけど「=>」は「以下」の意味には使えないので、「>=」が正しい。 でも「=>」か「>=」なんてあまり意識しないよな〜。

「何で構文エラーにならないんだろう?」と少し考え、自分のパソコンでも似たようなコードを動かしてみたが、自分のパソコンではエラーになるようだ。あまり時間を割くわけにも行かず、結局その日はわからずじまい(今考えると自分のパソコンでは「=<」を試していたんじゃないかな。こちらはエラーになる)。

今日受講生の方からソースを送っていただいて眺めていたら、「なんだアロー関数ジャン」。

ifの条件でいつも5を返す関数を定義していたのだ。「->」はポインタっぽいから「=>」にしたのかもしれないけど、ちょっと紛らわしいかな〜。間違える初心者、結構いそうだな〜。

自分が無意識にやっていることを意識させされる

このケースもそうだけど、初心者の人といろいろやっていると、自分が無意識にやっていることを意識させられることが多い。 「以上」は「>=」とほとんど無意識に打ってる。だから「=>」と書かれていても最初は気が付かなかった。

ちなみに私が「>=」と打つケースはまずないのも気が付かなかった原因のひとつかもしれない。「a >= b」とは書かずに「b <= a」と書く。数直線は左から右に大きくなるからね。こう決めておけば、迷わずに済む。これは誰に教わったのか忘れけれど、まだ学生だったような気がするから、○十年前の話。本で読んだんだっけかな。

英語の語順が反映されている

考えてみれば英語では、"greater than or equal to" とか "less than or equal to" だから、順番どおり打つと「>=」とか「<=」になる(「>」は "greater than" で「<」は "less than")。だから、「=>」とか「=<」にはならない。

こんな所にも、英語が影響しているのだ。英語がよくできたほうが、プログラミングの習得には有利なのだ。

日本語では「以上」とか「以下」というのが普通だから、本当は「≧」とか「≦」とか書きたいところだけれどね。