SlideShare a Scribd company logo
1 of 13
Kazuki Takahashi 2020/8/22
プログラミングを早くする方法
結論
• 仕様を正確に理解すること(何をしたいかを把握し抜け漏れがないか確認できること)
• 自分がやりたいことをプログラミング言語で書けること
• コードを早く正確に読めること
• エラーが起きた場合もエラーメッセージを読みエラー内容を把握した上で対処できるこ
と
• エラーが起きた場合に再現方法が分かること
• 分からないことを調べたり人に聞けること
遅くなる要因を取り除くことが結果早くなることに繋がる
プログラミングとコーディングの
違いについて
【質問】プログラミングと
コーディングの違いとは何でしょうか?
図にしてみた
プログラム設計
コード作成
テスト
バグ修正(デバッグ)
完成
レビュー
コーディングプログラミング
コード書くことだけがプログラミングじゃないよってこと
Fizz Buzz問題を例に考えてみる
Fizz Buzz問題の仕様
• 100までの数を表示するプログラム
• 3の倍数の時に「Fizz」と表示する
• 5の倍数の時に「Buzz」と表示する
• 3と5の倍数の時に「FizzBuzz」と表示する
• 上記以外は数字を表示する
各項目単位にブレイクダウンしてみる
プログラム設計に問題がある場合
• 【重要】仕様理解ができていないなどプログラム設計に問題がある場合は後
工程全てに影響する
• 書いたコードが動いても仕様を満たしていない
• テストした際に仕様を満たしていないことに気づく(手戻りの発生)
• レビュー通らない。コード書くこと所からやり直し(手戻りの発生)
• 仕様の検討・考慮漏れがあった場合は手戻りが発生する(前のページに漏
れがあったの気づきましたか?)
プログラミングに問題がある場合
起こりがちな問題
• 仕様を理解したとしてもコードにどう落とし込めばいいかわからない(書き方がわからない)
• 新しい言語をやる場合に起こりがち。他の言語との比較で考えたり調べたりすると分かりや
すい
• アウトプットが大事。読んで実際にコードを書くこと(書かないで覚えるのは難しい)
• 有識者に聞く(社内にある技術チャンネルを活用する)
• 既存コードを改修する場合にコードの読み込みに時間がかかる
• (仕様を理解していない場合に)間違ったコードを書く
• 動いてはいるが読みづらい分かりづらいコード
テスト、バグ修正(デバッグ)に問題がある場
合起こりがちな問題
• エラーが起きた時に原因が分からない(エラーログをちゃんと読もう)
• エラー内容を把握する
• エラー箇所のコードを読む
• ググる力(同じエラーになった人の力を借りる(Stack Overflowなど))
• 人に頼る(いきなり聞く前に自分で調べることが前提)
• テストのパターン漏れ(コードに誤りがあったとしても気づけない)
まとめ
• どこでつまづくかは人それぞれ
• 一発で全てを解決できる銀の弾丸は存在しない
• ここに書いてあることが全てではない。考えることが大事
• 気づきの一助になればと思います

More Related Content

What's hot

初めてのGemの読み方
初めてのGemの読み方初めてのGemの読み方
初めてのGemの読み方
Takao Baba
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
pospome
 
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
civicpg
 
二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)
Atsuo Yamasaki
 

What's hot (20)

運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
 
スマホフロントエンド最速化手法
スマホフロントエンド最速化手法スマホフロントエンド最速化手法
スマホフロントエンド最速化手法
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
20200803 プログラミングの基礎
20200803 プログラミングの基礎20200803 プログラミングの基礎
20200803 プログラミングの基礎
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
 
知っていると便利な検索ワード
知っていると便利な検索ワード知っていると便利な検索ワード
知っていると便利な検索ワード
 
Lt1
Lt1Lt1
Lt1
 
初めてのGemの読み方
初めてのGemの読み方初めてのGemの読み方
初めてのGemの読み方
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
 
デザパタ勉強会(上級編)
デザパタ勉強会(上級編)デザパタ勉強会(上級編)
デザパタ勉強会(上級編)
 
ぼくとレビューとモブプログラミング
ぼくとレビューとモブプログラミングぼくとレビューとモブプログラミング
ぼくとレビューとモブプログラミング
 
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
 
二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)二求の塾 プログラミング講座(2019-08-10)
二求の塾 プログラミング講座(2019-08-10)
 
『これからはじめるプログラミング基礎の基礎』 のエッセンス
『これからはじめるプログラミング基礎の基礎』 のエッセンス『これからはじめるプログラミング基礎の基礎』 のエッセンス
『これからはじめるプログラミング基礎の基礎』 のエッセンス
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
 
20150116_techwomen
20150116_techwomen20150116_techwomen
20150116_techwomen
 
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性TypeScriptからひも解く方向性
TypeScriptからひも解く方向性
 
TypeScriptについて
TypeScriptについてTypeScriptについて
TypeScriptについて
 

Similar to プログラミングを早くする方法

可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)
tak
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
 

Similar to プログラミングを早くする方法 (20)

プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようプログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
 
本の紹介
本の紹介本の紹介
本の紹介
 
可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)可読性について リーダブルコード part1(表面上の改善)
可読性について リーダブルコード part1(表面上の改善)
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
 
勉強会 - 1
勉強会 - 1勉強会 - 1
勉強会 - 1
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 
ゲーム組み込み用スクリプト言語を作ってみた
ゲーム組み込み用スクリプト言語を作ってみたゲーム組み込み用スクリプト言語を作ってみた
ゲーム組み込み用スクリプト言語を作ってみた
 
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
 
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
 
Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
僕たちがいつまでも​プログラマでいるには?​
僕たちがいつまでも​プログラマでいるには?​僕たちがいつまでも​プログラマでいるには?​
僕たちがいつまでも​プログラマでいるには?​
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
 

プログラミングを早くする方法