タグ

関連タグで絞り込む (203)

タグの絞り込みを解除

CodeReviewに関するraimon49のブックマーク (165)

  • 16年間うごいているWebアプリケーションが抱えていた技術的負い目を考察する | GMOメディア エンジニアブログ

    技術推進室の浅井です。 技術的負い目とは、世に言う技術的負債のことです。 社内で技術的負債の定義、ことばの表現を考える中で、「『負債』は優れた比喩表現であるものの、第三者への返済義務がない点で会計上の負債とは異なり、言葉としての問題も多く、不必要な議論を生み出しやすい」などの指摘があり、代わりの表現として社内の一部で使われている言い回しです。 最近社内のたいへん古いシステム(16年の歴史があります)の技術推進を行う機会があり、たくさんの技術的負い目と向き合いました。 そのような古いシステムの技術的負い目と向き合ったとき、エンジニアはストレスを感じ、ネガティブな感情を抱いてしまいがちです。負い目に苦しめられることで過去のコードや技術的判断に対して不満を言いたくなる気持ちはとてもよくわかりますし、実際に私もたくさん苦しんでたくさん不満を言いました。 ですが技術的負債の文脈でよく言われるとおり、

    16年間うごいているWebアプリケーションが抱えていた技術的負い目を考察する | GMOメディア エンジニアブログ
    raimon49
    raimon49 2015/12/26
    やっぱり静的解析は大事だ。そしてレガシーな歴史と向き合うのに銀の弾丸は無いとしみじみ。
  • プログラマ向け:自分の強みや得意分野を見つける方法 - give IT a try

    質問:あなたの強みや得意分野は何ですか? プログラマのみなさんに質問です。 あなたの強みは何ですか? 胸を張って「任せとけ!」と言える得意分野はありますか? これはソニックガーデンの採用面談でよく聞かれる質問です。 僕もときどき採用希望の人と面談(という名の雑談)をすることがあるのですが、この質問に対して「はい、私はxxが得意です!」と即答できる人はかなり少ないです。 まあ、入社を希望する段階でいきなり「これが得意です!任せてください!」と言うのはかなり勇気がいりますよね。 下手に偉そうなことを言って、あとから「なんだ、大したことねーな」と思われたくない、という不安もきっとあるでしょう。 僕もかつては即答できなかった 何にせよ、即答できない気持ちはよくわかります。 実際、ソニックガーデンに入社した当時の僕もそうでした。 しかし、入社してから3年ほど経ってみると、いつの間にか僕にも得意分野(

    プログラマ向け:自分の強みや得意分野を見つける方法 - give IT a try
    raimon49
    raimon49 2015/12/21
    ついこだわってしまうところが強み、良い話。
  • Androidソースコードレビューで指摘する事が多い項目まとめ2 - こやまカニ大好き

    去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目についてまとめてみようと思います。 ミリ秒で時間を指定する時に自前で計算している 1000L * 60L * 60L * 24Lのようなコード。 TimeUnitを使いましょう。 24時間の場合は以下のように書けます。 TimeUnit.DAYS.toMillis(1L) ある文字列がhttp/httpsで始まるかチェック URLUtil.isNetworkUrl()を使いましょう。 ただしequalsIgnoreCaseで判定してます。 ベースURLにパラメータを付与していってURLを生成したい StringBuilder#append("&key=

    Androidソースコードレビューで指摘する事が多い項目まとめ2 - こやまカニ大好き
  • nginx の設定をレビューするときの観点をまとめてみた - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。 インフラチームの野島(@nojima)です。 チームのメンバーに nginx の設定について気をつけるべき点を共有するために、レビュー観点を書きました。 せっかくなのでここで公開します。 ほとんどの項目は自分やチームのメンバーの実体験に基いています。 レビュー観点 server server_name が他のやつと被っていないか。 listen する IP アドレスが同じ場合、server_name で区別できないといけない。 TLS を使う場合、SNI をサポートしないクライアントでは TLS 用の設定が default_server のものが使われる点にも注意。 TLS を使う場合、listen ディレクティブに ssl オプションを書いているか。 location location のマッチの順番に注意 正規表現の location は前方一致の location より

    nginx の設定をレビューするときの観点をまとめてみた - Cybozu Inside Out | サイボウズエンジニアのブログ
  • iOSアプリケーションでコードベースのレイアウトを積極利用する - クックパッド開発者ブログ

    海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 XcodeにはInterface Builderと呼ばれる、リッチなGUIを持ったデザインツールが付属しており、これを用いて画面のレイアウトを構成することが主流となっています。弊社ブログでも、iOS開発でstoryboardとxibをうまく使い分けるプラクティス等の記事で、GUIベースのレイアウトについて触れています。しかし、現在私が担当しているプロジェクトでは、Interface Builderを用いずに、レイアウトの大半をコードで記述しています。 今回は、コードベースのレイアウトを実装していく中で得た知見を、以下の3つの部分に分けて共有したいと思います。 Interface Builderを用いたレイアウトとコードベースの

    iOSアプリケーションでコードベースのレイアウトを積極利用する - クックパッド開発者ブログ
    raimon49
    raimon49 2015/11/04
    PureLayoutを使った時の制約指定とライフサイクル
  • Redis 本番障害から学んだコードレビューの勘所

    Redis不適切利用による問題は番運用が始まってから顕在化することが多く、時限爆弾みたいな存在です。事前に防ぐにはコードレビュー段階で叩くしかありません。 Redisはスクリプト言語と相性が良く、適切に利用するとRDBと比較し驚くほど高速なプログラムを組むことができます。昨年尊敬する先輩にコードレビューで斧100くらい(レビューコメント)投げられて血まみれになりつつ学んだことを、まとめて書いてます。概要は『消えても良いデータならRedis』 Redisのメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩き起こされました。どうやらアクセス障害みたいです。 何人かで実機確認したら、まったくゲームが遊べない。データ不整合怖いのでメンテIN。 ほどなくしてRedisが溢れメモリ不足で新規書き込みが出来なくなっていると判明。サーバのメモリ容量は64GByteでこれ以

    Redis 本番障害から学んだコードレビューの勘所
  • プログラミングスタイルガイドのスタイルガイド - Qiita

    文書は、プログラミング言語向けのスタイルガイドに向けたスタイルガイドである。 文書へのフィードバックはQiita上のコメントにて受け付ける。 構造 対象を明確にする そのスタイルガイドがどのような状況のどのような対象に向けたスタイルガイドであるか規定すること。 状況や対象は広すぎてはならない。 理由: 対象はスタイルガイド記述者には自明かもしれないが、似て非なる言語に誤用されたり、特定分野のアプリケーション向けスタイルガイドが他分野のアプリケーションを理不尽に拘束したりすることがある。これを防ぐべきである。 良い例: 「文書はRuby on Railsアプリケーション向けのスタイルガイドである」 「スタイルガイドはX社におけるRubyプロジェクトに適用すべきスタイルを規定する」 悪い例: (何も書かない) 「文書はX社におけるすべての開発に適用される ... 述語メソッドや述語関

    プログラミングスタイルガイドのスタイルガイド - Qiita
    raimon49
    raimon49 2015/08/26
    誰にとっても自明とは限らない慣習を明示するのは凄く大事だよね。
  • コードの品質を維持したまま開発スピードを上げる | POSTD

    高品質のコードベースは、反復作業やコラボレーション、メンテナンスを簡単にすることで、長期的な開発のスピードを上げてくれます。Quoraではベースコードの品質は重要だと考えます。 高品質のコードを維持することは利点がありますが、その反面かなりのオーバーヘッドが発生し、実際の開発のサイクルに時間が掛かってしまいます。このオーバーヘッドと利点の折り合いを付けるのは難しい問題です。この場合、2つの選択肢しかないように思えます。低品質でコードスピードが速いか、もしくは高品質でスピードが遅いか。スタートアップは素早い開発サイクルに最適化しているので、多くの人は低品質で進めたほうがいいと思っています。 このジレンマは解消できます。ツールやプロセスを工夫することで、コードベースの品質を維持したままスピードを速めることができるのです。この投稿では、コードの品質に関しての私たちの考えや、2つの世界を共存させる

    コードの品質を維持したまま開発スピードを上げる | POSTD
    raimon49
    raimon49 2015/08/25
    モジュール単位でオーナーシップを明確にしてレビューアを自動アサインするアイディア。PythonならスタイルガイドはPEP8一択で良い気がするけど、文字幅の制限がなかなか厳しいんだよな。
  • GitHubでコードを「公開しない」リスク?サイバーエージェント流、OSS時代の開発哲学 | SELECK

    今回のソリューション:【GitHub(ギットハブ)】 〜「GitHub」でソースコードを社内・社外に公開し、オープンなコラボレーションを実現した事例〜 数々のサービスを生み出し続けるエンジニアリング集団、株式会社サイバーエージェント。そのエンジニアリング文化の中心には、「GitHub」を活用したオープンなコラボレーションがある。 同社ではプロダクトのソースコードは可能な限り全社公開すると同時に、 「スターインセンティブ制度」というリポジトリのスター数に応じたインセンティブを与える制度により、自身の書いたコードを社外へ公開することを推奨している。 ▼そもそもGitHubって何?という方はこちらの記事もどうぞ! チーム開発を変える「GitHub」とは?導入方法・使い方を徹底解説!【第1回】【導入編】 ソースコードを可能な限り公開していくという流れは、ITベンチャーのみならず世界的大企業にも派生

    GitHubでコードを「公開しない」リスク?サイバーエージェント流、OSS時代の開発哲学 | SELECK
    raimon49
    raimon49 2015/07/08
    「Must」と「IMO(In My Opinion)」 レビュアーのアサイン方法方針が参考になる。
  • 気が狂った設計 - hitode909の日記

    大きめのこととか,自信のないところを触るときは,コード書く前に,こういう作戦考えてみたけどどうですかって聞いてみたり,こういうことやりたいんだけど一緒に考えませんかって,いっしょに話して設計考えたりするとよいと思う. 一緒に考えたすぐあとに気が狂った設計とか言い出したらおかしいので,未然に変な設計のままコード書いてしまうのを防げる. 特に辛い気持ちになるのが、「気が狂った設計」「クソコード」「(こんな実装は)有り得ない」といった言葉だ。 Pull Requestのレビューが辛くて会社をやめたい 単に言葉が強いのはよくないと思う.我が社にはそんな強い言葉でレビュー書く人はいない. 我が社には,普段から強い言葉を発する人もいなくて,みんな物腰柔らかな変な言葉を話している. 言葉使いや文体は,ずっと過ごしてると同僚から移ったりするので,普段からそういう言葉を話していると,全体の雰囲気も悪くなりそ

    気が狂った設計 - hitode909の日記
  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
    raimon49
    raimon49 2015/06/12
    どれも腑に落ちる内容。個人的にもポジティブなフィードバックを送る事は大事にしてる。3つ以上モックが登場するテストは要注意っていうのは、気にかけていなかった。
  • エンジニアに必要な説明能力 - Konifar's WIP

    最近、業のTaptripで新機能の開発やコードレビューの数が多くなってきた中、 やはりエンジニアに必要なのは説明能力だなぁと感じることが多々あります。 これは受託の場合は全然違うよと言われるかもしれないし、裁量のある環境だけの話なのかもしれないですが、あくまで自分の感じたこととして考えをまとめておこうと思います。 エンジニアは説明することが多い 開発職じゃないとピンと来ないかもしれないですが、何かを説明することって意外と多いです。 例えばバグ修正をする時に、一番理想的な修正をするとテストも含め2日かかるけど、暫定修正なら半日で終わるみたいな場合。 「ユーザーへの影響が大きいので暫定修正で直して、次のリリースで回収できるように調整します」みたいな説明をしたりします。 もっとコードレベルの話で言うと、例えばこんなやりとりをしたりします。 ほとんど伏せているのでわかりにくいかもしれませんが、

    エンジニアに必要な説明能力 - Konifar's WIP
    raimon49
    raimon49 2015/05/02
    クソコードに対して「クソだから直して。以上」で終わらせてしまうと、教育効果も無いしアレという話。謙虚(Humility)、尊敬(Respect)、信頼(Trust)のHRTほんと大事。分かってる人ほど丁寧に問い掛ける。
  • LINEが開発体制、グローバル対応の秘策、サービス基盤の変遷を解説

    LINEが開発体制、グローバル対応の秘策、サービス基盤の変遷を解説
    raimon49
    raimon49 2015/04/30
    >コードレビュー(ソースコードの査読)も、参加者は同じ責任者としてフィードバックすることが大事。相手を尊重する意識の上で行われるとき、成熟したコードレビューが可能になる。 / これを当たり前にやるの難しい
  • CoffeeScript スタイルガイドの公開とその目的 - クックパッド開発者ブログ

    こんにちは、クックパッド編集室の太田(@os0x)です。 普段は料理動画やクックパッドニュースなど、メディア寄りのサービスを担当しながら、社内のCoffeeScriptを中心としたウェブフロントエンドコードレビューなどを行っています。 今回は、そのCoffeeScriptのレビューを円滑に行うためのコーディングスタイルについてお話したいと思います。 Style guides in Cookpad クックパッドでは、github.com上でスタイルガイドを公開しているのをご存知でしょうか? cookpad/styleguide これまで、Ruby / Objective-C / Java のコーディングスタイルが公開されていました。そして、日 CoffeeScript のコーディングスタイルを追加しました。 さて、そもそもスタイルガイドとはなんでしょうか?コーディング規約とも言われたりし

    CoffeeScript スタイルガイドの公開とその目的 - クックパッド開発者ブログ
    raimon49
    raimon49 2015/04/16
    MUSTとSHOULDを分けるスタイルガイド良いよね。
  • 唐突な Diff に負ける - @kyanny's blog

    目的はわかったけどどうしてこの変更で達成できるの?がわからない、文脈が抜け落ちている Diff というのがある。唐突な Diff、と呼ぼう。 唐突な Diff との戦いには二種類ある。 一つは自分が唐突な Diff を作らない、という戦いで、ちょっと込み入ったバグ修正など、変更する箇所は少ないがそのぶん意図がわかりづらくなる場合。自分はバグの原因を解明する過程で関連するコードを読み込んでいるので「流れ」を把握できているが、レビュアーが Diff そのものから全体像を思い描くのは難しい。リグレッションテストを追加してもやはり文脈なしでは説明不足だ。そういうときはコメントを丁寧に書き、場合によっては関連コードのリンクを添えつつステップを順に説明したりする。これにはそれなりに手間と時間がかかる。 もう一つは唐突な Diff に出会ったときちゃんと質問する、という戦いで、「なんだこれは?」と言いた

    唐突な Diff に負ける - @kyanny's blog
    raimon49
    raimon49 2015/03/30
    >空 Description の Pull Request が無言 mention で催促されてはマージされていくのを尻目に自分の Pull Request の N days ago が増えていくのを見るのは悲しい。
  • クリアなコードの作り方: 正規表現はマッチしすぎに気をつける - 2015-03-25 - ククログ

    正規表現は短い表現でたくさんのパターンを記述できるため適切に使えばとても便利な機能です。しかし、雑に正規表現を使ってしまうと思わぬバグになったり、わかりにくいプログラムになってしまいます。「動く」正規表現は書けるけど、「適切な」正規表現はまだ書けない、という初級者向けの話です。 例: 拡張子を変更する 正規表現を使って実現することが多い処理として「拡張子を変更する」という処理があります。次のような処理です。

    クリアなコードの作り方: 正規表現はマッチしすぎに気をつける - 2015-03-25 - ククログ
    raimon49
    raimon49 2015/03/28
    マッチしすぎる正規表現を防ぐ
  • ES6時代におけるWeb開発者とセキュリティ業界の乖離

    enchant.js meetup! ショートセッション「はじめてのenchant.js AtlasXでゲームをつくる」wise9

    ES6時代におけるWeb開発者とセキュリティ業界の乖離
    raimon49
    raimon49 2015/03/09
    読めないから評価しようがない問題。
  • ピアコードレビューの実践的レッスン | POSTD

    Salsita Softwareは、複雑かつ最新のウェブアプリケーションとモバイルアプリの開発に特化する専門のソフトウェア・コンサルティング企業です。Salstiaの幅広い専門分野にまたがるチームは、ワールドクラスのソフトウェア・エンジニアはもちろん、グラフィックデザイナー、UXスペシャリスト、プロジェクトマネジャーそしてQAエンジニアから構成されています。 Salsitaのエンジニアは2つのグループに分かれており、フルスタック・エンジニアはサーバサイドの実装(Node.jsとPython)、クライアントサイドのJavaScriptAngularJS、React、 BackboneとEmber)、そしてモバイルアプリの開発(iOS、Android、PhoneGap)を担当します。フロントエンドエンジニアは、モジュール性が高くメンテナンスが容易、かつレスポンシブなユーザインターフェースを

    raimon49
    raimon49 2015/03/04
    目安として開発に費やす時間の25%をコードレビューに振り分ける、パッチサイズに気を遣う。アーキテクチャについては設計書で議論。
  • テンプレートをDRYにするのは慎重にやったほうがいいですよねというお話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    社内でレビューおじさん業してて書いた内容ですけど守秘する必要ない情報なんでちょっと内容書き換えてオープンアンドシェアーします。 文 見た目とかUIというのはソフトウェアの中でめちゃめちゃ柔らかい部品(些細な変更されることが多い部品)なので、「同じような部品だから共通化しちゃおう」ってやると失敗することが多いです。 特に気をつけるべきなのは、たとえばコンテンツをランキング形式でテーブルで表示する画面と、新着から順にテーブルで表示する画面があって、このふたつのテーブル部分は一緒だからパーシャルにしちゃおう、みたいなやつです。 見た目とかUIというのはソフトウェアの中でめちゃめちゃ柔らかい部品、というのがここで効いてきて、「新着とランキングは基的に同じ表示なんですけど、ランキングのほうではランクがアップしたかダウンしたかのアイコンを表示してほしいんですよね〜」とか言われたり、「今見てるページ

    テンプレートをDRYにするのは慎重にやったほうがいいですよねというお話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    raimon49
    raimon49 2015/02/27
    >見た目とかUIというのはソフトウェアの中でめちゃめちゃ柔らかい部品(些細な変更されることが多い部品) / 知見。ここが結局テストの書きづらさにも繋がってる。
  • クックパッドモバイルアプリの開発体制とリリースフロー - クックパッド開発者ブログ

    こんにちは、技術部モバイル基盤グループの @slightair です。 今回は、クックパッドのモバイルアプリをどのような流れで開発しているか説明したいと思います。 この記事では技術的な話ではなく、どのようにして、どのようなことを考えて僕らがモバイルアプリを開発しているかに触れたいと思います。 開発体制 クックパッドにはモバイルアプリを専門で開発するようなチームはありません。 必要に応じて、誰でもモバイルアプリ開発に取り組みます。 機能追加・修正を行ったらリポジトリにプルリクエストを送ります。 プルリクエストが来たら、アプリ開発を行うエンジニア同士でレビューします。 様々な修正をひとつのバージョンにまとめるのは、僕が所属する技術部と後述するリリースマネージャーで行います。 リリースマネージャー バージョンごとに、そのリリースの責任をもつリリースマネージャーをひとり選びます。 リリースマネージ

    クックパッドモバイルアプリの開発体制とリリースフロー - クックパッド開発者ブログ
    raimon49
    raimon49 2015/02/25
    プルリクに締め切り日を設けるの良い。