karashi39とはいったい

夢と希望と明日と正義を讃える

新人研修でプログラミングを教えたときの学び

プログラマーになって1年も経たないうちに、入社1ヶ月が経過した会社で1ヶ月だけ後輩の新入社員3人のプログラミングをメインとした研修を行うという、なんとも色んな人達が無茶なことを考えているという感想しかない事をやってきたので、その時の学びです。 とはいえプログラミング教育論みたいなのは諸先輩方が素晴らしい知見をいっぱい残してくださっているので、そういうことは書かないつもりです。

結論的なこと

  • とにかく厳しくして教える側のコストを下げるのはNG
  • プログラミングのテストは便利な測定ツール
  • 勝手に学んでいく人に育てるために役立つツールから教える
  • 手っ取り早いプレOJT、それはハッカソン
  • 失敗は宝だけど失敗を用意するのは無駄
  • 教育的な目的において、勝手に何かを無駄だと判断しない方が良い

とにかく厳しくして教える側のコストを下げるのはNG

いきなり精神論なんですけど、前職の先輩が新人に対して通常のエンジニアとして接してついてくるやつはその後も育つし、ダメな奴は辞めていく。だから厳しくするべきだし、その方が楽だよね。という話をしていたんですけど、それってただの生存バイアスですよね… 厳しくしても甘くしても育つやつは育つし、育たない人に対しても育てることができないと仕事での教育は成り立たないので、新人を殺しにかかるようなことはできません。もちろん程度によりますが、程度をどうやって決めるかって話になると、新人の事を注意深く観察して課題を設定していかないといけなくて、楽をするのは不可能だし、プロジェクトと並行して何人ものずぶの素人の教育をしようなんて無理があるということを知らなければいけません。

でもまあ、じゃあいったいどうやるのという感じになるので、以降にやってみて良かった具体的な方法を書いていきます。

プログラミングのテストは便利な測定ツール

プログラミング能力を定義するのってかなり難しいので、外部のリソースを使用しました。当時怪しげなゲームで評判を落としていたあのサイトを使ったんですが、プログラミングスキルチェックはかなり便利です。*1

  • 仕様がはっきりした出題
  • 答えをググっても簡単には見つからない*2
  • ユニットテストの通過率でスコアが決まる
  • 問題のランクも分かれていて、新人の今いるステージがわかる
  • 同じランクの問題が複数あるので、放置で予復習をやってもらえる

上の方はまあわかると思うんですが、後半2つくらいが特に良くて、大事なのは、これで教える側が楽になる、特に新人の状況を把握するのに役立つといいう部分です。技術者という人種は、偏見かもしれませんが、自分が1人で学べるのでそれを若手にも押し付けがちであり、当然のように「自習に役立つ方法」を教えがち、こういうサイトを選定するときも自習に役立った経験を活かしがちですが、こっちは仕事で教えるということをやってるのでそういう発想ではダメだと思いました。独習用のWEBサービスはいくらでもあり、それはまあ役に立つとは思うんですが、教える側になったら「新人の状態を把握するのにどれだけ便利か?」という視点を忘れてはいけない。新人に楽をさせるんじゃなくて、私が全力を尽くす上で楽な方法というのが大事なんです。

しかし、最初からそんな考えを持っていたわけではなく、なんとなく実力を定期測定しようと導入したのだった。そんな中しばらく最低ランクの問題でずっと0点という子がいて、それも学びだと思って研修チームが放置してしまっていたんですが、3週目に突入して流石にまずいとなって個別指導に力を入れたらススッと1人で学べるようになったので、こういう気持ちになったんですね。新人は1人では学べないこともあり、ただ、それがどこか教える側には見えにくいので、こういうツールが便利だと思った次第です。感覚では、1週間たってもスコアが伸びないなら、重点的に教育したほうが良いという判断に使える気がします。

あまり探せていなくて、こういう新人研修に便利なサイトは他にもありそうです。ただこう、あのサイト、名前がいいよね。おっPythonみたいな感じで。

勝手に学んでいく人に育てるために役立つツールから教える

結論的には、

  • Lintを最初から使わせる
  • Git教育は自由に使えるリポジトリを用意して、Qiitaとかに書いてある実証をやらせる
  • 機械学習の理論的な部分はYouTube

です。この辺はもうわかりそうです。

