「『はてなブログ遅い問題』問題」について思ったコト

読了まで:約7分


概要: 主に​自分の​開発への​思想の​話を​します


大体の​ところと​しては、

  1. [[はてなブログが​遅いのは​だいたい​ JavaScript の​せい​ - も​ふぬこ戦記 http://emija.hatenablog.com/entry/2014/03/11/231940]]
  2. [[はてなブログの​ Javascript コメント抽出してたら、​なんだか​プログラマある​ある​ネタに​なってた​ - Minecraft と​タートルと​僕 http://hevohevo.hatenablog.com/entry/2014/03/12/192656]]
  3. [[些末な​コードレビュー - naoya のはてなダイアリー http://d.hatena.ne.jp/naoya/20140313/1394664578]]

と​いう​辺りの​記事を​見て​思った​コトを​少し​書きます。​とは​言っても、はてな Dis とか​そういう​話ではなく、​僕の​開発への​スタンスでの​話です。​あと​多分​上記リンク先と​本質は​ズレてます。​たぶん。


1. そもそも​プログラミングとか​ DevOps とか​言う​文脈に​おいては、​『人間の​作業は​信用できない』と​いう​前提で、​開発等を​進めるべき

だと​僕は​思ってます。

まあ​これは​一応、​その​作業を​した​人が​信用ならんとか​そういう​話ではなく、​そも​そもの話、​僕の​哲学じゃないけど、​僕は​基本的に​プログラミング等に​関しては、

  1. 人は​皆、​スキル(技術力)や​勘(センス)が​バラバラである
  2. また、​ヒトと​いう​ものは、​常に​ SPoF 唯一無二である
  3. よって、​ _ 属人性_ と​いう​モノを​持った​時点で、​その​作業は​ SPoF 化する

と​いう​考え方を​持っていて、​だから​こそ、

  1. テストは​きちんと​書くべし
  2. テストは​自動で​回すべし (継続 CI)
  3. あと​デプロイ等も​自動化​すべし

と​考えています。​あと​もう​一つ、​僕の​根本的な​考え方と​して、

密結合な​何か を​作ると、​ _ 引き継いだ人が​死ぬ_ (ような​思いを​する​)

とも​考えていて、​これが​まあ僕の​ Catalyst や​ Ruby on Rails の​食わず​嫌いに​繋がってるのだろう、とは​思ってます。

で、​あと、​この​辺りの​塩梅は​難しい​コトだとは​思うのですが、​プログラミングした​何を、

  1. _ 属人性_ と​密結合させた​場合: → 引き継いだ人が​死ぬ (ような​思いを​する​)

  2. _ ライブラリや​ UI_ と​密結合させた​場合: → メンテや​改良する​際に​死ぬ (ような​思いを​する​)

  3. 上記​二つが​組み合わさってた​場合: → _ 綺麗だ……​地獄が​見える……​_ (と​言いながら、​死ぬような​思いを​する​)

と​思っていて、​今回のはてなブログの​ Javascript が、​なんか​カオスってたのは、​その​辺りの​何かに​引っかかったんだろうなぁ、と​僕は​勝手に​思ってます。

で、​次。

2. [自転車置場の​議論 http://0xcc.net/blog/archives/000135.html を​避ける​為には、​その​辺りの​瑣末な​事柄の​チェック等は、​全部​自動化して​機械に​任せるべきだ]

とも​思います。

まあ​これは​ツールが​ないと​ちょっと​厳しいなぁと​思うんですが、​例えは​インデントの​スタイルが​云々、​とかは、

で、​統一すりゃ良い​話だろ、って​今だと​言えますし、​あと、​コードの​整形に​ついても、​例えば​ Golang で​あれば、

$ go fmt

すりゃ​済む話なので、​その​辺りの、​本当に​瑣末な​コーディングに​関する​問題は、

全部​機械的に​処理してしまえば​良いんじゃない?

と​思います。

が、​いかんせんこの​辺り、​いい​感じの​ツールや​ユーティリティが​無いと、

  • 自動化を​行う​ための​ツールから​作り​始めないと​いけない!

と​いう​感じに​なって、​激しく​ Yak Sheving に​なる​気が​しているので、​その​辺り微妙ですけどね。​ツールが​無い​場合は。

まあ基本的には、​コードの​タブ幅だとか、​あるいは​コーディングスタイルとかは、​自動処理できる​ところは​自動処理して、​残りの​クラス設計だとか、​あるいは​コンポーネントを​どこまで​結合させるべきか、​みたいな​話は、​開発者が​面倒みるしか​ないんじゃないかなーと​思ってます。

で、​最後。

3. Javascript が​遅い?​ なら、​[JSX http://jsx.github.io/ (DeNA 製の​方)を​使おう!​]

と、​この、

  • 『はてなブログ遅い​問題』​問題

を​知った​とき、​一番​最初に​思いました。

って​いうか、​なんで​そっちに​話を​持って行く​ねん!​ って​感じでは​ありますが、​ JSX 、​早いです。​あと、​クラス機構とかが​デフォで​実装されてますし、​また、​そもそも​ JSX 自体、

スマートフォン等の​シビアな​環境で、​素早く​動作する​ Javascript を​吐き出す

と​いう​目的で​作られた、と​いう​経緯が​あるので、​モバイル開発も​含め、​Javascript の​実行速度命!​ っていう​場合には、​ぜひとも​使うべきだと​僕は​思います!!!!!!


と​いう​半分​ネタっぽいのは​ここまでにしておいて、​真面目に​思う​ところを​書くと、​そも​そも、

  1. ページが​動的生成である​=サーバサイドで​どうしても​レンダリング時間が​必要と​なる
  2. 広告とか​たくさん​貼付けてる​=外部の​リソースを​たくさん​読み込む​必要が​ある
  3. あと、​結局の​ところ、​Web ページの​重さは、​最後は​ユーザーの​回線と​マシン環境に​左右される

と​思っていて、​まあなんだろう、​一概に、

Web ページが​重い

って​いう​話が​有ったとしても、​それが、

  1. リソースの​読み込みが​遅いのか
  2. UI の​レンダリングが​遅いのか
  3. 最後​ユーザーの​実行環境が​そもそも​クソではないのか

と​いう​辺りの​区別が​付かないと、​まあ対応しようが​ないよね、と​僕は​思います。

まあ​その​辺りに​ついての​改善の​手法と​して、

  1. ロード時間とか​ UI の​レンダリングタイムとかを​ Fluentd へ​ぶち込んだり
  2. あるいは、​Web ページの​依存する​リソースを​ data URI 化したり
  3. も​しくは​画像の​スプライト化とか​して​ HTTP Request を​減らす

と​いう​方法が​あるんだろうなぁと​最近​思ったりしました。

4. と​いう​訳で​本日なんとなく​思った​コトは​以上です。

あと、​ぶっちゃけた​話、​僕の​ Tumblr 上の​ブログも​そうは​ページの​ロードが​軽くないのですが、​これそも​そも​なんでかって​言うと、

  1. ソーシャル系の​ボタン
  2. Javascript を​用いる​広告
  3. Disqus とか​ Zenback とか​その​辺り
  4. 背景画像

辺りが​主な​原因で、​Tumblr 自体が​重いと​いう​よりは、​余計な​モンゴテゴテと​つけてるからだ、と​思っていて、​だから​こそ、​最近​ちょっと​ Tumblr の​テンプレを​見直してるんですが、​まあ、​はてなブログの​レンダリングが​重い​件に​ついては、

  1. ソーシャルボタン外せ
  2. ヘッダと​広告は​金はらって​取っ払え
  3. あと​画像系は​できるだけ​使うな

で​ FA なのではないかと​思います。​って​いうか​アレだ。​その​辺りに​ついては、​まあ大体は、

  1. はてなブログ Pro を​契約し
  2. 自分で​できる​範囲で​レンダリングが​遅くなる​要素を​取っ払い
  3. 超シンプルな​ブログに​仕上げる

と​いう​事を​すれば​良いだけやん?​ と​思います。


ま、と​いう​事で​本日の​雑文は​以上ですね。

あと、​最後に​一つ​言っておくと、​僕の​ブログも​一緒なんですが、​広告を​ベタっと​ページの​トップ等に​貼付けてる​時点で、​その​ページは​ Slowly に​なるのは​当然の​話なので、​その​辺り、はてな側の​問題ではないのではないか?とか​思いました。

まあ広告なしで​重い!​ とかならはてな側の​問題だけど、​広告​ありで​重い!​ って​いうのは、​広告が​足引っ張ってるんじゃねーの?​ とか​僕は​思います。​って​いうか俺の​ページも​ソレで​重いし。

と​いう​事で、​本日は​以上です。​結構​長くなりましたが。

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。