タグ

プログラミングに関するnoonworksのブックマーク (178)

  • プログラマをクソコードで殴り続けると死ぬ - megamouthの葬列

    ここにクソコードがある。 誰が作ったかはわからぬ。それが、どのような経緯でクソコードとなったのか、 あるいは、最初からクソコードであったのか、それらは全てクソコード自身が知るのみである。 ファーストコンタクト ある日、営業からシステム案件を打診されたので見積もりして欲しい。というメールが来る。 とある企業の既存システムに機能を追加する簡単な案件ですが、なななんとソースや仕様書をご支給いただけます! と、それはサンタにプレゼントが貰えると信じて疑わぬ子供のような真っ直ぐなメールである。 ソースコードが入った圧縮ファイルを受け取ったプログラマは、早速、コードを読んでみる。 そのシステムが当にいいコードで書かれているかを判断するには時間がかかるが、 クソコードであるかはおおよそ30分でわかる。 インデントがタブとスペースどちらかに統一されていないとか、フレームワークの誤用があるとか、またはフレ

    プログラマをクソコードで殴り続けると死ぬ - megamouthの葬列
  • 技術の流行についてゆくこと - アカベコマイリ

    以下の記事とはてブを受けての所感。 【翻訳】 2016年にJavaScriptを学んでどう感じたか - Endo Tech Blog はてなブックマーク - 【翻訳】 2016年にJavaScriptを学んでどう感じたか - Endo Tech Blog JavaScript による Web フロントエンド開発環境について総括する記事があると、はてブでは拒否反応が多く見られる。特にフレームワークやライブラリの乱立や JavaScript/CSS の Transpiler 周りに忌避感があるようだ。 確かに複雑である。しかし「それが何の問題を解決しているのか?」に注目すれば単純な要素技術の集合であることが理解できるはず。 例えば Browserify、webpack、Babel などの Transpiler/Bundler 系と ES2015 や TypeScript の関係は、JVM や

    noonworks
    noonworks 2016/11/25
    “未知の概念がたくさん登場して面食らったら、ひとつずつ既知の概念に変換してゆこう。これが技術の流行についてゆくコツだと思う”
  • ある開発者が未だに後悔しているコードとは

    by Andrés Moreira 会社経営者のBill Sourourさんには、かつて一介の開発者だったころに「あのコードにしなければよかった」と後悔している仕事があります。これ以降コードの影響について二重に考えるようになったというほど人生に影響を与えたコードについて、Sourourさんが自身のブログで語っています。 The code I’m still ashamed of https://medium.freecodecamp.com/the-code-im-still-ashamed-of-e4c021dff55e Bill Sourourさんは6歳で初めてコードを書き、15歳のときにはコンサルタントをしていた父親の会社でアルバイトを開始。そして21歳でトロントにある市場調査の会社でコーディングの仕事を得ました。 この会社の設立者は医者で、クライアントの多くは製薬会社でした。Sou

    ある開発者が未だに後悔しているコードとは
  • プログラミングのコードを書く時のタブvsスペース戦争がついに決着

    ついにタブ派・スペース派戦争に軍配があがる! プログラマたちの間で長いこと起こっているバトルがあります。「コード内のインデントをタブでやるか、スペースを5回押すか」です。コーディングと無縁の人にはどっちでもいいじゃんな問題かもしれませんが、プログラマたちにとっては白熱バトルな話題です。 タブかスペースでのインデントは、統一されていないとファイルを開くソフトウェアによってはインデントがぐちゃぐちゃになってしまうのです。特に1つのプロジェクトを数人でやっている時は厄介です。この議論は長いことされているため、プログラマ間では「タブ派」、「スペース派」なんていう区別まで生まれています。海外ドラマ「シリコンバレー」でもこの話題が登場しています。 ということで、Googleグーグル)のデベロッパーFelipe Hoffaが一体どっちがメジャーなインデント方法なのかを、なんと14のコンピュータ言語で書

    プログラミングのコードを書く時のタブvsスペース戦争がついに決着
    noonworks
    noonworks 2016/09/06
    そんな争いは見たことない“プログラマたちの間で長いこと起こっているバトルがあります。「コード内のインデントをタブでやるか、スペースを5回押すか」”
  • 一から自分でコードをバリバリ書くという幻想 #21

    友人からこんなコメントをもらった。「最近 bk ノートが、何か困ると同僚に聞きに行くキャラになりつつありますよ。もっと上から目線で書かないと。するとカコイイ! とか言ってくれる人が出てきますよ」 そんなことを言われても、困ったら助けてもらうというのは事実なんだからしょうがない。そもそも、自分の弱さを認めるが強さの始まりというものだ、うんぬん。こんなことを書けば上から目線っぽい?。。が、やっぱりやめておこう。 話を変える。既存のコードをちまちまリファクタリングして、少しだけ新しいコードを追加して、デバッグして、なんてことを年がら年中やっていると、一から自分でコードをバリバリ書けたらどんなに楽しいだろう、なんてことを考えることがある。大きなプロジェクトの中で何かをやっていると、そういう機会は滅多にない。ぶつぶつ言いながら既存のコードをいじくりまわしていることの方が多いのだ。 が、あるとき、ひと

  • 知っていてこだわらない、それがいいソフトウェアエンジニアの条件なんだと僕は思うんだ - assertInstanceOf('Engineer', $a_suenami)

    週末の午前中、カフェでアイスコーヒーを飲みながらふとポエムでも書いてみようかと思い立ってしまったので、ちょっと前からよく考えていることを書く。当に思いつきで書くので乱文になる可能性が高いけどご容赦いただきたい。そもそもブログを書くこと自体が相当久しぶりだ。 僕ももう 30 をすぎて、プログラマの世界ではさすがにもう若手とは呼べなくなり、教育っていうのはおこがましいけど、まあ自分より若い人たちの指導みたいなことをやらないといけない立場になってきたからこそ、「いいプログラマとはどういう人なんだろう。この人たちはどういうことを学べたら幸せだろう。」ということをよく考えるようになった。そういう話をする。 プログラマは手段のスペシャリストである 世の中には目的・手段論みたいな論調が存在する。 「それは手段だよね。目的をはき違えたらダメだよ。」という話はいたるところでよく耳にするんだけど、僕はこれを

    知っていてこだわらない、それがいいソフトウェアエンジニアの条件なんだと僕は思うんだ - assertInstanceOf('Engineer', $a_suenami)
  • いつ突然会社をやめても問題ないという基準でコードやドキュメントを書く - $shibayu36->blog;

    先に前提を話しておくと、会社は全く辞めるつもりはないし、むしろどんどん会社を良くしていこうと思っている。今回はそういう基準で自分がコードやドキュメントを書いていますよという話。 コードやドキュメントを書く時に、どのくらいきれいにしておくかとか、どのくらいわかりやすくしておくかとかを考えることがある。こんなとき僕は、いつ突然自分が会社をやめて連絡がつかなくなったとしても他の人がある程度理解できるか、を基準にしている。そのためにはあまりいい方法が思いつかなくて仕方なく書いている部分にはちゃんと経緯のコメントを書く。他にも例えば作ったサービスであるイベントを開催する方法のドキュメントを書くなら、全く何もやったことがない人がそのドキュメントを読んだらとりあえず開催できるよう、ドキュメントを書く。当然コードもかっこよさよりも、説明しなくても分かりやすくなるようなシンプルさを追求する。 また、このよう

    いつ突然会社をやめても問題ないという基準でコードやドキュメントを書く - $shibayu36->blog;
  • データ指向設計

    こんにちは、Cygames Research の多胡です。これまで10年以上コンソールゲーム開発を行ってきていて、最近ではハイエンドゲームエンジンを制作しておりました。Cygames でもハイエンドゲームエンジンの開発に携わることになりました。 ゲームエンジン開発を行う上で重要な考え方にデータ指向設計 (Data Oriented Design) というものがあります。今回はこのデータ指向設計を例を交えながら紹介させていただきます。 背景 データ指向設計の考え方は 2009年頃から有名になりました。 この 30年で CPU の性能は1万倍以上になりましたが、メモリの転送速度は10倍にもなっていません。そのため、プログラムのボトルネックはメモリ帯域となることが多くなりました。ゲームにおいても CPU はほとんどの時間がメモリからのデータの転送待ちになっています。CPU の性能を引き出すために

    データ指向設計
  • Gopher・Lisp エイリアン・D言語くん LINE スタンプが登場! 高解像度データも販売 – プログラミング生放送

    プロ生から、プログラミング言語マスコット の LINE クリエイターズスタンプがついに登場! Gopher、Lisp エイリアン、D言語くん(D-man)のスタンプです。 LINE での購入は「プログラミング言語マスコット」で検索してください。 プログラミング言語マスコット LINE スタンプ プログラミング言語のマスコットから今回採用したのは次の3キャラクターです。 Gopher は、Go 言語のマスコット。ホリネズミです。 Lisp エイリアン は、正確には言語のマスコットではなく、Lisp プログラマー以外から見た Lisp プログラマーみたいです。 D言語くんは、D言語 のマスコット。英語では D-man と呼ばれています。 イラストは、タキヲさん(@taxiwon)に依頼しました。スタンプが売れるとタキヲさんにもインセンティブが入るよう契約していますので、どんどん買ってくださいね

    Gopher・Lisp エイリアン・D言語くん LINE スタンプが登場! 高解像度データも販売 – プログラミング生放送
  • エラーメッセージは 2W1H がいいんじゃないか

    良くあるダメなエラーメッセージ エラーが起きたときは、以下のようにエラーメッセージをどこかしらに出力すると思います。 $c->log->error('something wrong!'); ただ、このエラーメッセージって、実際に発生したときには意味がわからないことが多いのです。 $c->log->error('error!'); 気でこういう「error!」とだけ吐くメッセージだと、エラーが起きたことしか伝わってきません。程度の差はあれ意味のわからないエラーメッセージはこの世にあふれているかと思います。 機械的なエラー情報 そういうわけで、たいていは Exception クラスや Logger クラスで多くの補助が受けられるようになっていると思います。 発生時刻 発生場所 stack trace 変数の状態 ただ、このような機械的な情報だけだと、結局、運用上は対応が難しい場面ってのが多か

    エラーメッセージは 2W1H がいいんじゃないか
  • オープンソースなリアルタイムチャットシステム "respass" を3週間で作った - Sketchglass Blog

    WebSocketを用いたオープンソースなリアルタイムチャットシステムrespassをリリースしました。 TL; DR 無職2人が3週間で https://respass.sketch-glass.io/ を作りました。 ソースコードはGitHub上で公開されています。 github.com 自己紹介 @minamorl 無職 Pythonエンジニア GitHub @seanchas_t 無職 C++/TypeScriptエンジニア GitHub はじめに この記事は主に技術者に向けて書かれていますが、そうでない方にも読めるような表現を重視しています。難解な用語にはなるべく注釈をいれました。技術的な話よりも「無職2人がいかにして3週間で作り上げたのか?」という開発フローの話に重きをおいたので、非技術者の方にも楽しく読んでいただけると思います。 なぜ作ったか オープンソースなチャット 近年、

    オープンソースなリアルタイムチャットシステム "respass" を3週間で作った - Sketchglass Blog
  • Composerを速くするために必要だったもの // Speaker Deck

    PHPカンファレンス関西2016の基調講演です。

    Composerを速くするために必要だったもの // Speaker Deck
  • 私がMVCフレームワークをもはや使わない理由

    数ヶ月前、私はなぜここにたどり着き、何が可能かを理解する旅に出ました。この旅は、私にアプリケーションアーキテクチャ、MVCという強烈な宗教に対する疑いをもたらしました。そして、リアクティブ、関数型プログラミングの真の実力に触れたのです。また、シンプルさに集中する旅でもあり、私たちの産業はうまくやっているという考えを捨てる旅でもありました。どんなことを見つけたか興味がある方もいるでしょう。 私たちの見ている画面の背後にあるパターンはMVC –Model-View-Controllerです。まだウェブがなくソフトウエアアーキテクチャも分厚いクライアントが単一のデータベースに原始的なネットワークでアクセスするのがせいぜい、という時代にMVCは生まれました。そして数十年後、MVCはまだ現役であり、衰え知らずでオムニチャネルアプリケーションの開発に使われています。 Angular2のリリースの前にM

    私がMVCフレームワークをもはや使わない理由
  • Blue. No! Yellow! : プログラミング言語の進歩史と生産性にまつわる問答 | POSTD

    世界初のプログラム内蔵方式コンピュータに搭載された、最初のプログラムを書くのに使われた言語は何だったでしょうか? もちろん、バイナリの機械語です。 なぜですか? えー、当然ながら、シンボリックアセンブラがなかったからです。最初期のプログラムは、バイナリで書かなければなりませんでした。 バイナリの機械語と比較して、アセンブリ言語でプログラムを書くと、どのくらい簡単ですか? ずっと 簡単です。 数字を言ってください。何倍ぐらい簡単ですか? えー、まあ、アセンブラは、あなたの代わりに面倒な事務処理を全てしてくれますからね。つまり、全ての物理アドレスの計算です。全ての物理的な命令を構築するわけです。あなたが範囲外にアドレス指定するなど、物理的に不可能なことをしないよう確認します。そして、簡単にロードできるバイナリの出力を生成します。 それによって、軽減されたワークロードは、 膨大 です。 どのくら

    Blue. No! Yellow! : プログラミング言語の進歩史と生産性にまつわる問答 | POSTD
  • 「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ

    こんにちは。技術部 開発基盤グループの諸橋です。 クックパッドでは昨今の多くのWeb企業と同じように、GitHub EnterpriseのPull Requestを使ったコードレビューを広範に実施しています。わたしたちのコードレビューでは、ソースコードの字面にとどまらず、サービスの機能として魅力的かどうかや、保守性を含めた設計が適切かといった議論に発展することも良くあります。 きょうはそんななかで話題に上がった「現在時刻」の扱いかたに関する設計の話を書きます。 背景 サービスを開発・運営している我々には、時間帯によって出し分けたり、特定の期間のみに表示したいコンテンツがたくさんあります。 そのたびにデプロイし直すというのはつらいので(特に24:00に出なくなるコンテンツなど)なんとかしたくなりますが、一方で時限式のコンテンツはその時になるまでちゃんと動いているか確証が取れないので怖いです。

    「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ
  • IT業界を蝕むハンマー釘病

    Graham Neubig @neubig IT会社面接官:「数字を列挙し、3の倍数ならfizz、5の倍数ならbuzz、15の倍数ならfizzbuzzを出力するプログラムを書いてください。」 面接を受けている人:「では、まずTensorFlowをインポートします…」 joelgrus.com/2016/05/23/fiz… 2016-05-24 12:17:16

    IT業界を蝕むハンマー釘病
  • 『ハンマーを持つ人には、すべてが釘に見える。』を英語で言うと『If all you have is a hammer, everything looks like a nail.』 | 英語フレーズを探すならPhrasee

    Master 2016-05-27 15:23:27 アブラハム・マズローの名言。 より意味を強調して訳すと、 "金槌しか持っていないときは、すべての問題が釘のように見える。" というところ。 自分の手段に固執していると問題を正しく捉えられなくなるよ、という戒めの言葉です。 マズローが言っているのは、道具・手段(=ここではハンマー)ありきではなく、 【問題に合わせて道具・手段を変える】 柔軟性が大事なんだよということ。 とはいえ、何か問題が起きたり課題に取り組んだりするときに、過去の経験から「○○すればいいんだ」と脊髄反射的に考えてしまうのもまた人情。 なので、"常に、自分の知らない道具(手段)がある可能性がある"というスタンスを取ることが重要なんじゃないでしょうか。 そう考えておけば、自然と人に聞いたり/相談したりにつながる。 結果としてひとつの道具(手段)に固執することもなくなる。 そ

    『ハンマーを持つ人には、すべてが釘に見える。』を英語で言うと『If all you have is a hammer, everything looks like a nail.』 | 英語フレーズを探すならPhrasee
  • TechCrunch

    A few hours after this morning’s big unveil, Humane opened its doors to a handful of press. Located in a nondescript building in San Francisco’s SoMa neighborhood, the office is home to the startu

    TechCrunch
    noonworks
    noonworks 2016/05/18
    なぜ批判的意見が多いのだろ。「勉強しても仕事にするのは難しいからやめろ」じゃなくて「現実を無視して『これさえやれば高い給料を得られる』と過度に奨励するのはやめろ」と読めるが
  • プログラムの依存関係とモジュール構成のこと - Qiita

    みなさん、メンテナンスしやすいプログラムにするための設計に苦労してませんか? 次々と現れるフレームワークやデザインパターンに振り回されてませんか!? プログラムの設計については、パターン周りを中心に長い間多くの人を悩ませているように見えます。例えば MVC などは 1980 年代からあるものなのに、未だに定期的に議論に上がったり改善されたパターンなどが提案されたり、それを元にしたフレームワークが現れたりします。 僕もそういった設計に悩んだ(でる)一人なのですが、最近は新しいパターンも大事とは思いつつも単純に依存関係をきちんとコントロールする事が大事なんじゃないかと思うようになってきました。 そこで、この記事では依存関係をテーマに見通しが良く変更に強いプログラムにするために重要だと思う事を書いていきます。 この記事は大きく前半と後半に分かれています。前半は依存関係そのものの話や疎結合について

    プログラムの依存関係とモジュール構成のこと - Qiita
  • "Hello world!"

    このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。そういうことにしろください。 10年前、20代になったばかりの頃の僕は、今思えば当に最低な生活を送っていた。高校を中退し、実家とは疎遠で、友達もなく、金もなく、夢も希望もなく、ただバイト先と自宅を行き来するだけの毎日。いつも視界には霞がかかったようで、底の見えない空虚さだけが僕の心を支配していた。 それでも趣味らしいものはあった。オンボロマシンにRedHatを入れ、ダイヤルアップの細い回線で自宅サーバを立て、Perlでガラクタのようなプログラムを動かす。そんな子供じみた遊びだけど、プログラムを組んでいるときだけは空虚さを忘れ、画面の中に没頭できた。 ただ、そのときの僕はもうすでにいろんなものに打ちのめされていて、若者にありがちな全能感などというものは霧散していた。自分がプログラミングで何かを成すだとか、それを仕

    "Hello world!"