特にヘーシャは機械学習の理論的な部分を大事にしているので、そういった教育が必要なのですが、経験者いわくYouTubeがおすすめとのこと。情報の質がまず良くて、あそこまで有名な動画サイトになると、適当な情報を流せばボコられることが目に見えているので、検索に引っかかるような動画はすべてちゃんとしたものしかないそうです。黄緑色のあのサイトなんかは、機械学習関係の人は本当に承認欲求がもうあれなのであれです。*3YouTubeで有名な学者さんの説明を聞きましょう。通勤中とかでもぼーっと聞けるし、自習にすごく役立ちます。

Lintは、Rubocopが良かったですね。なんというか初心者向けのメッセージが充実している印象でした。プロも使えるんでしょうが、いちいち教えるのが面倒くさい思想っぽい部分をツールが指摘してくれるので、ああいう作業はすべてツールに委託しましょう。Lintが充実しているという理由で最初に学ばせる言語を選んでもよいのではないかと思うくらいです。*4新人君が$ gem i robocopとしていたのがウケた。*5

手っ取り早いプレOJT、それはハッカソン

OJTにいつ持っていくかという悩みは、教えることを真剣に考えだすと結構悩むところだと思います。プロジェクトに新人をアサインしてもコストばかり増えてその結果教育も疎かになるので、最低限まで育ててからという気持ちになりますが、その最低限はどこかとか迷っている我々をプロジェクトは待ってくれない。

そこで、つきなみかもしれませんが、しれっとハッカソンに連れていきましょう。OJTから、お金の話が消えて教える側のプレッシャーが減るし、その期間も超短期で済むので、かなり気楽OJTできます。残念ながらそこで役に立てなかった新人は、もう少しOffJTが必要なんだなって判断もできるし、会社の計画に影響しない形でやれるので大変良いです。そういうイベントは、ものを作る楽しみを純粋に感じてもらうこともできるので、モチベーションを上げていくのにも役立ちますし、広範な知識が必要になるので、視野を広げるのにも役立ちます。

われわれは会社の若手5人組で2日間開催のハッカソンに行ってきたんですが、上記のような効果が如実に現れ、正直私の研修とかいらないんじゃないかと思ったくらいです。

失敗は宝だけど失敗を用意するのは無駄

また精神論に戻ってきたんですけど、学びになるからと言って失敗を用意するのはとても無駄です。経験者は知っていると思いますが、どんなに準備万端の教育を行っても新人はどんどん失敗してくれます。新人が勝手に躓いた部分とこちらが用意した失敗の両方に対応するのはかなり大変です。むしろ超基本的なつまづきはこっちで潰して、もうちょっとだけ進んだ失敗を勝手にしてもらうのが、のばすコツかなと思っています。

教育的な目的において、勝手に何かを無駄だと判断しない方が良い

エンジニアなので無駄はどんどん排除していくべきですが、何かを習得する上で無駄なことって簡単に判断できないと思うんですね。正直酒を飲みに行くのだって勉強になるわけで、それは、会社でプログラマーをするということは、1人で家にこもってものを作るわけではないということです。何を言いたいかというと、効率が良いとか無駄だとかって判断はスコープを決めてその中でしか考えられないことであり、会社の新人教育はスコープが決められないというのが大きい。せっかくC言語の研修にしたんだからポインタを習得してもらうのが最低限でしょとか言ってそこに集中するのはそれも分かる話なんですけど、別にポインタのプロフェッショナルを新人に期待しているわけでもないということは忘れてはいけない、というような話です。あと、飲みに行きたいです。ただ、お酒が苦手な新人に強要するのは本当に最悪なのでやめましょう。

おまけ

知り合いで社外の技術者が参加しているもくもく会的なところに行ってもらうのは、新人の様子を社外の人に評価してもらう良い機会だと思いました。社内の目だけだとどうしても視野が狭くなってしまうので… ただ、その節は大変ご迷惑をおかけしました。最初からそういう目的で行ってもらったわけではないのでご勘弁ください。その御方も面倒見が良い方なので、よくしてもらったようだし、楽しんでもらえていそうですが、しかし手間は取らせたので、今後新人を派遣するときはご迷惑にならないようにだけ指導をしておく必要がありそうです。

なんだかまとまりがないですけど、こういう学びがあったということで、ひとつよろしくおねがいします。


