
新しい仕事やプロジェクトを始める時に、コードベースを一から作ることはめったにありませんよね。なじみのないコードと格闘するのは骨が折れますし、新たに取り込む情報の多さを考えると、気の遠くなる思いがします。Rubyを使っていた環境からNestoriaに移った私の場合は、新しいコードベースの学習に加えて、Perlまで勉強しなくてはならなかったため、二重の苦しみを味わいました。そんな私が、できるだけ短期間で生産性を上げるために使った7つの方法を紹介します。 謙虚になろう プログラミングと聞いて、真っ先に”謙虚さ”を思い浮かべる人はいないかもしれません。何しろ”傲慢”が プログラマの三大美徳 の1つに数えられているくらいですからね。そうは言っても、なじみのないレガシーコードに出くわしたら、あまりにも分からないことが多すぎて、何度もミスをしてしまう自分にきっと嫌気がさすでしょう。このような場合は、謙虚
プログラミングを生業としていると、人のコードを引き継いで開発するなんてこともままある訳ですが、そういうときに一番困るのは「使われていないコード」だなー、としみじみ感じます。 使われていないコードがもたらす弊害 特に動的言語で書かれたコードというのは前触れ無く呼び出される可能性があるため、本当に利用されていないのかどうなのか、きっちりと調べあげるのは困難なケースがあります。例えばrubyであれば、method_missingでキャッチしてsendで動的に処理先を振り分けるなんてことをしていると、単純にgrepして利用状況を見るだけでは不十分な場合があります。 そういう意味では「使われていないコード」というよりは、「使われているのか使われていないのかはっきり分からないコード」という方が適切な表現かも知れません。 そういった「はっきりと判断のつかないコード」がある状態だと何が問題なのかと言うと、
前々回はニュースデータを収集するために RSS/Atom フィードを利用する話を書きました。 RSS/Atom フィードには全文配信と要約配信があり、昨今ではページビューを稼ぐため要約配信、特にリンクがリダイレクトになっているものや、本文がカラのものが多いという話をしました。 全文配信 … タイトル、リンク、それに記事本文全体を含むフィード 要約配信 … タイトル、リンク、記事の一部のみまたは本文がカラのフィード フィードデータをためる方法 前回は一部で最近話題の Fastladder のセットアップ方法を紹介し、付属のクローラーを使ってサーバーのデータベースにフィードを溜めるという方法を説明しました。 いずれ別の記事で詳しく述べますが Fastladder はサーバー設置型な上、ソースコードは公開されていますので、クローラー自体を自作することも可能です。 また fluentd は柔軟なロ
2014-10-17 TDDを諦めることと、RSpecをやめること Ruby on Rails Ruby RSpec 開発手法 最近Web上でも仕事場でも、RSpecをやめて別のテストフレームワークに変えようと思っている……みたいな話をちょくちょく見聞きするようになった。僕がRuby on Railsで開発を始めた2012年8月当時、すでにRSpecはテストフレームワークのデファクトと言ってよかった。一斉を風靡したRSpecが、なぜ今見直され始めているのか。 きっかけになったのは今年4月の、Rails作者であるDavid Heinemeier Hansson(以下DHH)によるTDD is dead発言だと思う。 5月にはこの発言によるTDDへの風評被害を重く見たKent Beck*1が、レフリーにMartin Fowler*2を迎え、DHHと相対するドリームマッチが開催された。この会談の
https://www.youtube.com/watch?v=VV7b7fs4VI8 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 パッケージ(apt, yum, gem等)レポジトリのホスティングサービスであるPackageCloudを開発している、James Golickの講演です。 パフォーマンスの高いハイクオリティなソフトウェアをデプロイしたければ、あらゆるレベルでバグ修正ができるようになること。 まず、エピソードとして紹介しているのが、友人の会社のサイトが落ちて、あいにく、その会社のエンジニアが出払ってしまっていて、どうにかしてほしいと助けを求められたときのこと。 ソースコードを見たことない。 システムの構成を知らない。 phpは詳しくない。 SSHでアクセスできる情報だけはある。 とい
WEB+DB の新しいやつがちょっと前にでてます. コードレビュー特集だそうな. 時が経つのは早い. まだ次の原稿書いてないのに… そういえば前にコードレビューの話を書いた気がして, 見なおしたところ かきかけ だった. せっかくなので続きを書いてみることにします. といっても何書くつもりだったか覚えてないのでだらだらと. WEB+DB PRESS の特集は, 主にこれからコードレビューを導入したい人に向けて書かれている. 幸か不幸か私はコードレビューを義務付けれたプロジェクトで働いているため, 導入には苦労していない. かわりにレビューをちょろまかせない面倒はある. ある意味でコードレビューを <やらされている>. もちろんこの言い分は大げさだ. 必要性に異議を唱える気はない. ただ異議はさておき自分の意向とは無関係にコードレビューに参加している気分を書いた話は あまり目にしないので,
Railsアプリが大きくなっていくにつれてうまく機能しなくなっていくパターンというものがあり、それに関してReverb.comが簡単に5つのアーキテクチャアンチパターンとしてブログにまとめていました。 Reverb.com Dev Blog | 5 architecture anti-patterns and solutions for large Rails apps Reverb.comはミュージシャンのためのマーケットプレイスサービスです。 紹介されている内容は、ドメインレイヤーのコードがRailsの想定する枠組みの外に配置されている構造を前提としいます。具体的には、ドメインレイヤーのクラスをActionControllerやActiveRecordといったRailsのアーキテクチャの範疇からは独立したものとして構築している形を指しているようです。 (1) 責務を抱えすぎたサービスオ
追記 まじで鳩さんのスライドでDCIについて理解したつもりになるの危険だからやめた方がいいです。せめて d.hatena.ne.jp/digitalsoul/20… を読みましょう。DCIはエンドユーザのメンタルモデルを実装に落とし込むための設計パラダイムです— Naoto Takai (@takai) December 27, 2012 ということで、以下の内容はすべて間違いである可能性が高いです。 元記事 これまでのあらすじ: ActiveStrategy はイマイチなアプローチだよね。 文脈によって可能な挙動が変わり、モデルは基本的にデータのみを持つことでクリーンな状態を保とうといっているのに、便利な include を提供する ActiveStrategy はやはりイマイチなアプローチで、挙動の切り分けが容易になるのはいいことだけれど、それって今までの include 地獄から何も
面白そうなネタがあったので、自分なりの考えをまとめてみる。 Ruby/Rails 用 DI コンテナ Dee をつくった、あるいは Ruby のカルチャーについて この記事はRuby用のDIコンテナの話題なんですが、DCIについても言及されているようです。比較軸はDIそのものというより、サービスとDCIだと思うので、それについてダラダラといくつか考えをまとめてみます。多分も返事になるようでならないかも。それと宗教上の都合でDDDの視点から書きます…。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に”サービス”って言葉が何を指すのか結構曖昧です。 サービスは簡単にいうと手続きとか振る舞いのことですが、細かくいうと、PofEAAでいうサービスと、DDDいうサービスは、目的が異なります。前者はアプリケーションのためにドメインモデルを再利用するためのものです。後者はドメインの知識
この前のブログでモデルのビジネスロジック層を分ける記事書きましたが、あれから色々見て改めて考えた。 で結論service層を設けてユーザ登録部分を移した。 1 class UserRegister 2 3 def find_user_by_provider_and_uid 4 @auth_provider = AuthProvider.where(provider: @auth[:provider]).where(uid: @auth[:uid]).first 5 @user = User.where(user_id: @auth_provider.user_id) if @auth_provider 6 nil unless @auth_provider 7 end 8 9 def create_account(auth) 10 nil 11 end 12 end 1 class Use
最近の RSpec は、それまで obj.stub(hoge: value) と書けたものが、 allow(obj).to receive(:hoge).and_return value と書かないといけなくなったりとか、正気の沙汰とは思えないような変更をしたりするので、何年かぶりに Test::Unit を使ってみようとリハビリ中です。 RSpec は、テストケースを入れ子にできたり、テストケースや example がクラスやメソッドではなく、文字列で自由に書くことができたりしたのが良かったのですが、最近の Test::Unit ではそれもできるようになっています。 [ruby-list:48926] [ANN] test-unit 2.5.2 このリリースはとみたさんに使ってもらえるように改良したリリー スです。新しく追加した--locationはRSpecの--line_number
たまに以下のようなロジックで値の一意性を保証しようとしているコードを見かけます。 if ( 既に値が存在するか ) { ...(1) print "別の値にしてください" } else { 値をどっかに保存する処理 ...(2) print "保存しました" } 一見うまく動きそうなんですけど、これは複数プロセスや複数スレッドが同時に実行されるような環境ではうまく動きません。 例えばwebアプリでDBに値を保存する場合などは、こういうことが考えられます。 ユーザーAが nyan という値を送ってきます まだ DB には nyanという値が存在しないので、 (1) で else 節に入ります ここでユーザーBも偶然 nyan という値を送ってきました まだ DB には nyan という値が存在しないので、 (1) で else 節に入ります else 節に入ったユーザーAのリクエストは(2)
綺麗なコードと汚いコード。どちらのプログラマと一緒に働きたい?~可読性を意識したプログラム言語はRuby, CoffeeScript, Elixir #Ruby #CoffeeScript #Elixir 2014.02.04 Category:技術コラム Tag:CoffeeScript ,Elixir ,Ruby CodeIQの出題者である@tbpgrさんからの寄稿記事です!どうして汚いコードができてしまうのか、どうやったら綺麗なコードが書けるのかをわかりやすくポイントで解説しています。 また、綺麗なコードを書くには、言語の特性も関係するということで、可読性を意識したプログラム言語として、Ruby、CoffeeScript、Elixirを挙げています。 これであなたのコードも綺麗になる!? by CodeIQ運営事務局 プログラムの可読性について CodeIQでRubyやCoffeeS
前編はこちらです 4:テストに伴うコスト 2014年5月27日 audio 今回のテーマは、テストとTDDのマイナス面です。 テストをやりすぎることがあるか、そして機能的なコードよりテストを重視するチームには問題があるかという点について議論しました。 議事録 Davidが会話の口火を切りました。 「トレードオフについて話すなら、当然そのマイナス面について理解しなければならない。なぜなら、欠点のないトレードオフは存在しないからだ」 このあと彼は続けて、TDDは開発者に何かを強制するわけではないが、ある一定の方向に導くことは確かだと言いました。 それから、最初の問題点として、テストの過剰な実施を取り上げました。 TDDでよく言われるのは、テストに失敗せずして1行のコードも書くべきでないということです。 Davidも当初はこの考え方を合理的だと思っていましたが、そのうち、テストをやり過ぎる傾向が
http://rubyrogues.com/176-rr-rails-as-an-soa-client-with-pete-hodgson/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 「システムの設計は、その組織のコミュニケーション構造を反映したものになる。」というコンウェイの法則について、ThoughtWorksのPete Hodgsonは、それを逆のかたちで、つまり、採用すべきアーキテクチャの特性を活かすために人と人とのコミュニケーションをどう改善するかということに、かなり時間をとっていると語っています。 コンウェイの法則は、重力のように不可避なもの。うまく活かせるように変わるか、対応できずにダメになるかの二者択一だ。 各サービスの担当チームが細分化されている大企業の顧客において、SOA(
後編を公開しました(2014/10/8) これは、テスト駆動開発(TDD)とTDDがソフトウェア設計に与える影響についてKent Beck、David Heinemeier Hansson、および著者の3人で行った一連のディスカッションの議事録です。 ディスカッションに至った経緯 あるセンセーショナルな発言とブログ記事が発端となり、お互いの見解と経験について理解を深める目的で、話し合いが持たれました。 この会話のきっかけとなったのは、 DavidがRailsConfで行った基調演説です。 彼はRailsコミュニティでTDDおよびユニットテストへの不満を表明しました。 程なくして、彼はいくつかのブログ記事を公開しましたが、そのうちの最初の記事で “TDDは終わった” と宣言したのです。 それから2~3日後、Davidのその後の記事について私がタイプミスの修正を送ったところ、 Davidは彼の
はじめに 独学でプログラミングを勉強しても実務に通用しにくい理由 - 25歳ニートが35万円で上京を企むブログを読んだときに、僕自身もまた不安定労働から、ある程度「これだったら自分できそうだ」という気持ちで取り組み、独習のつもりで幾つものプログラムを書いたりしていた。だから、ニートからプログラマを目指して、社員として今頑張ってます、というのはすごく仲間意識を持ってしまうし、同じように頑張ってほしいという気持ちはある。 確かに、上の記事の趣旨自体、つまり「独習で学ぶことは、実務上でカバーできない部分がある」という側面があることは認めつつ、しかし、自分自身は独習したことが案外実務上で役に立っている部分もあり、その部分は明確にしたほうが、今後同じように独習して、今度プログラマを目指す人々において役に立つのではないか、と思うので、この記事を書こうと思う。 この記事で扱う「Webアプリケーション開発
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く