「すべて」カテゴリーアーカイブ

  • 作業効率が上がる仮想環境『Vgrant』とは

  • 2018/05/28
  • Category:
  • エンジニアの仕事に必要な開発環境を構築するのは、とても手間がかかります。
    各種アプリケーションをインストールしたものの、他の環境では動いたのに自分のPCだと動かない、設定し終えてもバックアップが大変、複数プロジェクトを並行作業すると設定が複雑になってしまう……、いろいろな問題が発生することがあります。

    上記のタイトルはエンジニアをしていると、1度は聴いたことのあるかもしれないフレーズですが、これは矛盾しているようである意味の真理です。
    同じことを繰り返さない、繰り返さなければならないならば自動化する——そうしなければ本来集中すべき内容に手をつけられないためです。

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

    仮想環境を効率的に構築するためのVagrant

    今記事においては解決策の1つとして、Vagrantを紹介します。
    Vgrantとは、仮想環境を効率的に構築するためのソフトウエアです。
    WindowsやMacといったOSのなかに、さらにOSをインストールするイメージとなります。

    Vagrantの利点

    Vagrantを使うことで、上記の問題を解決することができるようになります。

    他の環境では動いたのに自分のPCだと動かない

    動作が保証された環境を構築、配布することで、どのMacやWindowsを問わずに同じ環境を用意できる。

    バックアップが大変

    Vagrantは設定が1つのファイルにまとまっており、復元が簡単。

    複数プロジェクトを並行作業すると設定が複雑に

    プロジェクトごとにVagrantを用意することで、余計なツールが入らない安定した環境を使用できる。

    Vagrantのインストール手順

    注:この記事では仮想環境としてLinux(CentOS7.4)を構築するものとします

    実際にVagrantをインストールするには、以下サイトからインストーラーをダウンロードして実行します。
    Vagrantと合わせて、仮想環境を構築するためにVirtualBoxもインストールしてください。
    Windows, Mac, Linux版それぞれ実行ファイルが用意されておりますので、環境に合わせてください。

    http://www.vagrantup.com/
    http://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html

    VMの設定

    インストールが完了したら、実際に設定してみましょう。

    今回は次のようなフォルダを作成し、このなかで作業を行います。
    Windows: C:\vagrant
    Mac : /Users/ユーザ名/vagrant

    ターミナルまたはコマンドプロンプトを開き、上記フォルダまで移動してから以下のコマンドを実行します。

    vagrant box add bento/centos-7.4

    これだけのコマンドで、インターネットからLinuxをダウンロード・インストールされ、最低限の設定が行われます!

    次にVagrantの設定ファイルを作成します。

    vagrant init

    フォルダのなかにVagrantfileというファイルがあれば成功です。
    このファイルにカスタマイズしたい内容を記述するのですが、動かすのみであれば不要のため省略します。

    Vagrantの起動方法

    vagrnt up

    必要なコマンドはこれだけです。簡単ですね。
    しばらく待つとLinux(CentOS)が起動します。

    これで仮想環境のできあがりです。不要になったら以下コマンドで終了させ、Vagrantfileを削除すれば環境の削除も簡単です。

    vagrant halt

    まとめ

    上記設定をすることで、プロジェクトごとの仮想環境を用意することができるようになりました。
    しかし、Vagrantはすべての問題を解決するソフトウェアではありません。
    Vagrantで仮想環境を用意しても、結局は各種ソフトウェアをインストールしなければならないという問題は残ったままです。
    もちろん、解決策はあります。

    今回はVagrantの紹介が長くなってしまったため、次回の記事で紹介できればと思います。

    様々シーンにおいてシステムアテンドを行うITソリューション事業部はこちら

    ●Wantedly掲載情報(本当にやりたいことに辿り着きたい技術大好きエンジニア募集!)

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

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

Pocket

  • 各種クレジットカード、交通カード、電子マネーでのお支払いが可能となりました。

  • 2018/05/25
  • Category:

  • 平素よりCPR STUDIOをご愛顧頂きまして、誠にありがとうございます。

    CPR STUDIOでは2018/5/25よりお支払い方法に現金の他に、各種クレジットカード、交通系ICカード、電子マネーのご利用が可能となりました。
    ご利用できる決済ブランドは下記となります。
    今後も何卒よろしくお願い致します。

    ●ご利用可能決済ブランド
    ・クレジットカード
    VISA、MASTER、JCB、AMEX、DINERS、DISCOVER、Rakuten Card

    ・交通系ICカード
    Suica、PASMO、Kitaca、TOICA、manaca、ICOCA、SUGOCA、nimoca、はやかけん

    ・電子マネー
    楽天Edy、nanaco、QUICPay+、iD

    ●注意事項
    ・お支払い回数は1回払いのみとなります。
    ・レコーディングご利用料金、各種レンタルオプション料金にご利用頂けます。
    ・立会い無し作業(オンラインミックスダウン、オンラインマスタリング)ではご利用頂けません。
    ・電子マネーのチャージは行えません。
    ・システムメンテナンス等でご利用をお断りする場合がございます。

    各種クレジットカード、交通カード、電子マネーでのお支払いが可能なCPR STUDIOはこちら