なんというか、私はもうエンジニアは辞めてしまうだろうなという方向まっしぐらな状況なので、最後にやった仕事でえたものは残しておこうと思いたちこの記事を書きました。

*1:是非、原点(?)回帰して、このスキルチェックのシステムを普及していく方向でやっていってほしいです。

*2:というか答えはどこにも上がっていないはずなのであり、指導する側も自力で正解がだせないといけないです。

*3:WEBの人なんかは、何を言っているかお分かりですね。

*4:そう言えば八王子方面で「面倒見てくれる人が得意な言語が、最初に学ぶべき言語」という話があり、禿同だった。

*5:コピペって大事だよね、って指導しました。

いってきました

うう、すみません、現在心境破綻の真っ最中で、お世話になっている方々にもほとんど声をかけられず、当然のように午前中途中退出、タイトルにイベント名をつけるのもおこがましく、ただ、聴いたトークやイベントはとても良くて感想を残しておきたく、このような記事になりました…

オープニング

なんか道が複雑とうかがっていましたが、京王線渋谷駅のよさげな改札を出たらすぐでした。エレベーター前でぼーっとしていたら、はちぴーで何度もお会いしている方に声をかけていただいて、全く関係ない場所で抱えた絶望感を忘れながら会場に入ることができました。ありがとうございます!あと、カバン真似しててすみません、めっちゃ良いですよねこれ。

会場はあっさりした会議室で、素人目にみると撮影班だけが妙にゴージャスで、やはり力をかけるべきはそういうところなんだな、と思いました。普通そんなものなのかもしれないけど、ヘーシャではイベントがあっても撮影皆無か、アイホヨーンで動画を取ってたら電池が切れる、みたいなのしかやったことないので、いろいろ考えましたが、みんな考えることしか思いつかなかったので特に書かないです。とにかく閉じた場所で消えていくものにしないということがこういう場所では大切なんだってことですね。

トークの感想

WEBアプリ入門のトーク

一発目のトークということで、すてきなドキドキ感が伝わってきました。インフラ側の人からWEBアプリ側の…というテーマ自体にシンパシーを感じました。わたくしのパスはなんかよくわかんない感じで結構違うんですが、異世界への旅立ちは楽しいですよね。自分のそれまでの経験で得た技術領域へ行ったり来たりすると、新しい技術の習得は楽しいものになるということだと思いました。わたくし、それができていません。大変駄目な感じで、もう死のうかと思っています。

TOP10のトーク

セキュリティ関係、とても気になる領域だったんですが、結局研究開発で計算処理みたいなのをやることになった私にはなかなかエネルギーを注げない分野でして、でもこんなにわかりやすく基準的なものがまとまっているなら、是非活用しようと思いました。あと、ググるの結構つらいという質問があり、同じこと思ってました!という状態でした。しかし発表しようという段階まで来た人はちゃんとやり方を知っていて、ああ、やはり生で話を聴きに行くものだ、そしてコミュニケーションをとるのが良いのだ!という気持ちになりました。

なお

なにより本物はすごいですよね。というか本物と偽物の違いがブラックボックスな感じで、とても気になりました。わるいドキドキ感が伝わってきましたが、大きな笑いに変えてくださったトーカーとイベントスタッフこそがすごいのだと思いました。とくに口を開くだけですべてを楽しくしてくださるuzullaさんの最強みがすごい。

しくじりのトーク

こういう話を、新卒2年目(?)でやろうとなって、やってしまい、気持ちを発生させるの本当にすごいことだと思いました。おじさんになると若者の失敗に助言みたいな気持ちばかりになる気がする、あくまでイメージですが、私は学びを得たのでまだおじさんではないと思いました。断じておじさんではない。何を学んだかというと、私はこれまでの社会人人生で、学歴高めの若い子があまりパフォーマンスだせなくてうーんという状態に遭遇することが多くて、どう活かせばよいのか悩むことが多く、こういうこと考えてたんだな、たしかにそう思うよな、頭いいやつはちがうな!という認識の発生… とかっていうなんか上からの話ではなくて、私自身が技術者としての自分を蔑ろにしていたフシがあり、やばいな、死のう、とか思ったのでした。私の場合はアピールではなくて主に生活のためにみたいなところがありますが、もっとよくないですねそれ。なにしろないがしろはよくない。

闇のトーク

