
良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第2回名前付け重要。または、良いコードは良い名前から生まれるんです。 ―その1 良い名前の条件 Coding is freedom(犬井ヒロシ風) プログラミングは自由です[1]。たとえば「コネクションに接続できないときの例外クラス」が必要になったら、「FatalConnectException」「CannotConnectException」「ExternalConnetException」といったふうに、いかようにも作成することができます。設計やアーキテクチャの決定なども組み合わせは無限にあり、どれを選択するかに絶対的な決まりはありません。今回は自由だからこそ難しい「名前付け」についてのお話です。 良い名前をつけよう プログラミングを行っていると、変数名、メソッド名、クラス名など「名前」を考える場面が多
なんか荒れてますが、私も一言いいたいです!! オブジェクト指向がそうであるように、関数型も銀の弾丸ではありません!!! 参照透過性はすばらしい この記事をぼやーんと眺めてました。 高精度煽り除去フィルタを通して読むと、関数型のアプローチがよい、と言う話ですね。 実際コードを書いてると、自分の書いたコードに関するバグは、体感、8割くらいが副作用に起因するものです。 副作用があると、呼び出し元が考慮すべきパターンが増えます。Mの状態を持つオブジェクトと、Nの状態を持つオブジェクトをつなぐと、MxNのパターンになるわけです。これはつなぐたびに積算されるため、爆発します。 副作用が無い場合、状態数は1なわけです。1x1は?1です!!よって、状態の組み合わせ爆発は起きません。考慮すべきは、入力値のパターンだけで十分なわけです。 他にもいろいろメリットが!! すばらしき参照透過性!!関数世界最高ですね
この記事はLisp Advent Calendar 2014に投稿しそびれた、ただの記事です。 こんにちは、めいまおです。 昨年、勢い余ってLisp Advent Calendarに記事を投稿してからもう一年が経ち、早かったような、長かったような一年だったなと振り返っています。 Advent Calendar、枠余ってたらLisperとの付き合い方をテーマにクソ記事書こうと思ってたけど、早々に枠埋まったので書く機会永遠に失った— ミネコ (@meymao) 2014年12月26日 というツイートをしたら、あんちべさんが https://twitter.com/AntiBayesian/status/548417594097553408 と言ってくださったので、Lisperとの付き合い方について書きます。 ちなみに「Lisperとの付き合い方」と銘打ってますがご存知の通り、サンプル数は1(夫
序 「文字列を文字の列とみなす単純化」について議論がありますが、前提が抜け落ちてるように思うので書くことにします。 そもそもこの話はどのような文脈の上にあるかというと、テキスト処理 (wikipedia:en:Text_processing) の文脈になります。ここでいう「テキスト処理」とは plain text (wikipedia:プレーンテキスト) の検索・加工のことで、ここでは特に UNIX Text Processing の系譜が念頭に置かれています。つまり、複雑な装飾を含むリッチテキストではなく、処理の対象を ASCII 文字列といくつかの制御文字へと抽象化することで、正規表現のような強力な道具を用いた処理を可能とした世界です。UNIX でのお話ですから、ここでの具体的な処理の単位は char であり、全体としては char[] になります。この char の中身は上で述べたと
2008年12月4日(米国時間)、とうとうJavaFXがリリースされました。2007年のJavaOneで発表されて以来1年半、やっとリリースまでこぎつけました。そこで、このたびリリースされたJavaFX 1.0をベースに、短期集中連載としてJavaFXを解説していきます。 JavaFXとは何だ JavaFXはSun Microsystems(以下Sunと表記します)が提供するリッチクライアント向けの新しいプラットフォームです。Javaという名前が入っていますが、Javaとは別個のプラットフォームです。とはいうものの、技術的にはJavaがベースになっています。 JavaFXの開発はオープンソースで行われています。java.netのOpenJFXプロジェクトを中心に、OpenJFX-CompilerプロジェクトやSceneGraphプロジェクトなどで精力的に開発が行われています。ただし、現
Stuart Sierra, Luke VanderHart 著、福嶋雅子、株式会社トップスタジオ 訳 本書は、ClojureScriptを使ったクライアントサイドプログラミングの基礎を概説する書籍です。プログラミング言語Clojureとほぼ同じ 文法から、Google Closure Libraryを用いて最適化されたJavaScriptへと変換できる、ClojureScriptの魅力を紹介します。開発環境のインストール、コンパイルの方法、基本的な文法、ライブラリの呼び出し方から、関数型プログラミングの手法など、限られた内容の中でClojureScriptの魅力をお伝えします。なお本書はEbookのみの販売となります。 まえがき 1章 はじめに――ClojureScriptを使う理由 ブラウザアプリケーションの隆盛 JavaScriptの隆盛 さらに良い言語を探して ClojureScr
『パーフェクト Ruby on Rails』(すがわらまさのり, 前島真一, 近藤宇智朗, 橋立友宏)を読みました。「Rails 開発に慣れてきたかな」くらいの人にちょうどいい内容だったと思います。それくらいレベルの人が少し上を目指したり、より Rails らしい設計や開発の仕方を学んだりするのにいい書籍だと思いました。Ruby 2 や Rails 4 向けの説明になっているので、新しめの情報を得たいような場合にもお薦めです。逆に、最新の Ruby や Rails でバリバリ開発しているような人には既知のことばかりで物足りないんじゃないかなという印象です。 全体的に興味はあったのですが、購入の決め手となったのは第9章「より実践的なモデルの使い方」です。どう設計するか、どうリファクタリングするかの1つの指針として読んでみたいと思いました。実際に読んだ感想としては、学びも多く、読んでよかったと
UXチームの責務は、ユーザーにとって望ましいエクスペリエンスを作り出すことである。にもかかわらず、ユーザーを開発プロセスに巻き込んでいない組織は多い。顧客からのインプットがない組織は役に立たないインタフェースを作り出してしまう危険がある。 UX Without User Research Is Not UX by Hoa Loranger on August 10, 2014 日本語版2014年9月18日公開 Webサイト(あるいは製品)の成功はユーザーからどう思われるかにかかっている。ユーザーはWebサイトの有用性と使いやすさを、そのサイトとインタラクションしながら評価し、数秒、ときには数ミリ秒で結論を出す。 あるサイトに関与するかどうかのユーザーの判断の基準になるのは、「そのサイトは自分にとって価値があるか。使いやすいか。そこでのエクスペリエンスを楽しめるか」といった問いである。ユーザ
この記事を書き上げるには、相当長い時間がかかりました。本来は今年の年明け、 Rubyの死 やデイヴィッド・ハイネマイヤー・ハンソンの TDDは死んだ がアップされて騒ぎになる前に投稿するつもりだったのです。昨年末に書いたツイートを見てください。 > Rubyにはもう飽き飽きした。理由はいろいろあるが、特にその副作用と、ステータスが可変なせいで大量のユニットテストを書かされるのにはウンザリだ。 @abevoelker Rubyの開発に関しては、大勢の人が心のどこかで何かおかしい、何かが欠けていると思っているようですが、たいていの人は責める対象を間違っています。Rubyで書いたアプリがとんでもない代物になったって? それはあなたがきちんとテストコードを書かなかったか、テスト駆動開発(TDD)の指針に則って開発しなかったからです。もしくは、正しいデザインパターンに切り分けるための知識が不足してい
引き続きofrubyを作っています。 ファイルを管理する必要が出てきたのでFCFileManagerというライブラリを入れたらEXC_BAD_ACCESSエラーが出て半日位悩んだ。 検索しても分からずじまいで結局本屋に行って文献を漁ってやっと理解出来たのでメモ。 iOSのリファレンスカウントの仕組みは途中で変わっている iOSのオブジェクト(NSなんとか)のメモリはリファレンスカウントで管理される 昔は retain, release, autorelease とか使って自前で管理する必要があった iOS5からARC(Automatic Reference Counting)という自動でリファレンスカウントのコードをコンパイラが生成してくれる仕組みが入った(すごい) ARCでは retain, release, autorelease は書いてはいけない (コンパイルエラーになる) そして
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 結論: Javascriptの乱用をやめるのが一番。 はじめに書いておきますがしょうもない話です。 結論、開発者としてはどのような方向性でやるべきか、を書いています。 JS多い時代でのフレームワークの根本的な問題云々のことは書いてません。 さて、現状、モバイルにおいて、Javascriptでまともに動くものを作ることは難しいです。 Twitterから引き抜いた超優秀なWebエンジニアを多数抱えるMediumですら、未だにモバイルで多数のバグを抱えています。 超優秀なエンジニアを世界一抱えているであろうGoogleのGmailですら、モバ
あるある。 高校生の頃からPCでゲームをやったり、動画を見たりするのが好きだった。 受験を勉強頑張って結構名のしれた国立大学に入れたは良いが息詰まってしまった。 授業でプログラミング入門の講義をとってみたら全然わからない。 メソッド?コンストラクタ?再帰?このfor文どういう動きなわけ?! バブルソートってなに?来週までに作ってこいってなんだよその宿題。ってな具合で 完全に置いてけぼり食らった。俺の周りはそこそこプログラミング経験者が居て、 俺みたいな完全初心者は殆ど居ない。 マジでなんでこんな学部選んじまったんだ。プログラミングに適正あるなんて聞いてないよ;;たいしに (はてな匿名ダイアリー:パソコンが好きで情報系学部に入ったは良いが・・・) でも、広く同年代、あるいは、日本国民全体で考えると「PC使うことに拒否感がない」「ネットが便利であることを知っている」というのは結構有利な点だった
はてなでは、今年も学生を対象としたエンジニア向け「はてなサマーインターン2014」を8月に開催します。開催時期、応募方法などの詳細は6月上旬をめどにこのブログで発表します。参加をお考えの方は、以下のリンク先にあるフォームからメールアドレスを登録していただくと、詳細の発表時に案内のメールをお送りします。 「はてなサマーインターン2014お知らせ登録」はこちら 追記: 2014年6月17日より募集を開始いたしました。くわしくは、はてなサマーインターン2014の募集を開始しました! - Hatena Developer Blogを御覧ください。 7/7 正午をもってはてなサマーインターン2014の募集を締め切りました。たくさんのご応募ありがとうございました。 エンジニア向けはてなサマーインターンとは 2008年より毎年開催されているインターンシッププログラムです。Webサービス開発者としての技術
「第3回将棋電王戦」(ドワンゴ・日本将棋連盟主催)第2局が3月22日に東京・両国国技館で行われ、将棋ソフト「やねうら王」が勝利した。全5局中コンピュータ側が2連勝となり、前回に続く団体戦の勝ち越しに王手をかけた。 15日に「バグ修正のため」として対局直前のソフトアップデートが発表されたものの、棋力が向上している可能性もあり「レギュレーション違反」として強い反発を受け、19日には運営側が特例を認めたことを全面的に謝罪し撤回。旧バージョンでの対局となった。 対戦相手の佐藤紳哉六段は終局後、「相手が強いというより自分が弱いから負けた。プロなら勝たなきゃという流れをものにできなかった。たくさんの方に応援してもらったのに期待に応えられず残念」と話した。対局直前の2度に渡るソフト変更に関しては「1度まさかの変更があったので2度目は正直そこまで驚かなかった」と振り返った。 やねうら王・開発者のやねうらお
makeuseof:プログラミングカンファレンスに「学校の先生」が訪れるなんて、ちょっと前までは考えられなかったことでしょう。 ところが先日コベントリー大学のコベントリー・テクノセンターで開催されたカンファレンス「PyCon UK」には、教師の姿が数多く見られました。プログラマと教師が、それぞれの専門知識を共有し合っていたのです。彼らに共通の関心事は、若者向けのコンピューティング教育にありました。 イギリス政府は先ごろ、国内の学校でコンピュータサイエンスを必修にすると同時に、基礎的な(時代遅れの)事務スキルのみを教えていた IT カリキュラムを大きく改めました。その何が素晴らしいって、新カリキュラムがものすごく自由なところ。守るべきマイルストーンは、「シーケンス、条件分岐、反復を使ってプログラムを書く。変数や種々の入出力形態を使用する」などのシンプルなものばかりで、それを実現する手段は完全
この記事は abicky.net の Perl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました
出来上がったコードの可読性も含めた品質の悪さを、時間がなかったとかプロトタイプだからと言い訳する人がいます。スキルが高い人の場合は、同じ時間制約でも高い品質のコードを書きます。それは、ある程度無意識になるまで、訓練を重ねているからです。無意識になるまで意識して普段から活動するのです。 ソフトウェア開発ではないですが、熟練者と初心者の差を比較するために短時間でどれだけの成果が出るかを競うテレビ番組を時々見かけることがあります。必ず熟練者の方が量も質も圧倒的に初心者を凌駕しています。つまり、時間がなかったとかプロトタイプを言い訳にした時点で、経験年数に関係なく、初心者レベルだということです。 1988年に米国への赴任前の送別会で今は亡きS.Uさんに言われたのは、「与えられた仕事をこなして初めて次の難し仕事が与えられる」と言われたことがあります。逆に言えば、できないと判断されたら、仕事を与えない
設計者にもうれしいO/Rマッパ「DBFlute」 7月13日、DB2の勉強会などを開催するコミュニティ「ClubDB2」が開催されました。冒頭のライトニングトークではフリーランスのオープンソースプログラマであり、DBFluteのメインコミッタでもある久保雅彦さん(写真)がDBFluteをアピールしました。 DBFluteを端的に説明すると、「DB設計者にもうれしいO/Rマッパ」だそうです。ただ、O/Rマッパを乱用されるとパフォーマンスに悪影響を及ぼしかねないので、データベース管理者からすると「えーやめてー」と忌避されがちです。しかし、DBFluteはデータベースの変更に強いという特徴があります。カラムの追加など、データベースの変更履歴を自動生成し、開発環境にスムーズに反映させることができます。それゆえにプログラマには当然のこと、管理者にも役に立つO/Rマッパと言えます。 また久保さんは「デ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く