SlideShare a Scribd company logo
1 of 41
Download to read offline
コーディングスタイル
    入門
~人に伝えるプログラミング~
    MACHIDA ‘matchy’ Hideki
                 @matchy2
で、だれ?
町田 秀企(まちだ ひでき)といいます
matchy(まっちー)とも名乗ります
その昔MUSIC PROというソフトを作
ってました
現在八光興発アズシエル事業部とい
うところに勤務しています
で、だれ?
町田 秀企(まちだ ひでき)といいます
matchy(まっちー)とも名乗ります
その昔MUSIC PROというソフトを作
ってました
現在八光興発アズシエル事業部とい
うところに勤務しています
提         供
信州の良いもの全国へ!




     八光興発アズシエル事業部



  アノト・マクセル
コーディングスタイルとは?
プログラムソースの書き方
宗教戦争
プロジェクトで決めたコーディング
規約に従おうね
今回の言語は?
コーディングスタイルとは?
プログラムソースの書き方
宗教戦争
プロジェクトで決めたコーディング
規約に従おうね
今回の言語は?
コーディングスタイルとは?
プログラムソースの書き方
宗教戦争
プロジェクトで決めたコーディング
規約に従おうね
今回の言語は?
K&Rスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }
              ※インデントは4桁のスペース
オールマンスタイル
   int main()
   {
       while (x == y)
       {
           if (has_error)
           {
               do_correct();
           }
           else
           {
                do_usual();
           }
       }
                               ※インデントは
   }                           4桁のスペース
オールマンスタイル
   int main()
   {
       while (x == y)
       {
           if (has_error)
           {
               do_correct();
           }
           else
           {
                do_usual();
           }
       }
                               ※インデントは
   }                           4桁のスペース
BSDスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }

     ※インデントは4桁の水平タブ(ソフトタブ)
BSDスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }

     ※インデントは4桁の水平タブ(ソフトタブ)
K&Rスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }
              ※インデントは4桁のスペース
K&Rスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }
              ※インデントは4桁のスペース
BSDスタイル
   int main()
   {
       while (x == y) {
           something();
           anything();
           if (has_error) {
               do_correct();
           } else {
               do_usual();
           }
       }
   }

     ※インデントは4桁の水平タブ(ソフトタブ)
GNUスタイル
   int main()
   {
     while (x == y)
       {
         if (has_error)
           {
              do_correct ();
           }
         else
           {
              do_usual ();
           }
       }
                               ※インデントは
   }                           2桁のスペース
GNUスタイル
   int main()
   {
     while (x == y)
       {
         if (has_error)
           {
              do_correct ();
           }
         else
           {
              do_usual ();
           }
       }
                               ※インデントは
   }                           2桁のスペース
ホワイトスミススタイル
   int main()
   {
       while (x == y)
           {
           if (has_error)
               {
                do_correct();
                }
           else
                {
                do_usual();
                }
           }                    ※インデントは
   }                            4桁のスペース
ホワイトスミススタイル
   int main()
   {
       while (x == y)
           {
           if (has_error)
               {
                do_correct();
                }
           else
                {
                do_usual();
                }
           }                    ※インデントは
   }                            4桁のスペース
Bannerスタイル
    int main()
    {
        while (x == y) {
            something();
            anything();
            if (has_error) {
                do_correct();
                }
            else {
                do_usual();
                }
            }
        }
             ※インデントは4桁のスペース
Bannerスタイル
    int main()
    {
        while (x == y) {
            something();
            anything();
            if (has_error) {
                do_correct();
                }
            else {
                do_usual();
                }
            }
        }
             ※インデントは4桁のスペース
Bannerスタイル
    int main()
    {
        while (x == y) {
            something();
            anything();
            if (has_error) {
                do_correct();
                }
            else {
                do_usual();
                }
            }
        }
             ※インデントは4桁のスペース
Bannerスタイル
    int main()
    {
        while (x == y) {
            something();
            anything();
            if (has_error) {
                do_correct();
                }
            else {
                do_usual();
                }
            }
        }
             ※インデントは4桁のスペース