これが聴きたくて、このような出席時間帯となったんですが、ベストトーカーとなったと今ググって知りました。なんかこう、トークの間も何者かに怒られているかのような、つらさが伝わってくる雰囲気もありましたが、めちゃくちゃ笑わせてもらいました。結局WEBのお仕事にはいけなかった私が、命知らずにも楽しみにしていた闇の話で、ああ、こういうのは人の話聴いてるからおもしれえんだな!!!っていう最悪なわかりを得ました。こういうトークが受けている様子をもうちょっとビジネスサイドが観るべきですね。そして、こういうことをやめようとかじゃなくて、こういうの人を殺しかねないんだからやるならもっと金を積んだりとか、とにかくコストが高いことを意識してほしいと思いました。最近あちこちで未必の殺意を感じるので、お前らが死ねという気持ちになっています。もっちゃんさんが生還して面白い話を聞かせてくれて本当によかった。

そして

お昼のラッシュに巻き込まれないために、ここで退出。やぱちーのシールをいただきました。本当はずっといたかったんだ!なんか懇親会が淫靡な雰囲気の名前の店*1で、ドキドキ感があります(?)。いきたかった。次こそ行きます、次回ATNDはよ。

私一身上の都合で去年はやぱちーをスタッフだったにもかかわらずぶっちしてしまったので、まずは聴講参加できたので少し前に進めました。その節は本当にご迷惑を…すみません。

なんというか、ここ何週感か自己否定感がめちゃくちゃ高まっていて、正直明日以降この世界にいるかわからん状態が続いているんですが、この世界の光を見たと思っています。できることがほとんどないわたくしではありますが、次回以降猫の手が必要そうならお手伝いさせてほしいと思いました。楽しかった!ありがとうございました。

f:id:karashi39:20170531023431j:plain

猫です。数年前に岡山で撮影しました。記事とはなんら関係がないです。

*1:えっち・えろ

1Eとなりました

諸先輩各位には大変失礼ですが、30代に突入し、自分で若干引いております。

福利厚生(?)の誕生日プレゼントが届かず、もしや会社的にはまだ20代でいられるのでは!と思いきや、社長夫人が全力で届けてくださり、誤魔化すことができませんでした。

尊敬する先輩が、「プログラマは32でようやく成人、一人前だ!」と言っていて、今時それはどうかと思いつつ16進数に直してみると1E歳、10代に戻れた気がしますがこれは年齢として成立するのでしょうか。

さて、昨年末に立てた今年の抱負ですが、無理、酒、笑いの確保の進捗は思わしくありません。 無理ばかりしすぎて、ヘイトが溜まった時の顔をしており、笑いが確保できていませんし、愚痴を垂れ流してしまいました。ごめんなさい。

仕事が落ち着き、生活も落ち着いたため、今後は酒の確保を最優先に2017年を戦っていきます。

あと、去年のように食あたりをしたりはないですけど、若干風邪気味です。

全く関連しないですが、先日小籠包を作りました。正論棒で殴ってくるやつがいたら、これで対抗する予定です。皆様よろしくお願いいたします。

多摩動物公園に行ってきた

流行に乗って

f:id:karashi39:20170502160622j:plain

多摩動物公園に行ってきました。GW突入したし。 多摩動物公園と言えばあれですよね。聖地というかなんというか。

そうです。

f:id:karashi39:20170502150124j:plain

げんしけんですね。 残念ながら、多摩動物園のくだりはアニメ化されなかったんですが、とても好きなエピソードなので、このゾウを探しに行ってきました。

さまざまな園内展示

f:id:karashi39:20170502150144j:plain

ゾウがいきなり威嚇してきました

f:id:karashi39:20170502150212j:plain

名前の由来は出身地かな?それなら私と同郷です

f:id:karashi39:20170502150225j:plain

単体で見るとよくわかんない看板

f:id:karashi39:20170502150257j:plain

ファサアアっ

f:id:karashi39:20170502150514j:plain

将来自分がどうなるのか気になったのでしょうか

f:id:karashi39:20170502150531j:plain

経験値がたくさん稼げそう

f:id:karashi39:20170502150553j:plain

デカデカと名前がかかれています

f:id:karashi39:20170502150610j:plain

ユキヒョウ、保護色みたいなかんじ?

f:id:karashi39:20170502150629j:plain

実際のユキヒョウ、あんまり保護色してなかった。あと、彼らは目を覚ますとデフォルトの顔がフレーメン反応っぽかったです

