月別アーカイブ: 2018年4月

  • システム拡張には優しく、変更には厳しく

  • 2018/04/19
  • Category:
  • システム開発時のよくあるパターンとして、機能を追加しようとすると既存のコードの複数箇所に修正をしなければならない、ということはよくあります。
    修正をすることで別の箇所でエラーが発生して……、という頭の痛い展開を防ぎたいものです。

    では、どのようにすれば良いでしょうか。

    OCPのクラス設計方針とは




    いきなり英語が出てきましたが、Open / Closed Princpleの略となります。
    日本語にすると解放/閉鎖原則となります。そのままですが、よけいに意味がわからなくなったかもしれません。
    意味するところは、記事タイトルのように、

    拡張に対して開いている(Open)
    修正に対して閉じている(Closed)

    上記方針を守った、クラスの設計方針のことです。
    仕様変更に対して、機能追加は簡単にできるように、かつ既存のコードを変更しないでいいようにすることを指します。
    巨大なシステムであるほど、既存のコードに対する修正はリスクが高まり、機能追加時に修正が不要になることは大きなメリットがあります。

    OCPをどのように使うのか?



    どのような方針で設計をすれば良いのでしょうか。
    『アジャイルソフトウェア開発の奥義』の著者ロバート・C・マーチンがあげる例によれば、呼び出すクラスに依存させるのではなく、インタフェースや抽象クラスに依存させることを指針とすべきだ、というものです。
    直接クラスを使用すると依存箇所ができてしまうため、インタフェースを実装したクラスを使用することで、インタフェースを実装したクラスであれば差し替え可能にすることで、変更を防ぐというものです。
    差し替え可能にすることで柔軟性を保つという発想は、依存性の注入(Dependency Injection)とも重なります(ここでは割愛)。

    まとめ



    複雑なシステムを構成するには、機能追加に柔軟な設計になっていることが必要となります。
    『アジャイルソフトウェア開発の奥義』には他にも有用な考え方が多数掲載されており、筆者も勉強中となります。

    ところで、上記内容を解決するための根本的な発想はもう1つあります。
    コードを書かないでいいようにすることです。
    コードがなければバグもない、そんなの当たり前と考えるかもしれませんが、クライアントと相談するなどすれば意外とコードを書かないでも解決できてしまったりすることがあるのです。
    OCPに沿ったコードそのものが本当に必要なのか、書かないでいい方法はないか、ここから問うようにしましょう。

    ●Wantedly掲載情報(エンジニア想いの環境でJavaやPHPにチャレンジしたいエンジニア募集!)

    株式会社CPR ソリューション事業部はこちら

Pocket

  • 高機能なテキストエディタ『vim』とは(初級編)

  • 2018/04/18
  • Category:
  • 4月になって時間もたち、新入社員の方は仕事に慣れようとしている時期かと思います。
    弊社にも新しくメンバーが参加し、フロントエンド技術の研修を行っております。

    メンバーにサーバ設定を教えるなかで、こんな会話がありました。

    「設定ファイルをvimで開いて」
    「vimってなんですか?」

    筆者はvimを当然の前提知識として考えておりましたが、考えてみればフロントエンドからエンジニアになった人からすれば知らなくてもおかしくありません。
    しかし、フロントエンドエンジニアとはいえ、最低限の知識はあったほうが良いということでvimの操作を教えることとなりました。

    vimを使うには何を教えれば良いのか?



    Windowsのメモ帳でやっていることができればいいだろうと考えました。
    文字の入力と削除、コピー&ペースト、キーの移動、ファイルの保存、エディタの終了です。

    しかし、vimは上記操作を行う以前に知らなければならないことがあります。

    用途に応じたモードの区別



    vimにはモードという考え方があります。
    どんなものかと言えば、文字入力をする挿入モードと、編集(削除など)をするノーマルモードとで明確に分離しています。
    例をあげると、文字入力(インサート)モードのときに、Ctrl-C, Ctrl-Vでコピーや貼りつけができません。
    逆に不便になっているのでは? という疑問もあるでしょうが、たとえば編集モード2yyと押すだけで2行コピーできるなど、便利なことが多いためそうなっています。

    モードの考えかたを教えた上で、最低限ファイルの編集をするためのコマンドを紹介します。

    vimの基本操作



    ■移動
    ノーマルモード時
    h : 左へ移動
    j : 下へ移動
    k : 上へ移動
    l : 右へ移動

    ■編集
    ノーマルモード時
    i : ノーマルモードから挿入モードにチェンジ
    yy : 1行コピー
    p : 下にコピーした内容を貼りつけ
    x : 1文字削除
    dd : 1行削除

    ■保存と終了
    挿入モード時にesc : 挿入モードからノーマルモードにチェンジ
    :w : 保存
    :q : vimを終了

    まとめ



    必要最低限のものとなりますが、vimの操作を紹介してみました。
    フロントエンドエンジニアでもVagrantのLinuxにログインして設定ファイルを編集するなどのケースがあるため、最初は慣れないかもしれませんが、チャレンジしてみましょう!

    ●Wantedly掲載情報( Angular/Reactを極めたいフロントエンジニア大募集!! )

    株式会社CPR ソリューション事業部はこちら

