サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
recruit.cct-inc.co.jp
ソースジェネレーターを使いたい ソースジェネレーターというとC#にはT4(Text Template Transformation Toolkit)テキストテンプレートと呼ばれるものが昔からありました。これはVisual Studio 2005のときに登場した汎用ソースジェネレーターで、実にC#2.0のころから存在しています。(Visual Studio 2008 から同梱されるようになりました。) T4は標準でインストールされることと、ビルドプロセスに容易に組み込めることから、C/C++におけるプリプロセッサーの如く長く活用されてきました。 この度.NET 5(C#9)には新たにソースジェネレーターの機能が追加されました。今更なぜこれが必要だったのでしょうか。 今回は使いたい理由を考えながらC#9ソースジェネレーターとT4を比較し、使うべき局面を見極めていきましょう。 使いたい理由1 :
フロントエンドからバックエンドまでC#を使いたい .NET 5 では、コアモジュールのパフォーマンス向上、言語面の進化に加え、ASP.NET Coreも進歩しました。この記事ではASP.NET Coreの進歩に着目します。 私たちが ASP.NET Core 5 を使わない理由はあるでしょうか。 おそらく「C#のエンジニアが揃ったチームの新規開発」のシナリオにおいてそれはほとんどありません。積極的に使いたい理由を6つ取り上げます。 使いたい理由1 : 最新のC#9をサポートしている C#9の record をサポートしています。recordはclassの拡張なので動いて当然といえば当然と思えますが、こうした言語の拡張がスムーズに取り込まれていくことはとても重要です。そしてこれも.NET / C#の魅力です。 C#で近年強化された何を使うことができるでしょうか。 例えば、パターンマッチングを
ちなみにLambda with Container Imageによるメリットにはサイズ制限以外もりますが、今回は主にサイズ制限に着目しています。 LambdaでMeCabを利用する場合の課題 LambdaでMaCabを利用しようとした場合にファイルサイズ制限の影響を受けるのが辞書ファイルです。 MeCab本体のサイズはそこまで大きくないのですが、辞書にNEologdを利用するとビルド済みのバイナリデータのサイズが1GBを超えてきます。 ビルド時のオプションで登録単語数を減らしても700MB程度のバイナリデータになります。 1GBのバイナリデータとなるとLambda Layersのサイズ制限である250MBを軽く超えるため、今まではEFSを利用して解決するしかありませんでした。 といってもLambdaにEFSがマウント可能になったのが2020年6月なので「そんな処理はLambdaでやることじ
はじめに BERTとは、自然言語処理に使われる汎用言語モデルの名前である。Googleが2018年に発表した(原論文)。このモデルをファインチューニングすることにより、自然言語処理の多くのタスクでSOTA(State Of The Art)が達成されている。今回はこのBERTを用いた文書分類を、既存コードとライブラリを用いて行う。 問題設定 以下の問題を考える。 文書を複数個用意する。各文書はタイトルと本文(document)から成る。ここで、本文とは文(sentence)の集まりのことである。 文書は複数の分野から集める。 タイトルあるいは本文だけからその分野を予測したい。 最初に、タイトルによる分類(タイトル分類)を考える。 タイトル分類の方針 タイトルを1つの文とみなし、これをBERTを用いて1つの多次元ベクトル(文埋め込み:sentence embeddings)に変換する。分野を
こんにちは、くりりんです。 開発でユニットテストもやってねと任され、やり方を調べている中でMockito(モキート)という飲み物に出会いました。最初は飲み方がわかりませんでした…(笑)(最初に扱った時は使い方を理解できませんでした)。何回も飲むうちに飲みやすく感じるようになって、気が付いたらやみつきになっていましたね(何回も使っていたら便利すぎて手放せなくなりました)。 今回は、そんなMockitoの飲み方を解説していこうと思います。 くれぐれも飲み過ぎて倒れないようにしてくださいね! Mockitoとは? Mockitoは、Javaのユニットテストのために開発されたモックフレームワーク(mocking framework)です。テストでモックオブジェクトを直感的に操作できるのを目的として開発されています。 Mockitoの名の由来はもうわかると思いますがモヒートから来ています。 キレイで
こんにちは、Nakataです。 前回はVue.jsに触れてみようという記事でVue.jsを紹介しました(前回記事)。今回はそのVue.jsの特徴である、コンポーネントについて紹介していきます。コンポーネントとはどんなものなのか、どのように使用されているのかについて、実際にコードを書いて、簡単なアプリケーションを作成しながら解説します。 コンポーネントとは コンポーネントとは簡単に説明すると、UI(ユーザーインターフェース)を作成する要素がまとまったものです。HTML、データ、ロジック、CSSを要素としてコンポーネントに含むことができます。そのコンポーネントを組み合わせることで、Webアプリケーションを作成することができます。作成したコンポーネントには名前が付けられます。その名前を登録し呼び出すことで、必要な時に何度でもアプリケーション内で使用することができます。 この時、コンポーネントはV
こんにちは、エンジニアのtetsuです。 どうしてモデルがこのような予測をしたのか、ということを説明することの重要性は近年ますます高まっているように思えます。これには予測結果の解釈をおこなうことで様々な知見を得たいという要求や、ブラックボックスのモデルは信用しづらいというのが理由に挙げられます。 線形回帰や決定木といったモデルは予測結果に対する解釈をすることができますが、単純で表現力が乏しいです。一方でディープラーニングや決定木のアンサンブル学習などの複雑なモデルは表現力が高いですが、人間が解釈しようとするのは困難です。 このような問題を解決するために近年は様々な手法が提案されています。今回はそれらの中の1つであるSHAP(SHapley Additive exPlanations)について簡単にご紹介します。SHAPは日本語だと「シャプ」のような発音のようです。 なお、SHAPについては
GPUをサポートしたい場合は、ディレクトリdarknet内のMakefileに記載されている「GPU=0」を「GPU=1」に変更したのちmakeすれば良い(ここを参照のこと)。 GPU=1 CUDNN=0 OPENCV=0 OPENMP=0 DEBUG=0 ARCH= -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=[sm_50,compute_50] \ -gencode arch=compute_52,code=[sm_52,compute_52] # -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated? … YOLOv3はC言語とCUDA
こんにちは、BBです。 10月のLT会でも発表の際にAmazon SageMakerを使ったので、資源の有効活用という観点でブログにもまとめていきます。ややタイトル詐欺の感もありありですがお付き合いください。 Amazon SageMakerってなに?? Amazon SageMaker(以降はSageMaker)はAmazon Web Service(以降はAWS)が提供する機械学習サービスの中の一つです。SageMakerは2017年末に発表され、東京リージョンで公開されたのは2018年6月という比較的ナウいサービスです。SageMakerは機械学習のコーディング~デプロイまでを一括してカバーしている点を売りにしており、運用やバックエンドについてとやかく考えたくないAIエンジニアでもAWSの庇護のもと安心してサービスを展開できます。また、学習済みのモデルも用意されており、機械学習のこと
エンジニアのtetsuです。 勾配ブースティング法のライブラリとして、去年の夏頃、ロシアのYandex社からCatBoostがリリースされました。売りとしては他の勾配ブースティングのライブラリよりも過学習を抑えることで、精度が良いという点のようです。ベンチマークはこちらです。 勾配ブースティング法の他のライブラリも同様ですが、CatBoostでは回帰、分類、ランキングが対象の問題となっています。CatBoostの回帰や分類のチュートリアルはありますが、ランク学習をおこなうものは見つかりませんでした。せっかくなので、ここではランク学習を試していこうと思います。 ランク学習とは? ランク学習とは文書や商品などのランキングを学習する方法のことをいいます。たとえば、どこかの検索エンジンでキーワードを入力して検索をおこなうと色々なウェブページがでてきますが、これらのウェブページをどういう順番で表示す
エンジニアのtetsuです。 単語のベクトル表現を得る手法といえば、ニューラルネットワークを用いたWord2vecが一番有名かもしれません。ただし単純にWord2vecを用いた場合には未知語のベクトル化ができません。これに対して、fastTextを用いると未知語に対してもベクトル化が可能になります。 今回はfastTextで未知語をベクトル化し、学習データに含まれる単語の中から類似しているものを探すということを試してみます。 fastTextとは? fastTextはFacebookによって開発されているライブラリでGitHub上でソースが公開されています。 https://github.com/facebookresearch/fastText このfastTextは高速に単語の分散表現を得ること(単語のベクトル化)と文の分類問題を解くことが可能です。今回に関しては前者の単語の分散表現を
お初にお目にかかります。エンジニアのBBです。 このエントリーでは機械学習とは無縁の人生を送っていた人間(僕)がいざ機械学習を始めるにあたり試行錯誤していく過程がメインになっていきます。玄人の方は鼻で笑い、初学者の方はどうか参考にしていただけると幸いです。 レコメンドプログラムを作ろう 今回は初python、初機械学習に挑戦ということでおなじみブログ記事のレコメンドをするプログラムを作成したいと思います。ブログを読んでいるとして、その読んでいる記事に関連する記事を「おすすめ記事」みたいに表示する機能、よくありますよね。あれです。ここから詳細を説明していきます。 処理概要 ブログ記事レコメンドプログラムの処理概要をまとめるとこんな感じです。 手順1.ブログ記事を取得 手順2.テキストをクリーニング 手順3.形態素解析~特徴ベクトル作成 手順4.レコメンド記事出力 学習データとしてブログ記事を
こんにちは、エンジニアのtetsuです。 Pandasでデータを処理しているときに、ここを並列計算させたら早くなりそうなんだけどなぁ、と思うことはありませんか?もしかしたら、Daskを使うことで望みの並列計算がおこなえるかもしれません。今回はDaskでのPandasのapplyの並列化の例を示していきます。 Daskとは? Daskとは並列計算やOut-Of-Coreの処理が簡単にできるpythonのライブラリです。NumPyやPandasのデータを扱うことができますが、Dask内ではこれらのデータを分割して処理をおこなうことで、並列化を実現しています。 インストールは簡単で、pipで次のようにおこなえます。Anacondaにはデフォルトで入っているので、Anacondaを利用している場合にはインストールは不要です。
こんにちは、新入社員のNakataです。入社するまでは生物系の研究をしていましたが、この度Orizuru開発に携わることになりました。そんな私の初めての実務として、既存のアプリケーションをシングルページアプリケーション(SPA)に移行する作業を行いました。実装には、SPAを効率的に開発するためのフレームワークVue.jsを使いました(Vue.js公式サイト)。 今回はそもそもSPAとは、Vue.jsとはどんなものなのかを、私自身の理解のため、これからSPA開発や Vue.jsを学ぶ人たち向けに、簡単にまとめました。また、SPA移行で役に立った機能(vue-router)の紹介もしたいと思います。 SPAとは SPA(Single Page Application)とは、名前の通り単一のページで構成されるアプリケーションになります。SPAではない webアプリケーションでは、ページ遷移を行う
こんにちはJJです。今回はVue.jsの機能の1つであるcomputedとmethodsの使い分けを意識して簡単な検索機能を題材として説明したいと思います。 Vue.jsとは 公式サイトでは、このように記述されております。 Vue (発音は / v j u ː / 、 view と同様)はユーザーインターフェイスを構築するためのプログレッシブフレームワークです。他の一枚板(モノリシック: monolithic)なフレームワークとは異なり、Vue は少しずつ適用していけるように設計されています。中核となるライブラリは view 層だけに焦点を当てています。そのため、使い始めるのも、他のライブラリや既存のプロジェクトに統合するのも、とても簡単です。また、モダンなツールやサポートライブラリと併用することで、洗練されたシングルページアプリケーションの開発も可能です。 引用: https://jp.
はじめに 今回はHalideを紹介する。 Halideとは Halideは、画像処理に特化したDomain Specific Language(DSL)である。高速化を目的とした言語であり、C++プログラム内に記述される。現在対応しているプラットフォームは、x86/SSE, ARM v7/NEON, CUDA, OpenCLである。Halideの大きな特長は、アルゴリズムとスケジューリングの記述を分離する点である。ここでスケジューリングとは 並列化 ベクトル化(SIMD命令の発行) ブロック化(処理の局所化) を組み合わせ、効率よくタスクを実行する手順を見つけることである。ハードウェアに依存しないアルゴリズムの記述が可能であり、各ハードウェアごとに最適なスケジューリングを行うことができる。Halideプログラムの実行までの流れは以下のようになる。 C++プログラム内にHalideの提供する
こんにちはJJです。今回は表題の通りAWS S3を利用して簡単なWebサーバーを立てる方法について取り上げます。S3の概念やその利便性についてお伝えするのが今回のねらいです。しかしその前にWebサーバーについて簡単におさらいしてからS3について説明したいと思います。 Webサーバーとは インターネットを利用するうえでブログを投稿したり、Wikiページを編集したり、あるいはネットショッピングやチャットを楽しんだりなど、ありとあらゆるWebサービスが身近に溢れています。このようにWebサービスを提供する媒体としてWebサーバーは欠かせません。Webサーバーはクライアントからリクエストを受け取るとそれに応じた処理が行われます。Webサーバーには「静的なWebサーバー」と「動的なWebサーバー」が存在します。 静的なWebサーバー 静的なWebサーバーではクライアントのリクエストに対してWebサー
開発チームエンジニアのyasuです。 突然ですが、みなさんフォントって気にしたことありますか?? プログラミングをするうえで、みなさんそれぞれ思い思いのエディタやIDEを使っているかと思いますが、 実はプログラミングをするうえでフォント設定って大事なんです! 可読性・視認性の高いフォントならコーディング時の入力ミスを防げますし、 等幅フォントならインデントで字幅がずれて困ることもありません。 このようなことから、開発効率を考えても重要なポイントになります。 今回はそんなプログラミング向けのフォントを私の趣味嗜好から一挙ご紹介します! プログラミングに向いてるフォントって?? プロポーショナルではなく等幅を選ぼう プロポーショナルフォントとは、文字の幅が文字ごとに異なっているフォントを言います。 例えば、「a」に対して「i」が小さかったり、「あ」に対して「い」が大きかったり小さかったりします
開発チームエンジニアのyasuです。 皆さんはKotlin(コトリン)という今がホットな開発言語をご存知でしょうか?? KotlinはJVM(Java仮想マシーン)上で動作する、AltJava言語として登場した新しい言語です。 最近はAndroidアプリの公式開発言語として採用されたことで注目を浴びていますが、 Java同様、Androidだけでなく、Webアプリはもちろん、機械学習、IoT、GUIアプリなどで活躍することのできる言語です! そこで今回は、JavaのGUIライブラリであるJavaFXを使ってKotlinでGUIデスクトップアプリを作ってみます。 あまりJavaでデスクトップアプリを作る人はいませんが、筆者はKotlinが大好きなため、チャレンジしてみることにしました! 第1回は、環境構築とHello, worldを実際に表示するまでをハンズオン形式で解説していきます。 Ko
このページを最初にブックマークしてみませんか?
『recruit.cct-inc.co.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く