f:id:karashi39:20170502154845j:plain

おまえもか…

f:id:karashi39:20170502154911j:plain

たまご広場

f:id:karashi39:20170502154925j:plain

でかい

f:id:karashi39:20170502154947j:plain

何かがうまれたっぽい

f:id:karashi39:20170502161321j:plain

左舷の様子は艦長からビデオ撮影が許可されていましたが、私は写真で

f:id:karashi39:20170502161403j:plain

保護色成功、完全に自然の風景に溶け込んでいます

f:id:karashi39:20170502161448j:plain

観ていたおばあさんが孫に「ほら、サンタさんをのせるやつだよ!」と説明していたけど、「ソリで引っ張るだけでも大変なのに無茶言うなよ」って思ってるんだろうな

ゾウ

お目当てのゾウを観てきました。多摩動物公園には二種類のゾウがいます。アジアゾウと、アフリカゾウ。気候によりちほーがわけられているので、二種類のゾウは結構離れたところにいます。

アジアゾウ

多摩動物公園は軽い山の上にできた感じになってて、アジアゾウはすごい上の方にいます。体力のあるうちに登りたかったので、先に観てきました。

f:id:karashi39:20170502150946j:plain

お城です。PCウォールという仕組みでゾウと飼育員さんがウィンウィンな関係を築いているようです。

f:id:karashi39:20170502151007j:plain

草を折りたたんで食べています。キセルの刻み(葉)を火皿に入れるときみたいな感じの状態にたたむのですが、鼻だけで器用にたたんでいます。

アフリカゾウ

多摩動物公園の目玉、ライオンのいるアフリカちほーですが、いまライオンのあたりはすべて改装中なのでした。そのすぐそばにアフリカゾウがいます。

f:id:karashi39:20170502151034j:plain

こちらのほうが広い縄張りを獲得していました。アフリカとアジアの違いを考えればこうなるのでしょうか。

f:id:karashi39:20170502151058j:plain

この屋根…

f:id:karashi39:20170502151129j:plain

この岩の壁…

荻上さんが大好きなゾウはおそらくこちらのアフリカゾウですね。9巻についてきた同人誌で安永先生*1が描いていたゾウは、背景画と比べるとどちらかわからない感じでした。そこを頑張って現実の多摩動物公園と一緒にしても仕方ないですしね。バカリズムと円楽さん*2も同じことを言っていました。全部にリアリティを求めてしまうと、逆にアレなので、大事なところ以外は想像させるのが良いって。

ひとだかり

アフリカゾウに別れを告げ、歩いていると、工事中のライオンゾーンが見えてきます。

f:id:karashi39:20170502153835j:plain

たぶんそれ、工事のおじさんしか見えないよ…

f:id:karashi39:20170502153919j:plain

ジャパサファリばし

f:id:karashi39:20170502153322j:plain

あちらにひとだかりが!

f:id:karashi39:20170502153601j:plain

なんかすごい並んでます

f:id:karashi39:20170502153621j:plain

こ、これは…

f:id:karashi39:20170502153632j:plain

えっ?

どうやら先日、チーターの三つ子が生まれたらしいです。そのため長蛇の列ができて整理が必要になっていました。めちゃくちゃかわいかった。驚きのあまり写真撮影は忘れました。

ちなみに

f:id:karashi39:20170502153653j:plain

こっちが流行っているものだとばかり思っていました。あと、しんざきおにいさんを見つけることができませんでした。*3

車両たち

おまけですが、園内で見かけた車両たちです。さすがにドンピシャなのはなかったけど、組み合わせたらいい感じです。

f:id:karashi39:20170502154634j:plain

f:id:karashi39:20170502154704j:plain

f:id:karashi39:20170502154718j:plain

f:id:karashi39:20170502154747j:plain

食事処

常設じゃなさそうな屋台が気になりました。

f:id:karashi39:20170502155143j:plain

f:id:karashi39:20170502155203j:plain

まだまだありましたが、電池切れにて撮影できず。そして中華まんもなかったので、はい。まあないですよね。通貨も当然日本円です。しかし、ビールが販売されていたので、飲酒が許されています。めでたい。

ペリカン

忘れてたけど、私はPelikan Hubsの人なのでした。

f:id:karashi39:20170502155322j:plain