Pocket

  • CPR STUDIOでは現在2018年9月末までレコーディング、ミックスダウン、マスタリング、アレンジ、楽曲制作のご予約、ご依頼を承っております。

  • 2018/04/14
  • Category:
  • CPR STUDIOでは現在2018年9月末までレコーディング、ミックスダウン、マスタリング、アレンジ、楽曲制作のご予約、ご依頼を承っております。

    2018/5/31まで初回限定レコーディングパック【6時間20000円、8時間25000円】を実施しております。

    レコーディング、ミックスダウン、マスタリングからアレンジから同期制作まで幅広く対応出来ます。(レコーディングのみ、ミックスダウンのみのご利用も可能)

    初めてレコーディングを行う方も安心して作業が行えるスタジオとは


    CPR STUDIOはコントロールルーム(14帖)、レコーディングブース(13帖)と余裕のある広さを確保し、コントロールルームには最大7人まで入室可能です。

    大手商用スタジオ同様の機材をご用意しており、DAWにはレコーディングスタジオ標準のPro Tools HDX、入出力は24in、32outと豊富なチャンネル数を確保しておりますので一発録りも可能です。
    ミックスダウンやマスタリングで必要になるプラグインは200種類以上(Waves Mercury、UAD-2 ULTIMATE、McDSP、iZotope…etc)をご用意しておりますので、お客様のご要望にも柔軟に対応可能です。
    マイクやアウトボードも最新機種からビンテージ機種まで様々なシーンに対応しており、録り音の段階から仕上がり近いサウンドです。(機材ページ参照)

    レコーディングスタジオは敷居が高いが思われていますが、初めてレコーディングを行う方からのご依頼も多数頂いており、入念にお打ち合わせする事でスムーズな進行且つ高音質に仕上げる事が出来ます。
    エンジニアはレコーディング以外にもプロデューサー、アレンジャー、トラックメイカーなどとして活躍しており、楽曲の良さを最大限に生かします。
    ドラムセット、ベースアンプ3種類、ギターアンプ7種類、各種楽器(ギター、ベースなど)を豊富にご用意しているので、機材をお持ちでない方も安心してレコーディングが行えます。
    音作りが苦手な方には目指すサウンドをお手伝いもさせて頂きます。(エンジニアが選ぶオススメのギターヘッドアンプとキャビネットの組合せ参照)

    まとめ


    CPR STUDIOの最寄駅のJR田端駅は新宿から17分、池袋から9分、上野から8分とアクセスが良く、田端駅からスタジオまで徒歩2分と非常に駅近となっております。
    田端駅を走る山手線や京浜東北線は遅くまで運行しておりますので、作業が夜遅い時間に及んだ場合も安心して作業が行えます。
    お車でお越しの方はスタジオ隣に駐車場がありますので機材搬入もスムーズに行えます。

    レコーディング前のスタジオ見学やお打ち合わせも行っており、事前に電話(03-5809-0419)、メール(info@cpr-inc.jp)またはお問い合わせフォームよりご連絡頂ければ、対応可能な日程を連絡させて頂きます。

    高音質とリーズナブルを両立させたCPR STUDIOはこちら

Pocket