[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
タイトルが全部なんだけど。popupmenu.js
私がひっかかったポイントとして、 popup を bind する際、bind 先は単一の要素、単一の要素を示す HTML の ID ないしは document となることである。document.getElementsByClassName などで取得した複数要素に一度に bind したりすることはできない。
ひよこも会社で初めて後輩を持つことになり、後輩のコードをレビューする機会も出てきた。今、会社で私が働いている部門はあまりコードを書かない部門だが、たまに書く。そこでひよこが挙げた指摘事項をつらつらと並べておく。
かつては JavaScript では var を変数の宣言の先頭につけて変数を宣言してた。しかし、現在は var の代わりに let と const を使うらしい。関数スコープである var とは違い let も const もブロックスコープで変数を宣言できる頼れる奴だ。しかし、const は不変な変数 (つまり定数) として変数を宣言できる。
const hiyoko = 'piyopiyo'; hiyoko = 'hiyohiyo'; // ここがエラーになる。再代入は許されない!
変数の値が変わらない、ということはソースコードを追うときに考えることが減る、ということだ。変数のスコープを狭くすることと、変数の値を変えないということはメンテしやすいソースコードを書くために便利な手段だ。
HTML の要素に onclick 属性を持たせるなどすればイベントのバインドができる。しかし、イベントのバインドは JavaScript 側にまとめて記述する方が以下のような面でありがたい
SWEET v20180317 を書いていて詰まった点にチャットになぜか二重投稿してしまう、という現象があった。この機能は次のような手順でやっていた。前提として以下のコンポーネントがある。
これらは次のように動作する。
私がやらかしたミスは 2 の子コンポーネントがイベントをキャッチするためのイベントバインドを二重にやっていた。つまり以下のようなことをやっていた。
$('#childComponent').on('grandChildComponent-event-sendChat'. sendChatFunction);
$('#childComponent').on('grandChildComponent-event-sendChat'. sendChatFunction);
これで sendChatFunction が二重に動作してしまい、チャットが二重送信されていた。
なお、当初は孫コンポーネントが二重にイベントを発火している可能性を疑っていた。しかし、各イベントにユニーク ID を試しに振ってみたところ、どうもユニーク ID が二重イベントの双方で一致するので二重発火ではなさそうだな、と気づいたのであった。
くだらないミスだけれども、同じようなことで「あれ?」となった際の観点として。
JavaScript でリクエストをリトライし続けるを実際に実装に組み込んだ SWEET の更新を出した (v20180317)。どどんとふが混雑しているときにエラーが多発するというフィードバックをくださった方からもうまく動くよ、というコメントを頂き、この改修は割とうまくいったと見える。
このやり方は並んでいるレストランで行列に並びたくない場合にちょっと時間を空けてすいている時間にまた来ようとするのと同じである。もう一度来店してみてだめならもう少し長い時間をあけて再々来店するだろう。このちょっとずつ (実際には ベースの時間 × 2^リトライ回数) だけ待つアルゴリズムはこの手のリトライをする場合には一般的なものである。例えば AWS でのエラーの再試行とエクスポネンシャルバックオフ - アマゾン ウェブ サービスでも紹介されている。AWS の API を叩く何かを書いているときに RateExceeded での失敗が多発する人はぜひ確認してみてほしい。
ただ、リトライ回数が大きすぎたりすると延々とユーザは待たされるのでその辺はうまく調整しなきゃいけない。このアルゴリズムを使う際の一番難しいところな気がする。ユーザが不自然に思う時間待つ場合はユーザに「再試行中だよ」と表示する必要などがあるかもしれない。
「結婚するには」とか「円満な夫婦生活の秘訣」とか「子育てのいいやり方」とかを語る人は割といっぱいいる。いっぱいいるのが私はいいと思う。結局、それらの助言の大半は役に立たないが、稀に部分的に役に立つものがある。私は、この手のは自分に合ったやり方を見つけるしかなく、それを探すための視野を広げるために他人の助言は有益だと思っている。
ので、ひよこがどうやって結婚したのかを書く。結局のところ Twitter で出会った人に、勉強を懇切丁寧に教えたら結婚してた。だから「Twitter はしとけ、学校の勉強もしとけ」である。
2011年の震災直後、妻になる人が Twitter をちょこちょこ使うようになり、フォローする人を探すために「クリスチャン」で検索したらしい。それで私を見つけてフォローした。それを見て私が何も考えずにフォローを返した。
その後、ちょこちょこ妻になる人が授業の疑問をツイートしていた。情報系の授業に関する疑問であり、ちょうど私がわかる範囲だったのでちょこちょこ答えていた。結果、仲良くなっていた。
……とまで書いて気付いた。その後は「会ってみようか」で会い、そのまま結婚する方向に行ったのであった。私は「Twitter をやって、学校の勉強を教えられるようになっておけばよい」以上の助言をできないのである。どうしようもない。
また、結婚の際もプロポーズすらせず、交際を始めたつもりも私にはあまりなかった。一緒にいたいので結婚する方向で話を進めましょう的な話を私からしただけである。
過程はともかく、最後のやり方はほかの人にはお勧めしない。結婚してもうすぐ4年になるが、プロポーズがなかったことでいまだに妻は私を責めるからだ。これについては周囲の女性からは同情の余地がない、とのありがたい助言をいただいている。