SlideShare une entreprise Scribd logo
1  sur  12
プログラミング(プログラムの
    書き方)基礎
    by おいちゃん
コメント
• コメントがなくてもわかるような美しい
  コードを書いた上で
• それでもなおコメントはきちんと丁寧か
  つ適切に書け
• 書くべきは「やりたいこと」
 – 「やること」はプログラム言語で書いてるで
   しょ?
コメントの例外
• 誰がソースを読んでも"何をやっているの
  か"だけではなくて"なにをしたがっている
  のか"までわかるようなコードが書けるな
  ら、不要
 – 「誰でも」。つまり「スキルの低いエンジニ
   ア」でも「入りたてのほぼ初心者」でも。
プログラムの組み方
• 何をしたいか何を作らなきゃいけないの
  かを妄想する
• それがクラスだったりAPIだったりする場
  合、まず自分が「作成者」じゃなくて
  「利用者」として、そのクラスを使った
  と仮定した「妄想コード」を書いてみる
• ワンブレイク
プログラムの組み方
• 「妄想コード」を見直してみる。「なん
  かうざくない?」とか思ったら作り直
  し。でなければ次へ進む
• とりあえずクラスの外枠だけ書いて、中
  身空っぽのメソッドだけ書いておく。メ
  ソッドには「こんなことしたい」ってコ
  メントをあわせて書く。書式をJavaDocと
  かにあわせると、場所にもよるけど、喜
  ばれることも多い
プログラムの組み方
• 各メソッドで何をしたいかさせたいかに
  ついて、妄想をたくましくしてみる
• ワンブレイク
プログラムの組み方
• 各メソッドで具体的な処理内容を「使い
  慣れた母国語で」書く。より具体的には
  「こんなことして~」「あんなことをし
  て」「ここでこうやって」「最後こ~な
  る!!」という妄想を殴り書く。妄想な
  ので、間違っても「ここで変数iをインク
  リメント」とかいう現実を書いちゃいけ
  ない
• ワンブレイク
プログラムの組み方
• 妄想に満ち溢れたコメントを読み返す。
  意味不明なら2つ前に戻る。「いいんで
  ない?」って思ったら次へ
• 実際にソースを書く。このタイミングで
  「やっべこれ忘れそうだわ」っていう
  諸々があったら、コメントを追加しても
  よい
• ワンブレイク
プログラムの組み方
• テストをしてみる
• テストで合格が出たら次のタスクに進
  む。テストでこけたら、それが「ソース
  を書くタイミングでミスった」のか「そ
  もそも妄想した(1メソッド内の)処理の流
  れ自体に問題があった」のか「さらにそ
  もそもとして、クラス切りとかメソッド
  切りでしくじりやがった」のかを分析/相
  談してみる。で、必要な工程に戻る
共通化のタイミング
• 共通化は2回目
• 「コピー & ペースト」のかわりに「カッ
  ト & ペースト」
• 必要になってから「親クラス」に処理を
  持ち上げて継承構造を作成する
• YAGNI
 – You ain't gonna need it
バグの見つけ方
• 今度細かく、実例付けてやるよ!
• 基本は「正面から馬力で素直にシンプル
  に」
 – 考えるのと平行して手も動かそう
• 「出来てる"はず"」ダメ! ゼッタイ!
 – 出来てる「はず」? んじゃバグらない「は
   ず」だよね?
データ構造とアルゴリズム
• これも今度細かくやる
• 古典は一通り知っとけ!
 – 今でも結構役に立つから

Contenu connexe

Tendances

アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
Tomohiro Yamasaki
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjug
sk44_
 
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみたFirefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Nobuhiro Ueda
 

Tendances (20)

ラベル付けのいろは
ラベル付けのいろはラベル付けのいろは
ラベル付けのいろは
 