アフリカらへんに、ペリカン発見

f:id:karashi39:20170502155335j:plain

手持ちのスーベレーンM800。天冠のデザインはこいつですね。

f:id:karashi39:20170502155350j:plain

近づいてきてくださった。顔が怖いのか、子供が怯えてました。

f:id:karashi39:20170502155358j:plain

ツーショットです。ピントをうまく合わせられないガジェット音痴。

撮影スポット

山になってるので、展示ゾーンの下からだけでなく、上からもせめることができます。たとえば、

f:id:karashi39:20170502160201j:plain

こういうアスレチックがちょっとしか見えない上側の道からは

f:id:karashi39:20170502160214j:plain

近距離でオランウータンが撮影可能だったり(ちゃんとうつってますよ!)

f:id:karashi39:20170502160140j:plain

見晴らしのよさそうな台にのぼると

f:id:karashi39:20170502160046j:plain

昔滅んだ天空の城みたいな風景が見えたりします

感想的なの

良いですね。多摩動物公園。自宅から片道ドアツードア30分かからないというのが便利。あと、多摩地区なのでめちゃくちゃ平和というか、広いので大量のお客さんを受け入れても快適に歩き回れます。この日は1000人単位という雰囲気で園児たちが遠足に来ていましたが、通せんぼを食らったのは1回だけです。そして子どもたちは隠れている動物を見つけるのに優れていて、トラとかを素早く発見してくれます。各所にあるバカ広い休憩用の公園も、おそらく子供の遠足用につくったものでしょう。子供は当然のように動物ダジャレを連発するし、オランウータンをみれば歩き方とかが自然と森の人になるし、コアラが寝ていれば暴れまくって起こそうとする*4し、自由な子供だからこその楽しみ方を見せてくれて本当によかった。子供は最高です。

山の昇り降りを繰り返し、聖地に興奮したあつい体と心は、おみやげコーナーでクールダウンして、足りない人は信号を渡って、園外のおみやげショップもたちよると良いでしょう。

近いし良さを感じたので、また行こうと思います。

*1:流れ星超一郎でおなじみ

*2:楽太郎さんの頃です

*3:見つけても撮影は遠慮したいと思っていました。

*4:ガラスを叩く以外は、振動とかは伝わらなそうなので、コアラはびっくりしません。というか気づかないです。だから大丈夫。

Tachikawa.pm #2 参加しました

色々あって感想が遅くなりました。さすがにもう酒は抜けました。健康です。

様子

様子

ざっくばらんに技術の話をしつつ、良質な飲食で肝臓と財布にダメージを与えました。今回は理事が参加され、とても楽しかった。TOML関係のアレコレ、勉強して行きたいです。というかTOMLをその場で初めて知りました。自分の視野が狭いことはもう諦めて、もっと色々みなさんの話を聞きに行きたい。前回から引き続きのフレッツ話も面白かった。なんか画像からはただの酔っ払いの集団という雰囲気が出てますが、がっつり技術トークを聞けています。

初心者ながら前日に3件の納期をこなした後の私はまともなLTができず、酒の作り方の話をしてしまった、これでははちぴーでやってる事と変わらない…と思いましたが、あきらさんのはからいで私の超絶初心者コードへの指導がみなさんからいただけ、今後こういうことを勉強したら良いのだというヒントをもらいました。

「マサカリ投げればいいっすか!?」という感じで始まりましたが、心地の良いマサカリだった。マサカリが何かはわかってない。青春まっさかり。よろしければ今後も投げて欲しいですが、そのためには今回の学びは学ばないとダメなので、時間が欲しいです。頑張れます。ありがとうございました!

様子

  • 小顔アピール
  • 今日は本当は飲んじゃいけない
  • 開店してるか不明な会場
  • 缶ビール全種類飲み比べの偉業
  • 進捗の可視化
  • ビールというかジュース

次回

まんぱく行きましょうー

いつかあまねも行きたい

飛行機に乗らない件

どうやら、飛行機には乗らん!!!!と言い続けていたら、誤解が生じてきて、海を渡る案件を優先的に外してもらえるようになってしまいました。 怖いものはしょうがないよね、的な。 ちがうんだ、飛行機が怖いんじゃないんだ、空港が嫌いなんだ、私の自由を無限に奪われる気がしてチェックインとかしたくないんです、お金と時間をくださるなら海も渡ります、よろしくお願いします。

