タグ

ブックマーク / blog.mah-lab.com (6)

  • 人のコードを引き継ぐときに一番困るのは「使われていないコード」 | mah365

    プログラミングを生業としていると、人のコードを引き継いで開発するなんてこともままある訳ですが、そういうときに一番困るのは「使われていないコード」だなー、としみじみ感じます。 使われていないコードがもたらす弊害 特に動的言語で書かれたコードというのは前触れ無く呼び出される可能性があるため、当に利用されていないのかどうなのか、きっちりと調べあげるのは困難なケースがあります。例えばrubyであれば、method_missingでキャッチしてsendで動的に処理先を振り分けるなんてことをしていると、単純にgrepして利用状況を見るだけでは不十分な場合があります。 そういう意味では「使われていないコード」というよりは、「使われているのか使われていないのかはっきり分からないコード」という方が適切な表現かも知れません。 そういった「はっきりと判断のつかないコード」がある状態だと何が問題なのかと言うと、

    人のコードを引き継ぐときに一番困るのは「使われていないコード」 | mah365
  • 自分がメンテしないコードの品質を上げようとするわけがないよね | mah365

    先日、リーダブルなコードを保つためには、コードが読まれるような文化をつくらなければならないのではないかというエントリを書いたのですが、こんなことを思ったのもある思い出話があったからでした。 「どうしたらこんなコードを納品できるの!?」 僕にとってのはじめてのオフショア。外部設計書を書いて「これ作ってねー」と海の向こうへ投げるだけの簡単な仕事を引き受けまして、設計書を投げた後、いい感じの時間が過ぎた頃に「どれどれ」とコード(PL/SQL)を見てみたのですが、 「このプロシージャ、すごく・・・長いです・・・」 ・・・うーん、外部設計書の章単位でプロシージャが区切られています。 確かにまぁ、設計書通りっちゃ設計書通り。 しかしいろんなプロシージャ間での処理が書かれていてDRYじゃない。共通の設定を読み出すところもハードコードされているので、仕様変更したいときに死んでしまいそう。 「どうしたらこん

    自分がメンテしないコードの品質を上げようとするわけがないよね | mah365
  • Array()を使ったnilガード | mah365

    Ruby Weekly経由。Array()を使ったnilガードを紹介しているGuarding with arraysという記事がナイスでした。 Rubyでのコーディングは常にnilとの戦いなのであります。 例えばparams[:pictures]に配列が入ってくると期待して、こんなコードを書くと、 params[:pictures].each do |picture_id| # なんか処理がある end params[:pictures]がnilのときにエラーになりますよね。なのでこんな風に書いたりするんですが、ちょいダサい。 (params[:pictures].presence || []).each do |picture_id| # なんか処理がある end で、Guarding with arraysで紹介されている方法が、こんな書き方。 Array(params[:pictur

    Array()を使ったnilガード | mah365
  • 2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365

    ちょうど去年の今頃、SonicGardenにおけるherokuでのサービス運用構成をご紹介しました。去年の比較して、今ではheroku番運用されているサービスも増えているかと思いますが、実際の構成例はあまり紹介されていないようです。去年ご紹介した内容も少し古くなっていますので、2013年バージョンとして、再度ご紹介したいと思います! 去年からの変更点 去年と比較して大きく変わっている点は、以下の3点ですねー。 バックアップ取得方法の見直し & 監視の導入 Route53愛してる! ログ取得のアドオンをPapertrailに変更 バックアップ取得方法の見直し & 監視の導入 @interuが去年のJAWS-UG in Nagoyaで講演したように、「当にバックアップ取れてるの?」というのは重要な視点ですね! なので、バックアップを取得するところと、監視するところ、セットで構成するように

    2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365
  • 大は小を兼ねない〜丁度良いソフトウェア開発〜(SonicGardenアドベントカレンダー2日目) | mah365

    SonicGardenアドベントカレンダー、伊藤さんの1日目の記事を空振りで終わらせることなく、次につなげてみたいと思います。20日からはじめたら25日までに最後まで回らないじゃん・・・ということで、20日のうちにこの記事も公開してしまいます。SonicGardenアドベントカレンダー2日目の記事です。 「なんかソニックガーデンらしいことを書け」ということなので、結構悩んだのですが、そういえば「徹底的にシンプルにする」という原則があるなーということを思い出しました。 誰でも開発できるように、シンプルな実装をする 誰でも運用できるように、シンプルな構成にする 誰でも復旧できるように、シンプルなインフラにする といったように、「誰でも◯◯できる」ということを重要視しています。少人数で複数のサービスをまわしているので、あまりに凝ったことをしていると、何かが起こった時に復旧が遅れてしまい、サービス

    大は小を兼ねない〜丁度良いソフトウェア開発〜(SonicGardenアドベントカレンダー2日目) | mah365
  • 転職して1年経った今、改めて自分戦略を振り返ってみる | mah365

    DevLove2012が自分戦略で随分盛り上がっていたらしいので、僕も自分戦略について生々しく振り返ってみようかと思いました。綺麗な自分戦略は語りつくされていると思うので、ドロドロした感じで行こうかと思います。 自分にとって大事なこと まず、自分にとって大事なことは何でしょう? このポイントさえおさえられれば、とりあえずは良いかなと思えるポイント。僕にとっては次の3つが、とても大事なポイントでした。 人に自慢できるようなソフトウェアの開発を続けられること。 ソフトウェア開発に限らず、新しいことに挑戦し続けられること。 家族が路頭に迷わないこと。 それはつまり、 仕事の自慢はしたいです(ドヤッ 作ったものの自慢もしたいです(ドヤッ 気になる事にはフットワーク軽く挑戦したいです(ドヤッ ということ。つまり、常にドヤ顔しつつ(できるような状況にありつつ)家族も幸せにしたい。それは持続的に収入を得

    転職して1年経った今、改めて自分戦略を振り返ってみる | mah365
  • 1