信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    素敵だら! Linux コマンド ~基本編 その2~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回は前回に引き続き「~基本編 その2~」です。echocatrm■echo言わずと知れた文字列出力コマンド `echo` です。`echo` の後に続いて文字列を入力することで、その文字列をそのまま出力してくれます。だから echo(やまびこ)というわけですね。`echo` 自体は多機能ということはありませんが、なくてはならない存在です。主にメッセージの表示に使用され、変数も展開して表示することができるのでスクリプト内で多用されます。知っておくべきオプションとしては `e` オプションで、エスケープシーケンスを解釈して出力してくれます。echo -e 'hogehoge\npuyopuyo' ※クォーテーションで文字列を囲まない場合は「hoge\\npuyo」のようにエスケープシーケンスにバックスラッシュ「\」を2つ付けますそのほかしばしば利用されるのが、ファイルに文字列を上書きまたは追加で書き込みたい時です。リダイレクトの `>` または `>>` を使用して `echo` による画面への出力(標準出力といいます)をファイルへの出力に変換します。・上書き(または新規作成)echo hogehoge > file ・追加echo hogehoge >> file もちろん `e` オプションを使用して文字の途中に改行を入れることもできます。■cat`cat` は concatenate (連結)のことで、ファイルとファイルを連結した結果を標準出力します。`echo` と同様にリダイレクトを使用することで、連結した結果をファイルに出力することもできます。指定するファイルは1つでもよく、その場合ファイル内容が出力されるだけになるので、ファイルの閲覧にもしばしば使用されます。結合してファイルに出力※指定するファイルはいくつでもよいcat hoge.txt piyo.txt > file.txt hoge.txt の内容を出力して閲覧cat hoge.txt またヒアドキュメントを用いることで、`echo` ではできなかった複数行の文字列を出力することもできます。・ヒアドキュメントで標準出力cat << EOS hogehgoe piyopiyo EOS ・ヒアドキュメントでファイル出力cat << EOS > file.txt hogehgoe piyopiyo EOS ■rm`rm` はファイルとディレクトリの削除コマンドです。rm file.txt のようにすることで指定したファイルを削除することができます。ディレクトリを削除するときは `r` オプションをつけて再帰的に(recursive)削除する必要があります。その時にはディレクトリ内のファイルも併せて削除されます。rm -r dir 削除したいファイルが複数ある場合、一つずつ指定することもできますが、ワイルドカードを使用することで一気に削除することができます。例えばディレクトリ test にファイル hoge1, hoge2, piyo3 が存在し、ファイルのみ全て削除したいときにはrm test/* hoge とファイル名のついたファイルのみ全て削除したいときはrm test/hoge* とすることで実現できます。`rm` によってファイルを削除するとき、環境にもよりますが、誤った削除を避けるためファイルを削除する毎に確認のプロンプトが表示され、y キーと Enter キーを押下することで削除が実行されます。しかし削除対象のファイルが多数ある場合、一つ一つ削除するごとに確認するのは骨が折れます。そのようなときには強制的に削除するオプション `f` が利用できます。使用には注意が必要で、バックアップを取っていない環境やレビューを通っていない作業である場合、基本的にやってはいけません。組織によっては、禁止していたり規則を設けているところもあるかもしれません。ひとつパスやファイル名を間違えただけで、削除してはいけないファイルが抹消され、大規模な障害となることもあります。なかでも `r` オプションと組み合わせた強制再帰的削除はとても危険です。以前私の勤めていた会社の同僚が開発環境で以下のコマンドをroot ユーザーで実行してしまいました。rm -rf / これは Linux のシステムを含めまるごと削除してしまうコマンドです。ひとつの開発環境が消え去り、大きな損害を生むことになりました。上記コマンドを実行した動画がネットに投稿されていますので、興味のある方は探してみてください。または個人の仮想環境で試してみるのも良いと思います。以上、`echo`, 'cat', 'rm' のご紹介でした。
  • テクログ

    データレイクを知って一発で好きになりました

    皆さん初めまして。初めましてじゃない方も初めまして。しゃむぽんです。先日、AWS Summit Tokyo 2019に行ってきました。超絶にわか知識な状態で挑みましたが、結果とても有意義な3日間になりました。様々な用語やサービスを知りました。今更知ったのかよって思われるものもあると思いますが、少なくとも自分にはどれもこれも新鮮ですごくタメになりました。その中でも一番個人的に気に入ったのがデータレイクという概念です。ビッグデータを整理するための概念で、AWS社の説明では「規模にかかわらず、すべての構造化データと非構造化データを保存できる一元化されたリポジトリ」だそうです。AWSだとS3ですね。いや純粋にすごくないですか?今まで自分の感覚ではデータベースの構造化データと画像や動画のような非構造化データの間にはなんかこう絶対的な超えられない壁みたいなものを感じてましたからね。ほんと衝撃でした。っていうだけの話なんですけどね。データレイクで調べるとすごいタメになる記事いっぱい出てきますのでもっと知りたいという方は是非調べてみてください!逆にいやもうそんなんとっくに知っとるしって方は生暖かい目で見ていてくだてか教えてください。にわか知識なのであんまり深掘りもできそうにないので今回はこの辺で。ほいでは!
  • テクログ

    お話アプリ

    今年のGWは10連休でしたね。個人的に興味のあった機械学習による会話アプリを試してみました。「ありがとう」と文字を入力しますと「どういたしまして」のように返答文を考えて、返してくれるアプリです。以下のqiitaの記事を実動作させることを目指します。日本発の機械学習フレームワークchainerでの実装ですね。Seq2Seqといった「ある文章A」⇨「ある文章B」に変換する技術になります。https://qiita.com/kenchin110100/items/b34f5106d5a211f4c004独学で本当に正しいやり方かは保証できませんが以下に試したことを記載します。日本語の語句ごとの分解はMeCabを使用します。pipで入れます。MeCabで生成した際、応答側のテキストは各応答文末に、文の終わりを示すため'<eos>'を入れます。学習にはGoogleのColaboratoryを使用します。Colaboratoryを使用する理由は、設定を変えると無料で(時価70万円相当!?)ハイスペックGPUを使用できるからになります。CPUでも学習は可能ですが遅いです。。Colaboratoryによるファイルのアップロードダウンロードがわかりにくいのですが、以下を実行する感じです。□アップドーロ-----------------from google.colab import filesuploaded = files.upload()-----------------□ダウンロード-----------------from google.colab import filesdownloaded = files.download('{ファイルのお名前.weights}')-----------------□ちゃんとアップロードできたか確認%%bashlsここでの学習のポイントは学習はGPUで行いますが、重みの書き出しはCPU用に変換します。webアプリ化のため機械学習したモデルをDjangoからつなぎ込みますが、ここでの文章生成の推論はCPUで行うとになると思います。-----------------model.to_cpu()serializers.save_hdf5(outputpath, model)model.to_gpu(0)#また処理をGPUに戻してあげる。-----------------またtotal_lossをprintして確認しながら進めました。損失が減っていくとそのデータに対しての学習がうまくいっていることになります。機会がありましたら、続きの学習した重みとモデルを使用して実際に文章を生成するところを記載したいと思います。
  • テクログ

    個人的に考えるWEBサービス作成で技術的に重要だと思う要素はURLの扱いです

    URLを管理する機能が最も重要かなと思っています。 たとえば、アプリケーションのURLを管理するクラスさえあれば、パンくず、ページネーション、SQL生成の前処理、View切り替え、SEO対策、などの処理が複雑にならずに済むと感じるからです。 ルーティングの機能に各URLセグメントに名前付けが可能であれば、何かしらのID、何かしらの日付、などをセグメントの順番に関係せずに取得できますので、新たに使用するWEBフレームワークにそういった機能が無いかのチェックはしたいところです。  FuelPHPでは、routes.phpにこう書きます。正規表現を利用して数値のみを許可しています。 Controller で取得するときはこんな感じです。 debug::dumpで出力した画面です。 このブログはPythonでDjangoを使用して作成されていますが、上記と同様にセグメントに名前指定をしています。もしかすると、一般的なWEBフレームワークには備わっている機能なのかもしれません。
  • テクログ

    ブラウザテストフレームワークの5月でした

    ブラウザテストフレームワーク、使ってますか!単体テストもいいけど、やっぱりユーザが使って実際ちゃんと動作してるの?ってのが気になりますよね。最近はjsでいろいろやることも多いし、関連するところが動かなくなったり。(jsの単体テストやれって話もありますが)で、有償無償問わず、いろいろと見てみました。結構網羅したり、試したりするだけでもそれなりにかかったので、なんとなく一覧的に。・いわゆるツールでの自動テスト系teststudioRanorexAutifyTestCompleteUnified Functional TestingROBOWAREuipathkatalon studioimacros・いわゆるブラウザテストフレームワーク(E2Eテスト用)Seleniumを直使用CodeceptionCodeceptJSNightwatch.jsWebdriverIOScrapywatirAppiumSelenideGebおよびSpockCapybaraSplinterCasperJSSST (selenium-simple-test)重要視した点としては、パッとつくれて、パッと動かせる。なんだこれ、どうやるんだ、みたいなのはなし。……ということで、有償の自動テストツール系について、可能なものは体験版を入れてちょっと動かしたりしました。「ちょっと」なのはあえてちょっとだけやって、それでもできないのならば簡単じゃない!ということでした。もちろんデモや動画をみてると、「なんかすごいことやってるし、なんでもできそう…」となりますし、実際理解すればなんでもできるのかもしれません。でも少しだけいじっただけでは全く思ったとおりに動かないんですよね。というわけでツール系はなくなり、ブラウザテストフレームワークの検証となりました。テストコード書かないといけない、というのは確かに手軽とはいえないですが、サンプルがあればあとはその改良をつづけていけばなんとかなる、という思惑です。現状のサポート具合、活発さ、書きやすさ…などからCodeceptionCodeceptJSが残り、mac,PCでのブラウザテストはクリア。実機もやりたい、ということでAppium連携をしたり…ということをやっていましたよ。実機動作は結構コツが必要だったり、iPhoneだとやりたいことがどうしてもできない部分があったり…となりましたが、それ以外は結構思ったとおりのテストができましたので、毎回確認しないといけない動作がある、とか、そういった場合には役に立つのではないでしょうか。一個小ネタでいえば、テストをAWS Lambdaに連携させて、外への影響を確認したりする、ということもやってみました。純粋なE2Eテストの範疇からは外れるかとは思いますが、やはりどうしても確認したい内容もありますので、そういうものもいかがでしょう。ちなみに最終的に残ったのはCodeceptJS+Appiumでした!(以下イメージ画像
  • テクログ

    AeとPs

    最近AfterEffectsで映像を作る際、PhotoshopやIllustratorの連携機能をよく使います。以下はモーションをほとんどつけてないのでかなり雑ですがとりあえず作った何かです。PhotoshopでデザインしてAEに持ってきた感じです。CC glass wipeを使ったら光沢が波打つ感じになりました(初めて使った。。)図形を一つずつレイヤー分けすればもっと細かくモーションつけられるんでしょうがいかんせんちょっと面倒ですね。Illustratorの場合はパスを持ってこられるのでより細かく動かせるので好きです。上記のデザインはPhotoshopの混合ブラシを使っているのですが、これ大好きなのでAEにも搭載してほしいっす。これのモコモコした部分を細かく動かしてみたいのですがよくわかりませんでした。ブラシを途中で切って全体をレイヤー分けしてアニメーションするしかないのではとか思ってるのですが絶対非効率的ですよね・・・中途半端なかんじですが今回は以上です。