「あなたの人生の物語」と「優しいRailsの育て方」がごっちゃになったようなタイトルですが、まぁ気にせず…
さて、世の中には「プログラムを書く人」と「書かない人」の二種類が存在しますが、今回は前者向けです。そして、いつも通り難しい話は抜きで進めます。
プログラミングを覚え始めた頃。期待通りの動作をするプログラムが完成して、「オレってばスゲー」とドーパミンが溢れる(イメージです)のもつかの間、「この後どうすればいいの?何をすべきなの?」と途方にくれた経験はないでしょうか?私はあります。
Web上の情報を漁ってみたり、ものの本などを読み漁っていくと、良いプログラムにするためには色々と難しいことを覚えていかないといけないみたいです。さらにGoFデザインパターンなんて23個もあって、覚える以前に数えられません。
と、まあ、良いプログラムに育てるために抑えておくポイントはたくさんありますが、着手しやすいところから取り掛かるのが第一歩でしょう。着手しやすく効果が大きい手法は何でしょうかねぇ?
まず、良いプログラミングとは何だろう?と考えてみると…
1. バグが少ない(0が理想)
2. 十分な性能(実用に耐えうるレベル)
3. メンテナンスしやすい
などがあると思います。一昔前であれば実行モジュールの大きさなども要素の一つかもしれませんが、今回は省きます。
さて、1番を実現するためには、
1-1. 使用言語についての理解(想定外の動作をするようなコードを書かない)
1-2. 十分なテスト
があります。1-1についてはしっかり勉強するしかなさそうです。1-2についてもテスト技術を身につけ漏れの無いテストを効率よく行えるようになって下さい(テスト技術の書籍も出ていますし)。ということで1番は簡単にはいかないようです。
2番はどうでしょう?
2-1. 使用言語についての理解(処理時間がかかる/使用メモリが異常に大きくなるコードを書かない)
くらいでしょうか?どちらかというと性能は設計にかかってくることが多い(どこでキャッシュしておくか?/並列処理での排他ポイントは?など)と思います。2-1も1-1同様、勉強が必要そうで、一朝一夕にはいかないですね。
さて3番ですが、
3-1. 疎結合であること
3-2. 重複した処理が無いこと(DRY原理)
があると思います。3-1については個人的には経験をつんでいかないとなかなか身につかない気がします。体で覚えるまで時間がかかるというか。そして3-2は「お勧め」です。ちなみにDRY原理とはDon't Repeat Yourselfの略で「重複は避ける(悪)」という考え方です。 まあ、100%この対応が正解かというとそうではなく、例外ケースもあるかと思いますが、基本的にはこの対応を行うことで、処理の共通化や、定数化などが自然と進むと思います。そして何より「簡単」なのです。重複した処理があればそれを半機械的に潰していけばよいのです。初心者の方にもお勧めの一手だと思います。
「重複処理の排除」が初心者にも行いやすい手という結論に達しましたが、それ以外の項目も重要ですので、時間をかけて習得していくとよいと思います。あなたのプログラムはどんどん育っていくことでしょう。
あなたのプログラムに幸あれ
追 記
元タイトルは「Webコンテンツへのアクセス」となっていましたが、変更しました。
久しぶりに読み返してみたら3番でもうひとつ重要なことがあったので強引に以下を追記。
3-3. 入れ物に対してコード量が多すぎないこと
ひとつのファイルや関数にたくさんのコードを入れると可読性が落ちメンテナンス性が落ちます。何よりプログラマのテンションが落ちます。さらにUnit Testも難しくなります。私も2000行の関数などを見ると家に帰りたくなってきます。巨大な処理をひとつ作るより、小さな処理をたくさん作って組み合わせたほうが幸せになれるのです。しかも処理が分割されていると、自然と重複したコードが減り3-2も満たしやすくなります。3-2と共に半機械的にリファクタリングできるのでこちらもお勧めの一手です。
※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。
勝ち残るIT活用--中堅中小企業の現場からタレントの江口ともみさんをレポーターに、
全国さまざまな業種の企業担当者に聞く!
サイバー攻撃関連ニュースのまとめ特別企画:高度化するサイバー攻撃からビジネスを守る
~対策レポートや企業の製品動向をまとめ読み~
百聞は一見にしかず!
集計/分析、蓄積/検索の体験セッション
ウェブ消費行動の専門家×日本ベリサイン
ネットで消費者の信頼を得るポイントとは
陥らないためのワンポイント解説&
”実証実験から読み解くセミナー”情報
率直な読者のご意見を全て公開
クラウドに対する疑問や実際の効果に迫る
福田和代が贈るZDNetオリジナルストーリー
見逃せない3部作の第1回が無料公開!
必要以上の容量を奨められていませんか?
→電気ガスのように使えるストレージを知る
セキュリティ、快適性、管理機能を網羅
BYODのスタンダードになり得る"DME"
国土交通省やmixiが導入したシステムとは?
物理パッチ適用までにサーバを襲う脅威から
自動的に保護するDeep Securityエージェント
製造業者必見
オフライン環境のセキュリティ対策
日本最大級 サービスマネジメントイベント
IBM がクラウド、モバイル、インフラを語る
最新テクノロジ満載、「百度」の講演も!
TECHNOLOGY @WORK 東京 2012レポート
株式会社ヤマハミュージックメディア
株式会社日立システムズ
EMCジャパン株式会社
ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。