Pocket

Pocket

  • オンラインミックスダウン、マスタリングの納期のご案内(2018/5/23現在)

  • 2018/05/23
  • Category:
  • オンラインミックスダウン、マスタリングの納期のご案内(2018/5/23現在)

    夏リリース用音源、コミックマーケット向けのご依頼も承っております


    5/23現在のオンラインミックスダウン、マスタリングの納期は下記となります。

    ・ミックスダウン 2~3曲 6~8日程度
    ・マスタリング 2~3曲 3~5日程度

    納期はあくまで目安となり、内容や曲数により多少前後する場合がございます。(料金詳細はPriceページ参照)
    4曲以上のご依頼の場合は別途納期お見積もりとなります。

    オンラインミックスダウンは宅録環境や他スタジオでレコーディングを行ったテータを当スタジオに送付して頂いて、当スタジオにてミックスダウンを行いメールベースにてやりとりを行う手法です。(料金ページ、オンラインミックスダウン参照)

    立会いミックスダウンのようにお待ち頂く時間がなく、ご自宅の環境でじっくりチェック出来るので細かい部分のチェックが行えて満足行くサウンドに仕上がり好評を頂いております。
    遠方のお客様でお近くにレコーディングスタジオがない場合もメールベースでのやり取りとなるので、スタジオにお越しにならずもご自宅にてプロサウンドを得ることが出来ます。
    ボーカルピッチ修正、ハモリ作成、ドラムタイミング修正など細かいご要望にも柔軟に対応可能です。

    納得出来るサウンドへの近道へ


    オンラインミックスダウン、マスタリングはメジャーからインディーズまで幅広いお客様にご利用頂いており、リピートでのご利用も多数頂いております。

    ご自身でミックスしたものの納得出来るサウンドにならない方もいらっしゃるかと思います。
    そんなときは当スタジオがお手伝いさせて頂きますので、お気軽にご連絡頂ければと思います。
    皆様からのご連絡お待ちしております。

    リーズナブルに商用スタジオサウンドを得られるオンラインミックスダウン、マスタリングはCPR STUDIOへ

Pocket

Pocket

  • phpMyAdminに代わる新しいオススメツール

  • 2018/05/21
  • Category:
  • DBをGUIで操作するツールとして、phpMyAdminを便利に使っています。
    ターミナルからmysqlにログインして、直接SQLを実行しても良いのですが、ちょっとしたSELECT文を試したいくらいのときにはおおげさです。
    しかし、サーバの設定の都合上phpMyAdminをインストールできない場合があります。
    あるいは、phpMyAdminをインストールすることが手間な場合もあります。

    上記のような場合、がんばってターミナルからSQLを実行するしかないのでしょうか?
    もっと、便利な方法があるはずので、探してみました。

    Macならsequel pro

    Mac環境の場合は、Sequel Proが定番のDBクライアントとなります(他にあったら教えてください!)。
    基本的にMySQLのためのクライアントとなりますが、見た目のUIなどはphpMyAdminに似ているため、違和感なく移行できるかと思います。
    テーブル操作やSQLの実行まで、一通りのことができるため、Mac環境であればSequel Proがあれば問題なく使えそうです。

    WindowsではA5:SQL Mk-2, MySQL Workbench

    普段仕事をする環境はWindowsなのでSequel Proを探してみましたが、Windows版がありません。
    ただ、類似のアプリケーションとして、A5:SQL Mk-2, MySQL Workbenchがあります。
    両方ともphpMyAdminに似たことができますが、A5:SQL Mk-2はどちらかというとDBのモデリングが主な機能であり、MySQL WorkbenchはMySQL専用でテーブル操作にはあまり向かないという印象があり、実際に業務で使用するならば使い分けることになりそうです。

    Linuxでがんばるならmycli

    上記はGUIでDBを操作できるものを取り扱いました。
    しかし、どうでしてもターミナルから操作しなければならない場合もあります。
    GUIに慣れていると、SQLのコマンドが思い出せずに検索して時間がかかることがよくあります(筆者がそうです……)。
    そこで少しでもSQL入力を楽にする方法として、mycliがあります。
    mycliはデフォルトのmysqlコマンドを代替するもので、mycli -u root -pなどとしてログインすると、コマンドやテーブルの補完機能を使うことができるようになります。
    SQLの文法が思い出せいない場合、何文字かを入力してタブキーを押せば、それらしいコマンドをサジェストしてくれるので、いろいろはかどります。

    まとめ

    主要な環境で使えるDB操作アプリケーションを紹介してみました。
    DBは1つ操作を間違えると大変な結果になるため、素早く正確に(しかも簡単に!)できるようにしておきましょう。

    日々多様化・複雑化していくあらゆるシーンに於いて、シームレスにアテンドするソリューション事業部はこちら

    ●Wantedly掲載情報(本当にやりたいことに辿り着きたい技術大好きエンジニア募集!)

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

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