「フレームワークを使っていれば 脆弱性は出ない」って本当?
「フレームワークを使っていれば 脆弱性は出ない」って本当?「フレームワークを使っていれば 脆弱性は出ない」って本当?
「フレームワークを使っていれば 脆弱性は出ない」って本当?
 
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
 
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
 
プログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョンプログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョン
 
20150116_techwomen
20150116_techwomen20150116_techwomen
20150116_techwomen
 
今更Cake2.3でWebAPIを作った話
今更Cake2.3でWebAPIを作った話今更Cake2.3でWebAPIを作った話
今更Cake2.3でWebAPIを作った話
 
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
 
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデルブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
 
LT 20190821
LT 20190821LT 20190821
LT 20190821
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjug
 
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみたFirefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
 
初心者目線でIo t
初心者目線でIo t初心者目線でIo t
初心者目線でIo t
 
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考えるテーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
 

En vedette

スクラムプロジェクト逆計画ゲーム アクションカード
スクラムプロジェクト逆計画ゲーム アクションカードスクラムプロジェクト逆計画ゲーム アクションカード
スクラムプロジェクト逆計画ゲーム アクションカード
Yasui Tsutomu
 
これからのAgileの話をしよう
これからのAgileの話をしようこれからのAgileの話をしよう
これからのAgileの話をしよう
Shigeki Morizane
 
米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション
Hiromitsu Ishimori
 

En vedette (20)

スクラムプロジェクト逆計画ゲーム アクションカード
スクラムプロジェクト逆計画ゲーム アクションカードスクラムプロジェクト逆計画ゲーム アクションカード
スクラムプロジェクト逆計画ゲーム アクションカード
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should know
 
とべとべ vol.9【第二部】「現役エンジニアが語る成長とデスマーチの関係」
とべとべ vol.9【第二部】「現役エンジニアが語る成長とデスマーチの関係」とべとべ vol.9【第二部】「現役エンジニアが語る成長とデスマーチの関係」
とべとべ vol.9【第二部】「現役エンジニアが語る成長とデスマーチの関係」
 
グローバルプロジェクト よくある問題共通点と解決チェックリスト
グローバルプロジェクト よくある問題共通点と解決チェックリストグローバルプロジェクト よくある問題共通点と解決チェックリスト
グローバルプロジェクト よくある問題共通点と解決チェックリスト
 
20100521部内勉強会
20100521部内勉強会20100521部内勉強会
20100521部内勉強会
 
目標設定型Pmセミナー企画書ver0.1 up 01
目標設定型Pmセミナー企画書ver0.1 up 01目標設定型Pmセミナー企画書ver0.1 up 01
目標設定型Pmセミナー企画書ver0.1 up 01
 
20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回
 
20140925ついうっかりよさようなら
20140925ついうっかりよさようなら20140925ついうっかりよさようなら
20140925ついうっかりよさようなら
 
20120426 アジャイルサムライ読書会 第2回
20120426 アジャイルサムライ読書会 第2回20120426 アジャイルサムライ読書会 第2回
20120426 アジャイルサムライ読書会 第2回
 
課題から紐解くアジャイル
課題から紐解くアジャイル課題から紐解くアジャイル
課題から紐解くアジャイル
 
お客様とコードの間
お客様とコードの間お客様とコードの間
お客様とコードの間
 
20150917 pcスキルコース3 ネット好きなら知っておきたい5つのこと
20150917 pcスキルコース3 ネット好きなら知っておきたい5つのこと20150917 pcスキルコース3 ネット好きなら知っておきたい5つのこと
20150917 pcスキルコース3 ネット好きなら知っておきたい5つのこと
 
改善のためのちょっとしたコツ
改善のためのちょっとしたコツ改善のためのちょっとしたコツ
改善のためのちょっとしたコツ
 
20120508 アジャイルサムライ読書会 第3回
20120508 アジャイルサムライ読書会 第3回20120508 アジャイルサムライ読書会 第3回
20120508 アジャイルサムライ読書会 第3回
 