自動リロードのON/OFFを切替えられるやつ

PGはじめて半年がいつの間にか経ちましたが、実際はほとんどコードを書いてなくて*1、まずいと思っていました。使ってる言語もPythonオンリーだったし、配列こね回すだけのプログラムだしみたいな、ショボさがあり、本当に自分はPGと名乗って良いのか疑問があります。勉強会行っても技術の話あんまりしないし…

というわけで、めっちゃ簡単な一枚のWEB画面を書く仕事をもらって、やりました。なにげに、ほぼ初めてjavascriptを使いました。本当は2回目です。師匠の作ったテトリス.jsに3行くらいの修正をしたことがあります。いまどきテトリスって…。

つくりたいもの

  • 数分間隔でテーブルが更新される何かがある
  • その様子を社内プレゼンでデモする(らしい)
  • 画面をほったらかしにしてもデータの更新が見たい
  • でも前のレコードがこうでしたというのも見たい

という話だったので、PLが、

  • 自動更新するページ
  • 手動更新するページ

というのを2つ作ってください、あとは全部同じ仕様で!と言ってきました。

しかしこう、めんどくさいし、どうやって作ったら良い感じなの?というのがわかんなかったので、 じゃあいっこのページで切り替えられるようにして、ページ2つ表示すれば良いんじゃね、 どうせ最初から2種類のページ表示するんだし、と思いました。

つくったもの

結果的には、こういう感じになりました。

f:id:karashi39:20170312152146p:plain

基本的には手動更新です。自動更新をONにしても手動更新はできます。自動更新のON/OFFは、見た目的にどうしたらお客さんに説明しなくて済むか*2、わかんなかったので、ON/OFFのボタンは2個用意して、ONになってたらONにするボタンは押せないようにする、という方法でやりました。

コードはこういう雰囲気のものです。家に帰ってから書き直したから、細かい所とか、文字列とかはだいぶ違います。

window.onload = function(){
    var set_auto_reload_button = document.getElementById("set_auto_reload");
    var stop_auto_reload_button = document.getElementById("stop_auto_reload");
    var isAutoReloadEnabled = location.search.substring(1);
    if(isAutoReloadEnabled){
        set_auto_reload_button.className = "pure-button pure-button-disabled";
        stop_auto_reload_button.className = "pure-button pure-button-active";
        setTimeout("location.reload()", 1000 * 10);
    }
}
function set_auto_reload(){
    alert("Auto Relode Mode Start.");
    location.search = "isAutoReloadEnabled";
}
function stop_auto_reload(){
    alert("Stop Auto Relode Mode.");
    location.search = "";
}

うーん、これはいい感じなんですかね?不明。上のコードはサンプルです。実際仕事で作ったやつは、本体はphpも使ってたりとか、なんだかインドの伝統料理みたいな名前のテンプレートエンジンとか使ったりとか、よくわからないながら実装しました。CSSPure.cssです。WEBページが1枚しかないプロダクトなので、おしゃれだけどシンプルなのが良いかな、あと、サイズが小さいのが良い、みたいな発想で選びました。シンプルすぎて、中央に寄せるために自分でcssを書いたりして、だめじゃねえか、って思った。

わからんこと

私自身の課題です。

  • window.locationlocation の違いがよくわからない
  • 「クエリパラメータはよくない」「そんなことはない」という会話についていけない
  • class属性の値を変化させるというやり方が良いのかわからない
  • なんだよ "location.reload()" って、なんでダブルクオートつけんの

つまり、全面的にWEB方面のやりかたの理解が不足してます、というか勉強不足、というか無です。

かんそう

というわけでこう、技術的な成長が全然できていませんが、PLは、「僕の考えたのよりいい感じですね!」ってべた褒めしてくれて、プログラマがどうやったら「明日も頑張ろう!」って思えるのかをちゃんとわかっている感じで、この人たちと一緒に働けるよう、転職してよかったという感想です。ダメなやつでも、初心者のうちはディスりを我慢して褒めれば頑張るし、そのうち成長するよきっと!でも、技術的にもっとこうしたら良いよ!というアドバイスもください。是非ください。お金をください。


*1:たぶんまだスクリプトファイル単位で、10個書いてないと思う

*2:わたくしはヘルプだったので、ご説明に伺う機会もなさそうだったので、説明の手抜きが求められた