Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

yuhei-tsukahara.com 2018 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy
「プログラムは誰にでも読めるように書くべきである」 そう言うことも聞くし、今日行った会社の説明会で少しそんな話を聞いたので、自分の意見をまとめて見ようと思う。 なお、あくまで持論であり、今の考えを纏めたものなので、異論は認める。 4/16追記:まず、反響に自分が一番驚きました。 自分の文章が下手で、言いたい事がうまく伝わっていないところもあるので、原文を残しつつ修正稿を上げようと思っています。が、少々忙しい状況が続くので、コメントに対する返信なども含めてしばらくお待ち下さい。 論理学的命題と定義 結論を言うと、「誰にでも読めるソースコード」は存在しない。言い換えれば、命題「誰にでも読めるソースコードは存在する」は偽である。 これは厳密には証明出来ないが、悪魔を連れてくる(と言う)ことはできる。つまりは、全くプログラムを勉強したことが無い人にソースコードを見せても、その意味は理解出来ない。こ
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "文芸的プログラミング" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年9月) 文芸的プログラミング(ぶんげいてきプログラミング、英: literate programming)とは、 ドナルド・クヌースの提唱したコンピュータのプログラミングスタイルのこと。 「プログラミングは、芸術であり、文学である」と主張するドナルド・クヌースの論文集のこと。上に関する論文も含まれる。 ここでは前者について説明する。 通常コンピュータのプログラミングでは、プログラムソースと関連するドキュメントを別々のファイルに記述するが、これには管理や更新
コードレビューをしてると「なんじゃこりゃぁ!?」というコードにまれに出くわします。 既存のコードとの兼ね合いでなってる場合は、致し方無くても、新規コードまで真似するのは良くないですよね。 そろそろ新人エンジニアの中には「はじめてのこーでぃんぐ」をする人も現れるのではないでしょうか。 そんな時、参考にするのは当然、既存のコードでしょう。でも、果たして既存のコードは真似するべき綺麗なコードでしょうか? というわけで、私がレビュー時に良く注意する点をアンチパターンとしてまとめてみました。 ちなみに私はWeb屋さんなので、業界違うと微妙に違うところもありそうですけど、本質的なところは変わらないと思ってます。 パターンの名前は一般的なのをWikipediaから引っ張ってきたり、自分で思いついたのを適当に書いたりしています。 太っちょメソッド 名前のとおり大きすぎるメソッドを作るアンチパターンです。
標準的なキーボード上のタブキー(左上) タブキー(英語: tab key) ⭾ Tab は、タイプライターやワードプロセッサ専用機あるいはコンピュータ用のキーボードのキーの一つで、カーソルを次のタブストップ(英語版)まで移動させるキーである。元々はタイプライターにおける図表作成機能のために使用された。 tabはtabulator[1]またはtabular[2]の略で、tabulateとは「データを表(tabular, table)にする」という意味である。 英文タイプライターでは、キーを打つと印字の直後に用紙を左に送り、次の印字に備える。すなわち用紙を基準に見ると、印字しようとする位置が右に1文字分ずれる。同様にスペースキー(スペースバー)を押すと、印字せずに1文字分ずれる。タイプライターで表を作るとき、当初はスペースキーやバックスペースキーを使って文字の間の空白を手動で調整して入れていた
プログラミングとコーディングは違う。プログラミングは設計も含むけど、コーディングは渡された仕様をプログラム言語言語に書き換える「翻訳」作業だ。 米Liferayフォーラムで他技術者の回答を見ていると違いが分かる。例えば以下のスレッドでインド人技術者が質問に回答している。質問は、ユーザ登録の必須項目を減らしたとのことだ。質問にインド人技術者は回答しているが、実際にLiferayの内部を理解していれば、必須項目はデータベースでインディクスされているので、入力されないと、システムが正常に動作しなくなる。これらをすべて修正するのはかなり大変な作業である。 何をするべきかっていると、値をディフォルトに入力するクラスを作成して、ユーザ登録を行う場合はこのクラスを使うようにすることだ。これだと1クラスを追加するだけで済む。 インド人の技術者はLiferayのソースコードを詳しく理解しているそうだが、全体
前日に東京にいたのでついでに参加しました。 エラーハンドリング勉強会 http://partake.in/events/9874b92a-4cf0-4a20-a3fe-951239da5612 日時:2011年09月04日(日) 14:00〜 場所:新宿MIDWESTビル 12階 株式会社DeNA 会議室 公式Twitterタグ:#エラーハンドリング勉強会 当日のTwitterまとめ:http://togetter.com/li/183534 Ustream:http://www.ustream.tv/channel/gunyarakun (多分録画なし) DeNAさんの会場は受付からしてとても凄かった。そういえば会場近くにスクウェア・エニックスのショップがあってDQグッズとか売っていた。あと開始時間を思いっきり勘違いしていて1時間早く着いてしまっていた。 開会 [twitter:@wra
その昔、プログラムを覚えたての頃、プログラムってのは単に「処理」を記述するものだと考えていた。処理を1ステップごとに記述し、場合によってはサブルーチンに切り出し、再利用する。 今振り返ると、オブジェクト指向を覚え始めてしばらくして、その意識は変わっていた。当然「処理」を落とし込まなければプログラムは動かない。だから「処理」はプログラムに込める。ただ、オブジェクト指向言語を使うと、これに加えて「意図」を落とし込むことができる。 オブジェクト指向を学び始めた当初、Javaのインターフェイスの存在意義がわからなかった。プログラムは「処理」を記述するものだという視点で見ると、インターフェイスには「処理」を書くことができない。インターフェイスだけでは何も起こらないからだった。 さらに、IDEを使ってコードを追っていると、途中でインターフェイスのソースを開くことになり、「なんだよ、中で何やってっかわか
朝のエントリに続いてFirefox 3 Firefox 3をインストールしたのでFlamecurse(レシピデータベースのFirefox用アドオン)の動作確認でもしてみようということで、Flamecurseのページを開いてみても何故か何も表示されない。 それでおかしいなと思って調べてみたらこんなことが書いてありました。 SCRIPT 要素に対する変更 text/html 文書における <script> 要素は、たとえ 間に内容を含めなくても、HTML 4 文書における 閉じ タグである </script>>を必要とするようになりました。以前のバージョンの Firefox では、以下のようにすることが可能でした。: <script ... /> 今バージョンからマークアップは HTML の仕様に従わなければならず(それが実際に HTML である場合)、以下のように実際に閉じなければな
baristaはDefineアレルギーである。新しいプロジェクトに参画して、既存モジュールの中にDefine.javaを発見した瞬間、全身に発疹ができる。これはbarista体内のDefineに対するIgE抗体が肥満細胞を活性化、ヒスタミン,ロイトコリエンなどの化学伝達物質が体内に放出されるためである。酷い場合にはアナフィラキシーショックを引き起こし、血圧の低下と上気道の浮腫による呼吸困難に苦しむ羽目になる。この場合、エピネフリン(アドレナリン)の皮下注がfirst aidだ。ここで静注を行なってはいけない。不整脈の原因になることがあるからだ。緊急時には気管挿管を行ない....しつこいですか? 抗ヒスタミン剤を服用しつつ説明するが、C言語における.hファイルの感覚でpublic static finalな定数値を定義しまくった、巨大なDefineクラスを作ってはならない。これは有名なアン
Javaでは、定数やファイルパスなどの情報を「プロパティファイル」と呼ばれる、プログラムとは別のファイルにまとめておくことが推奨されています。こうすることで、汎用性の高いプログラムを作成できます。さらに、プロパティファイルを修正するだけで、再コンパイルをしなくても値の変更を反映させることができるので便利です。 プロパティファイルは「.properties」という拡張子を持つファイルで、キーと値のペアを「=」または「:」で区切った形式で記述します。また、行頭が「#」または「!」で始まる行は、コメント行として扱われます。以下は、円周率の値などを定義したサンプルのプロパティファイル「calculator.properties」です。 プロパティファイルを使用するには、JavaのコアAPIとして用意されているjava.util.Propertiesクラスを利用します。このPropertiesクラス
今回は「プロパティファイル」の常識について、Java言語を通じて学んでいきます。 多くの場合、プロパティはプロパティファイルという物理的なファイルと関連付けられて私たちの前に現れます。プログラミング言語内では完結せずに外部の物理ファイルとのかかわりが強く出てくる話題であるため、初心者のうちはなかなかなじみにくい技術かもしれません。しかし、プログラミングにおいて重要ですので、しっかり習得してしまいましょう。 「プロパティファイル」ってどんなもの? 私たちがJava関連のソフトウェアを扱っていると、ファイルの拡張子が「.properties」となっているファイルを見掛けたり、あるいはその内容を編集することがあります。この「.properties」拡張子のテキストファイルが、プロパティファイルです(違う拡張子を付ける場合もありますが)。 テキストエディタなどを利用してプロパティファイルの中身を見
2009/04/10 ソフトウェアは工業製品ではない――。Rubyの生みの親としてしられるまつもとゆきひろ氏は2009年4月9日、InfoQ主催のイベント「QCon Tokyo 2009」の基調講演で、ソフトウェアと何であり、何でないのか、それはどういう性質のものであるのかを雄弁に語った。 コードとは設計である 「ビューティフルコード」と題した基調講演を行ったまつもと氏は、2007年に共著者の1人として出版した同名の書籍に書いたエッセイに込めた思いを、次のように語る。 「世界に冠たる日本の製造業のノウハウを適用することで生産性を上げることができるに違いないという発想がありますが、ソフトウェアは工業製品ではない。そうした誤解を正していきたい」。 ソフトウェア産業界では、よくエンジニアが何十万人足りないということが言われる。しかし、まつもと氏は、これは工業生産と同じ方法論を当てはめることから来
Javaのソースコードリーディングのツールとして、いいものがないかなと思っていました。 それで、以前、川口さんが会社のほうに遊びに来られた時にプレゼンで紹介されたのが、Sorcererというツールです。 これはJavaのコードを解析して、HTML(+JavaScript)へ出力してくれるものです。 Eclipse風な見た目は単に見た目だけでなく、参照やクラスへのジャンプといったIDEが持ってる機能を備えてる優れものです。 今のところ、バージョンが0.6で2年ほど何もない状態ですが、Hudsonと絡めるとかなり面白くなるのではないかなと、期待しているところです。 実際の使い方は、公式のところを参考にしていただいて、自分はMaven2で試してみました。 注意としまして、Sorcerer自体はJDK6じゃないと動きません。 Maven2から使うには、以下の部分をPOMに追加して、「mvn sit
やはり、多くの人からいろいろなコメントをいただくと、意外な発見がありおもしろいです。 プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して のブクマのコメントに 何か、主語がないから理解が難しい読み物 というのがありました。私の文章の拙さをまずは反省しなくてはなりません。ただ、普段から日本語を話したり、文章を書いたりする際にはあまり意識していなかったのですが、よくよく考えてみると日本語の文章で「主語」と呼ばれるものがなんとなく省略されることも多いように思えてきました。中学校の国語の授業では「は」や「が」という助詞がついた言葉が主語であると習ったと記憶しているのですが、実際に、文中で明示的にそのような文節が表れない現れないことが多いように思います。 そこで「日本語 主語」で検索してみたら、非常に興味深い記事がいくつか見つかりました。 http://www.geo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く