inflearn logo
知識共有
inflearn logo

readable_code::CMake - FancyにC++ Projectを作成する

C ++の最大の障壁は何ですか?私が思ったときはCMakeではないかと思います。初めてC ++を起動したとき、ソースファイルを1つビルドするのも難しくしたCMake…私と一緒に壊したのでしょうか?この講義と一緒なら、あなたもCMake Master!

難易度 初級

受講期間 無制限

C++
C++
cmake
cmake
software-design
software-design
C++
C++
cmake
cmake
software-design
software-design

受講後に得られること

  • CMake基礎文法

  • Modern CMake文法

  • CMakeを使用した外部依存関係(別々のCMake project、3rd party library)の管理

  • CMakeを使用したC ++プロジェクトの構築

readable_code

cpp::build_system::modular_project_with_cmake - OS/Platform 依存関係なしで fancy に C++ プロジェクトを作成する

C ++プロジェクトの作成に不可欠なCMakeについて学びましょう!

  • CMakeは難しいですか?

  • しかし、このレッスンでは、どのプロジェクト構成でも使用できるCMakeテンプレートをお知らせします。

  • 10年以上CMakeで大変苦労して知り合ったエキス全部お知らせします!

このようなことを学びます。

CMakeの基礎文法

  • CMakeをよりよく活用できるようにする基礎文法を教えてください。

  • 変数、メッセージ、関数、制御ステートメントなどCMakeの基本文法を介してプログラミング言語のように試してみてください!

Modern CMakeの文法

  • C→C++でプログラミングパラダイムが変わったように、もうモダンCMakeが大勢です!

  • CMakeを介してライブラリと実行ファイルを作成するときは、古い方法を書かないようにしてください。

CMakeを使用した外部依存関係の管理

  • まだ外部依存関係をPCにインストールして管理しますか?

  • CMakeプロジェクトと外部依存関係を統合して管理しましょう。

  • 今プロジェクトをビルドするために、別のライブラリのインストールプロセスをなくすことができます!

CMakeを使用した再利用可能なC ++プロジェクトの構築

  • 10年以上の開発経歴の定数を盛り込んでいます。

  • 最小限の修正で最大限の効率を得ることができるCMake構造をお届けします。

  • このようなプロジェクト構造はどこでも見たことがないでしょうか!

何を得ることができますか?

  • プログラミング言語のようにCMakeを使用する能力

  • CMakeを使用したC ++プロジェクト構築のベストプラクティス

    • CMakeの外部依存関係の管理

    • CMakeを使用した開発プロセスの自動化

    • CMakeを使用した再利用可能な構造化C ++プロジェクトの構築

キーワード

  • ビルシステム

  • CMake

  • Morden CMake

  • Project Architecture

  • Modular System

  • Thirdparty library

受講前の注意

練習環境

  • オペレーティングシステムとバージョン(OS):macOS、Ubuntu

  • 使用ツール: Clang, CMake, Visual Studio Code (VSCode)

  • PC仕様:C++ビルド可能なすべてのPC

選手の知識と注意事項

readable_code

なぜreadable_codeですか?

大学院研究室に初めて入って実装されているソースコードを見ながら聞いた自壊感がまだ覚えています。 「あ…どうしてどんなに見ても理解できない?」当時は私が足りなかったので、そんなことを知っていました。その時から10年以上の時間が経ちました。今は分かりました。私は問題ではなく、コードは問題でした。

多くの開発者がコードという名前のパスワードを作成し、「一度戻る必要があります!」と叫んでいます。しかし、これらのコードはすぐに翡翠はネックラインになって私に戻ります。迅速な実装のためにコンベンションを合わせずに実装したコードと乱発なコメントはコードを読み取るのに混乱を招き、大きな考えなしに作っておいたインターフェースは後でどのようなデータをやり取りするためであるかすら薄れます。このように編まれたコードは、時間の経過とともに誤った結果値が発散するように、誰も読み取れないコードになっていきます。さらに、そのコードを書いた本人もコードを見ずに1週間経つと、そのパスワードをデバッグというコードブックを展開して解釈しなければなりません。

私たちはソースコードを言語と呼びます。言語は、ある存在と話すために存在するものです。ここでは、多くの人がその存在をコンピュータだと思います。この勘違いから引き起こされるコードと呼ぶ多くの暗号が出てくるのでしょう。

しかし、前述のように、コードはコンピュータが読むのではなく、私たちが読むものです。だから、ソースコードを書くのは書くのと同じです。その中でも技術文書を書くのと似ています。簡潔で明確に人が理解できるようにコードを書く必要があります。このように書かれたコードは、いつ誰が見ても楽に読んで理解することができます。残念ながら、私が経験した現業では、そんな些細で細かいことを考慮して実装する時間がないそうです。しかし、私が感じたのは「時間がないからできないこと」ではなく、「できないからできないこと」でした。