とべとべ vol.9【第一部】「エンジニアの成長戦略 in ブラック」
とべとべ vol.9【第一部】「エンジニアの成長戦略 in ブラック」とべとべ vol.9【第一部】「エンジニアの成長戦略 in ブラック」
とべとべ vol.9【第一部】「エンジニアの成長戦略 in ブラック」
 
これからのAgileの話をしよう
これからのAgileの話をしようこれからのAgileの話をしよう
これからのAgileの話をしよう
 
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
 
米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション
 
20150716 pcスキルコース2 あなたのメール作成時間を半減させます
20150716 pcスキルコース2 あなたのメール作成時間を半減させます20150716 pcスキルコース2 あなたのメール作成時間を半減させます
20150716 pcスキルコース2 あなたのメール作成時間を半減させます
 
勉強会勉強会と勉強会カンファレンス
勉強会勉強会と勉強会カンファレンス勉強会勉強会と勉強会カンファレンス
勉強会勉強会と勉強会カンファレンス
 

Similaire à プログラミング(プログラムの書き方)基礎

第5回アドオンモジュールセミナー発表資料
第5回アドオンモジュールセミナー発表資料第5回アドオンモジュールセミナー発表資料
第5回アドオンモジュールセミナー発表資料
oreno
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
 
131207 NECTJ Workshop 2
131207 NECTJ Workshop 2131207 NECTJ Workshop 2
131207 NECTJ Workshop 2
NECTJ
 
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
 
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
Takahiro Moteki
 

Similaire à プログラミング(プログラムの書き方)基礎 (20)

プログラムを学ぶということ
プログラムを学ぶということプログラムを学ぶということ
プログラムを学ぶということ
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法
 
第5回アドオンモジュールセミナー発表資料
第5回アドオンモジュールセミナー発表資料第5回アドオンモジュールセミナー発表資料
第5回アドオンモジュールセミナー発表資料
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎
 
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017
 
Swift afterbeginner
Swift afterbeginnerSwift afterbeginner
Swift afterbeginner
 
READMEを書こう
READMEを書こうREADMEを書こう
READMEを書こう
 
windows向けツール紹介
windows向けツール紹介windows向けツール紹介
windows向けツール紹介
 
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 
The principles of programming part.1
The principles of programming part.1The principles of programming part.1
The principles of programming part.1
 
131207 NECTJ Workshop 2
131207 NECTJ Workshop 2131207 NECTJ Workshop 2
131207 NECTJ Workshop 2
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方
 
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
 
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
 
第1回 モデリング勉強会
第1回 モデリング勉強会第1回 モデリング勉強会
第1回 モデリング勉強会
 
Blenderソースコードリーディング
BlenderソースコードリーディングBlenderソースコードリーディング
Blenderソースコードリーディング
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
 

Plus de galluda (9)

Git講習会
Git講習会Git講習会
Git講習会
 
Httpを振り返ってみる
Httpを振り返ってみるHttpを振り返ってみる
Httpを振り返ってみる
 
Httpの基礎とセキュリティ
Httpの基礎とセキュリティHttpの基礎とセキュリティ
Httpの基礎とセキュリティ
 
Webデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressWebデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpress
 
「実務系」エンジニアとはなにか? : 中級編
「実務系」エンジニアとはなにか? : 中級編「実務系」エンジニアとはなにか? : 中級編
「実務系」エンジニアとはなにか? : 中級編
 
プログラム基礎その1
プログラム基礎その1プログラム基礎その1
プログラム基礎その1
 
「実務系」エンジニアとは?
「実務系」エンジニアとは?「実務系」エンジニアとは?
「実務系」エンジニアとは?
 
仕様七変化
仕様七変化仕様七変化
仕様七変化
 
20090606 わんくま(がる)
20090606 わんくま(がる)20090606 わんくま(がる)
20090606 わんくま(がる)
 

プログラミング(プログラムの書き方)基礎