Pocket

  • デバッグへの取り組み

  • 2018/05/18
  • Category:
  • 開発をする上で、どうしても発生するのがバグです。
    バグのない開発ができれば言うことありませんが、実際はいろいろな原因で問題が発生するものです。
    発生してしまったバグをどのようにデバッグすればいいのか、普段気をつけていることを整理してみたいと思います。

    バグの再現

    バグを発見すると、反射的に修正したくなるかもしれません。しかし、ここを我慢しましょう。
    修正しようとする前に、まずそのバグが確実に発生するのかを確かめましょう。
    バグが発生したりしなかったりする状況は、なにを修正するのかすらあいまいになってしまうため、無駄な時間を使うことになりかねないためです。
    再現させるための前提として、サーバや開発言語を可能な限りバグが発生した環境と同じに揃えるなどして、1つ1つ不確定要素を潰すようにすると良いでしょう。

    原因の特定

    バグを再現できるようになったら、次は原因を特定しましょう。
    原因を特定する方法はエンジニアの数だけやりかたがありますが、おおむねのところ共通する手法は以下になるのではないでしょうか。

    01.仮説を立てる
    02.ログなど事実(データなど)を収集する

    実際のデバッグにおいては、2つのうちどちらか1つを使うというものではなく、両方の組み合わせになるかと思います。

    注意すべきは、なにを調べたら良いのかわからず、闇雲に原因を調査することです。
    とはいえ、実際に調査する方針がつかめないこともあるため、闇雲に調べる場合はせめてどのようなことを調査したのかを書きだしておくと、1つ1つ原因を追いこんでいくための助けになるかと思います。

    用途に応じた修正

    原因が特定できたら、いよいよ実際の修正を行いますが、ここでも考慮したいポイントがあります。

    01.簡単で根本的な修正
    02.難しくて根本的な修正
    03.簡単で場当たり的な修正
    04.難しくて場当たり的な修正

    ※根本的な修正とは、今後の変更や拡張性などを考慮した修正であり、場当たり的な修正とはとりあえず問題が解決していれば良いものとする修正を表します。

    基本としては根本的な修正を行うべきですが、実際は1から4のうちどれを選ぶかは状況に左右されます。

    場当たり的な修正が良くないとわかっていても、時間的な制約で選ばなければならないことがあります。
    そのような場合はコメントを残したりチケットに登録したりと、後に対応することになったとき、少しでも楽になるようにすると良いかもしれません。
    なにしろ自分で記述したコードであっても、1カ月後には忘れていることもあるためです。

    修正の確認

    問題が修正できたら、実際に修正できているのかを検証しましょう。
    修正したての状態だと、特定の条件下のみでは意図通りの動きをするが、条件を変えたとたんに動かなくなる場合が多いためです。
    特に、場当たり的な修正を実施した場合は、修正したことの副作用として別の場所でバグが発生するということすらありえます。
    ここでハマると、場当たり的な修正→別の場所でバグが発生→場当たり的な修正……というループにハマってしまわないように気をつけたいところです。

    まとめ

    デバッグ方法を整理しましたが、書かれていることは当たり前のことかもしれません。
    しかし、どのような状況でも上記ステップを着実に踏んで進められるかとなると、話が変わってきます。
    ハマってしまうと、気がつくと闇雲に原因を探してしまっている……、ということは良くあります。

    上記ステップを踏んでデバッグを行い、その上でどうしても解決できないバグがある場合はどうすれば良いものでしょうか?

    答えの1つとはしては、その日は切り上げて帰って寝てしまうことです。

    身も蓋もない答えかもしれません。しかし1日かかって解決しなかった問題が、次の日すっきりした頭で取り組むと10分で解決するということが意外とあるためです。
    だいたいの場合、解決方法は複数あるものだったりします。
    頭がすっきりしているときに改めて取り組むことも、立派な解決策の1つであることを思い出せるようにしておきましょう!

    日々多様化・複雑化していくあらゆるシーンに於いて、シームレスにアテンドするソリューション事業部はこちら

    ●Wantedly掲載情報(本当にやりたいことに辿り着きたい技術大好きエンジニア募集!)

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

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