Bannerスタイル (HTML)
  <table>
     <tr>
       <td> lots of stuff...
          more stuff
          </td>
       <td> alternate for short lines </td>
       <td> etc. </td>
       </tr>
     </table>
Bannerスタイル (HTML)
  <table>
     <tr>
       <td> lots of stuff...
          more stuff
          </td>
       <td> alternate for short lines </td>
       <td> etc. </td>
       </tr>
     </table>
Linuxスタイル
 int main()
 {
         while (x == y) {
                 something();
                 anything();
                 if (has_error)
                          do_correct();
                 else
                          do_usual();
         }                                ※インデントは
 }
                                          8桁の水平タブ
                                          (ハードタブ)
Linuxスタイル
 int main()
 {
         while (x == y) {
                 something();
                 anything();
                 if (has_error)
                          do_correct();
                 else
                          do_usual();
         }                                ※インデントは
 }
                                          8桁の水平タブ
                                          (ハードタブ)
Linuxスタイル
 int main()
 {
         while (x == y) {
                 something();
                 anything();
                 if (has_error)
                          do_correct();
                 else
                          do_usual();
         }                                ※インデントは
 }
                                          8桁の水平タブ
                                          (ハードタブ)
画面サイズとの関係
80桁×25行
適切に設定された端末・エディタばか
りではない
サーバー設置時に未設定のエディタ
やページャで乗り切らなければならな
いこともある
画面サイズとの関係
80桁×25行
適切に設定された端末・エディタばか
りではない
サーバー設置時に未設定のエディタ
やページャで乗り切らなければならな
いこともある
ハードタブ論争
水平タブは通常8桁である
⇒ハードタブ
ソースを確認するだけなら、いちいち
エディタなんか使わない
インデントが深くなるなら、そもそも処
理内容自体を見直せ!
なぜこだわるのか
ソースコードは「人に伝えるため」
プログラミングはコミュニケーション
動くメンテナンスできないプログラムよ
り、動かないメンテナンス可能なプロ
グラム
明日の自分のため
なぜこだわるのか
ソースコードは「人に伝えるため」
プログラミングはコミュニケーション
動くメンテナンスできないプログラムよ
り、動かないメンテナンス可能なプロ
グラム
明日の自分のため
なぜこだわるのか
ソースコードは「人に伝えるため」
プログラミングはコミュニケーション
動くメンテナンスできないプログラムよ
り、動かないメンテナンス可能なプロ
グラム
明日の自分のため
プログラミングは表現活動だ

小説家が小説を書くように

音楽家が音楽を作るように
僕たちは
プログラムソース
を書く
Twitterからはみ出した「リアル」(裏)
     ~前のめりな人々~

      妖怪の生まれ方
    ~「名づけ」のシゴト~

  人間寄りコンピューティング
   ~アノト方式デジタルペン~
つづく
Twitterからはみ出した「リアル」(裏)
     ~前のめりな人々~

      妖怪の生まれ方
    ~「名づけ」のシゴト~

  人間寄りコンピューティング
   ~アノト方式デジタルペン~

More Related Content

What's hot

Ruby講座第二回
Ruby講座第二回Ruby講座第二回
Ruby講座第二回
mitsunaga
 
Yamadai.R#3 Function
Yamadai.R#3 FunctionYamadai.R#3 Function
Yamadai.R#3 Function
考司 小杉
 

What's hot (20)

解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
Ruby講座第二回
Ruby講座第二回Ruby講座第二回
Ruby講座第二回
 
一階述語論理のメモ
一階述語論理のメモ一階述語論理のメモ
一階述語論理のメモ
 
Yamadai.R#3 Function
Yamadai.R#3 FunctionYamadai.R#3 Function
Yamadai.R#3 Function
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
 
アルゴリズムとデータ構造10
アルゴリズムとデータ構造10アルゴリズムとデータ構造10
アルゴリズムとデータ構造10
 
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理
 
アルゴリズムとデータ構造9
アルゴリズムとデータ構造9アルゴリズムとデータ構造9
アルゴリズムとデータ構造9
 