人が読むのに良いコード( readable_code )は、ほとんどの場合、コンピュータが読むのに最適です。不要な変数、関数、変換、プロセスを実装しないからです。また、コラボレーションとコードメンテナンスのパフォーマンスを飛躍的に向上させます。実際に私は私がいた会社で既存のフレームワークを捨てて新しいフレームワークを設計して実装し、既存のフレームワークで2週間かかっても進行しにくかったコード統合作業を3日で可能に短縮させました。また、既存のフレームワークで3ヶ月ほどかかったモジュール実装が1ヶ月もかからない時間に可能になりました。こうして人が読みにくいコードは実装ができなくて問題なのです。

今までは成熟した開発文化とコラボレーション、人が読むのに良いコードは多くの場合あれば良いもの、なくても大きな気にしないような程度に治めることが多いようです。しかし、私は人が読書に良いコードの能力を見て、その実際を経験しました。私はこれを地葉的に私がいる会社やチームに適用することもできますが、私はそれほど満足したくありません。韓国のSW生産性自体を育てたいです。エンジニアの方々がより良い環境で開発をしたいと思います。良い開発文化が韓国の会社の中にあることを望みます。

私はこれから私が持っていた経験、成功と失敗、そしてその過程で知ったすべてのノウハウを皆さんと分かち合おうとします。これらは非常に大切なものであり、あなたが行く途中でしっかりとした基盤になるでしょう。一緒にしますか?(y/n) … -y

readable_codeの差別点

  • Software architectの経験を持つ講師が、現業で動作を検証したソフトウェア内容に基づいて講義する

  • 実際の業務・開発に適用可能な内容

  • 本を読んで知ることができる理論的な内容ではなく、実際の開発経験に基づいて習得したノウハウと概念を伝える

  • 各レッスン間の依存関係を最大限に排除することで、1つのレッスンしか聞こえない理解可能な構造を実装します。

講義名の読み方

  • C++で変数と名前空間を記述するときに使用するsnake_case技術で講義名技術

  • C++で名前空間を使用する方法で講義の階層を分割する

  • readable_code:: language_name :: xx::yy::zz::該当_講義名-サブタイトル

    • language_name : どのプログラミング言語の講義か技術(ex. cpp, c, python, etc…)

    • xx、yy、zz :各講義の詳細階層、講義の属性を表現(ex.設計、検証、etc…)

    • 対応_講義名:最下階層名は講義の見た名前を記述

    • サブタイトル:講義の説明について


こんな方に
おすすめです

学習対象は
誰でしょう?

  • C++開発を初めて始める方

  • 体系的にうまく実装されたCMakeプロジェクトを取得したい人

  • 複数のOSを行き来してC++を開発しなければならない方

  • 戻るCMakeファイルを少しずつ修正していき、プロジェクトを管理してきた方

  • 外部依存関係を簡単に管理したい方

  • プロジェクトの構造を効率的に管理したい方

前提知識、
必要でしょうか?

  • C++

  • 開発環境設定(Ubuntu、VSCode)

こんにちは
captaindevです。

キャリア認証

661

受講生

24

受講レビュー

4

回答

4.8

講座評価

2

講座

自動運転C++ソフトウェアアーキテクト出身
ロボティクス・自動運転開発・C++教育・人工知能の業務活用

↗ HolyGround · 教育・経歴・コンテンツ

↗ 人工知能を使いこなすコミュニティ

経歴

  • 現 HolyGround — 教育プラットフォーム運営 · C++開発・人工知能活用教育

  • 前 StradVision — Visual SLAM Software Architect · 自動駐車マップ・位置認識

  • 前職 Robotis — Perception Part Tech Lead・屋外配送ロボットの認識

  • プログラマス自動運転デブコース — C++講師・メンター

主力分野

  • ロボティクス・自動運転ソフトウェア

  • C++開発環境・ビルドシステム・プロジェクト構成

  • 人工知能を開発・講義制作・事業運営に活用

講義

Inflearn

ホーリーグラウンド

実務向けツールと資料

もっと見る

カリキュラム

全体

16件 ∙ (4時間 51分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

5件

4.6

5件の受講レビュー

  • hyeonsuchoi7884님의 프로필 이미지
    hyeonsuchoi7884

    受講レビュー 11

    ∙

    平均評価 4.9

    5

    100% 受講後に作成

    • kimjaehyun1235님의 프로필 이미지
      kimjaehyun1235

      受講レビュー 2

      ∙

      平均評価 5.0

      5

      31% 受講後に作成

      • ojs9410104449님의 프로필 이미지
        ojs9410104449

        受講レビュー 3

        ∙

        平均評価 5.0

        5

        100% 受講後に作成

        • bumjunoh9024님의 프로필 이미지
          bumjunoh9024

          受講レビュー 1

          ∙

          平均評価 3.0

          3

          50% 受講後に作成

          講義内容は大丈夫です。初めてCMakeを扱う人に適したコンテンツとレベルをカバーします。しかし、価格が高すぎる。この程度の価格で聞くのかと尋ねるとは限らない。と言いたいです。価格だけがはるかに安いなら、より良い選択肢になりそうです。

          • zz06223720님의 프로필 이미지
            zz06223720

            受講レビュー 5

            ∙

            平均評価 5.0

            5

            31% 受講後に作成

            似ている講座

            同じ分野の他の講座を見てみましょう!

            新規会員登録で25%OFF

            ¥15,589

            25%

            ¥20,789