Pocket

  • インデックスを使用してデータベースの検索速度を高める

  • 2018/05/14
  • Category:
  • データベースのパフォーマンスを考える上で、本でいう目次に相当する機能であるインデックスを適切に設定することは重要です。
    インデックスはデータベースの検索速度に大きく影響し、引いてはWebサービスの快適さに直結します。
    今記事ではインデックスについて整理してみましょう。

    インデックスのメリットデメリット

    先ほども記述しましたが、インデックス機能を使うメリットは検索速度の向上です。
    使いかたによっては10倍以上も速度向上が見こめるため、適切なインデックスの使用は必須と言えるでしょう。

    逆に、デメリットもあります。
    インデックスはINSERT, UPDATE, DELETEを実施するたびに再生成されます。
    そのため、変更の多いテーブルにインデックスを作ると、逆に動作速度が低下することもあります。
    また、巨大なテーブルにインデックスを作ると、インデックスのファイルサイズが大きくなるという問題もあります。

    インデックスをどこに使うか?

    実際にインデックスを設置するには、どのようにすれば良いでしょうか?
    もちろんデータベースのテーブル構造ごとに異なりますが、おおまかな指針を考えてみます。

    01.WHERE句
    インデックスは検索速度を向上させるため、実際にWHERE句に使うカラムに設定すると効率化が見込めます。
    ただし、データ量が多く変更が多いカラムの場合は、インデックスの再生成が何度も実施されてしまうため、かえってパフォーマンス低下の怖れがあります。

    02.結合条件
    これは上記WHERE句と同様に、絞り込みを行う条件であるため、インデックスを効果的に使用できるためとなります。

    03.カラムの値の種類が多い
    区分などで0か1など、条件しかデータがない場合は、インデックスは効果を発揮しません。
    名前など、データが複数あるもののほうがインデックスを使用するものとしては望ましいものとなります。

    まとめ

    データベースの速度はサービスの快適さに直結します。
    ユーザに使いやすいサービスを提供するため、常に速度を意識したデータベースを構築しましょう。

    ●Wantedly掲載情報(本当にやりたいことに辿り着きたい技術大好きエンジニア募集!)

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

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

Pocket

  • システム開発での作業効率化に必要不可欠な定義ジャンプ(tags、language-server)

  • 2018/05/11
  • Category:
  • 大規模なシステム開発をしていると、そこそこの頻度で使用するコマンドがあるかと思います。
    そのなかでも今回は、定義ジャンプを紹介します。

    定義ジャンプとは


    コーディングをしていると、メソッドの内容や使用時に必要な引数がどのようになっているか思い出せないことが発生します。
    そのとき、都度メソッドがどのファイルのどこに記述されているかを探すのは手間となってしまうでしょう。
    そんなとき、定義ジャンプ機能があれば簡単にメソッドなどの定義先に移動して、内容を確認することができます。

    EclipseやといったIDEや、Atomなどのモダンエディタであれば大半の言語で実行可能な標準機能となりますが、歴史的なおさらいも兼ねて今までのやりかたも紹介してみたいと思います。

    検索を容易とするインデックスを作成するtags


    tagsとはメソッドや変数などの定義箇所のインデックスを作成するためのプログラムです。
    そのなかでも複数の言語に対応したctagsが有名(Google検索でたくさんヒットする)なので紹介します。
    以下のようなコマンドを実行すると、tagsというインデックスファイルが生成されます。

    ctags -R –languages=PHP –langmap=PHP:.php.inc –php-types=c+f+d -f ~/tags

    生成したファイルを読み取り、定義ジャンプを実現します。
    元々がUnixプログラムである関係上、vimやemacsなどのCUIエディタで実行可能でしたが、近年はwindowsでも秀丸エディタなどで対応しています。

    プログラムを解析して情報を提供するlanguage-server


    tagsを使ってインデックスを作成する方式は、安定しているとはいえ古いやりかたなのは否めません。
    そこで、MicrosoftがVisual studioとは対照的に、軽量なモダンエディタとして発表したVisual Studio Code(以下VSCode)ではどのように実現しているのかを紹介します。

    2016年にMicrosoftはlanguage server protocolという仕様を公開しました。
    これはプログラムを解析してコード補完、変数やメソッドの定義参照、コードのエラーチェックなどの機能を統一的に提供するプロトコルになります。

    機能ではなくプロトコル(規約)であるところがポイントで、プロトコルの形式を守ればどのようなエディタであっても同じ定義ジャンプ機能を実装可能となります。
    実際にはVSCodeで使われていますが、vimやEmacsでもlanguage-serverを使用した言語ごとのプラグインが各種公開されており、ctagsなしでの定義ジャンプが可能となuものがあります。

    まとめ

    昔ながらのctagsを使用する例は減りましたが、VSCodeなどモダンエディタが使えない環境においてはまだまだ現役です。
    既存のコードを検索する時間をtagsやlanguage-serverでなくして、新しいコードを書くことに集中できるようにしましょう!

Pocket

Pocket