深さ・幅優先探索の仕組み・特徴・応用
深さ・幅優先探索の仕組み・特徴・応用深さ・幅優先探索の仕組み・特徴・応用
深さ・幅優先探索の仕組み・特徴・応用
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
 
Hash functions
Hash functionsHash functions
Hash functions
 
C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語
 

Viewers also liked

プログラミング作法
プログラミング作法プログラミング作法
プログラミング作法
Kota Uchida
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイル
Takao Kimura
 
チーム開発をうまく行うためのコーディング規約論
チーム開発をうまく行うためのコーディング規約論チーム開発をうまく行うためのコーディング規約論
チーム開発をうまく行うためのコーディング規約論
Kentaro Matsui
 
論理思考とプログラミング 第9回
論理思考とプログラミング 第9回論理思考とプログラミング 第9回
論理思考とプログラミング 第9回
Noritada Shimizu
 

Viewers also liked (20)

プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
覚えておきたいプログラミング作法
覚えておきたいプログラミング作法覚えておきたいプログラミング作法
覚えておきたいプログラミング作法
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
プログラミング作法
プログラミング作法プログラミング作法
プログラミング作法
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
リファクタリングの実情
リファクタリングの実情リファクタリングの実情
リファクタリングの実情
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイル
 
チーム開発をうまく行うためのコーディング規約論
チーム開発をうまく行うためのコーディング規約論チーム開発をうまく行うためのコーディング規約論
チーム開発をうまく行うためのコーディング規約論
 
論理思考とプログラミング 第9回
論理思考とプログラミング 第9回論理思考とプログラミング 第9回
論理思考とプログラミング 第9回
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないために
 
Community Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMOCommunity Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMO
 
プログラムコーディングの準備体操
プログラムコーディングの準備体操プログラムコーディングの準備体操
プログラムコーディングの準備体操
 
Java デザインパターン勉強会 第5回(最終回)
Java デザインパターン勉強会 第5回(最終回)Java デザインパターン勉強会 第5回(最終回)
Java デザインパターン勉強会 第5回(最終回)
 
Gaucheで本を作る
Gaucheで本を作るGaucheで本を作る
Gaucheで本を作る
 
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
 

More from Hideki MACHIDA

concrete5を使ったホームページのご提案
concrete5を使ったホームページのご提案concrete5を使ったホームページのご提案
concrete5を使ったホームページのご提案
Hideki MACHIDA
 

More from Hideki MACHIDA (8)

NSEG新webサイトについて
NSEG新webサイトについてNSEG新webサイトについて
NSEG新webサイトについて
 
Vagrant でお手軽開発環境
Vagrant でお手軽開発環境Vagrant でお手軽開発環境
Vagrant でお手軽開発環境
 
concrete5を使ったホームページのご提案
concrete5を使ったホームページのご提案concrete5を使ったホームページのご提案
concrete5を使ったホームページのご提案
 
いちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマいちばん簡単なconcrete5テーマ
いちばん簡単なconcrete5テーマ
 
ソーシャルメディアビジネス活用の実際
ソーシャルメディアビジネス活用の実際ソーシャルメディアビジネス活用の実際
ソーシャルメディアビジネス活用の実際
 
長野ソフトウェア技術者グループ NSEG 勉強会 Vol.4
長野ソフトウェア技術者グループ NSEG 勉強会 Vol.4長野ソフトウェア技術者グループ NSEG 勉強会 Vol.4
長野ソフトウェア技術者グループ NSEG 勉強会 Vol.4
 
Twitterからはみ出した「リアル」(裏)
Twitterからはみ出した「リアル」(裏)Twitterからはみ出した「リアル」(裏)
Twitterからはみ出した「リアル」(裏)
 
Twitterからはみ出した「リアル」(表)
Twitterからはみ出した「リアル」(表)Twitterからはみ出した「リアル」(表)
Twitterからはみ出した「リアル」(表)
 

コーディングスタイル入門~人に伝えるプログラミング~