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

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

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

LIST OF ARTICLES

記事一覧

  • 画像:ブログサムネイル

    レビュー

    Keychron K3 のレビュー ~スリムなメカニカルキーボード~

    こんにちは、社内ブログ初投稿のはまと申します。今回は私が普段使っているキーボード Keychron K3 を紹介しようかと思います。キーボードを探していた時の条件はこんな感じでしたUS配列macとwindows両方で使えるBluetooth接続可能使い心地が良さそうなのmacとwindows両方で使える特にこの条件を満たすキーボードってほとんどないんですよねーそして出会ったのが Keychron K3 な訳です※一緒に写ってるパームレストは純正オプションです半年以上使っていて気に入っているのが、MacBookに尊師スタイルでジャストフィット!!ということです!パームレストをのっけても足の部分がちゃんとサイドのフレームのところに乗るようになっていて、本体のキーボードを押してしまうこともないんですよねー多分そう作ってるんでしょうね!(写真のはクラウドファンディングのもので現行品は足の構造が変更されているみたいです。 写真で見た感じ多分大丈夫だけど、確実に大丈夫かはわからないです。。)他の魅力はこんなところでしょうかミニマムなデザインですっきりスイッチが交換可能で打ち心地をカスタマイズ可能(keychron専用スイッチ)キーストロークが短めで、ノートPCのキーボードがメインだった人も馴染みやすいBluetoothでiPad, Androidタブレット, chromebook でも!高級キーボードは3万円するものもある中、これは1万円ちょいで買えるので手を出しやすいと思います。一つデメリットとして、購入ハードルが少し高いです。基本は英語の本国サイトから購入することとなります。(Amazonで売ってたりもしますが高いです。 今は日本の正規代理店もあるみたいでモデルによってはJIS配列もあるみたい)ちなみにK3からファンクションキーを省いた、さらにミニマムなK7もプレオーダー中で良さそうー(実はすでにポチリ済み)

  • テクログ

    【Laravel 8.x】API / Ajax のエラーレスポンスをJSONで返す

    どうも!先日恐竜科学博へ行き、少年の心を取り戻したわいです!いや~、良いですね。恐竜は。図鑑の隅々まで(※1)読み込んでいた幼少期を思い出しました。ずっと忘れていた恐竜への気持ちを蘇らせてくれたのは、バイリンガルニュースの恐竜くんの回でした。恐竜科学博もバイリンガルニュースも両方おもしろかったです。(※1)・・・ティラノサウルスのページのみ恐竜は化石というかたちで現代人に当時の情報を提供しますが、WebAPIでは一般的にJSONという形式でクライアントに情報を提供します。しかし、LaravelのデフォルトではエラーレスポンスをJSONで返してくれません。このままだと、クライアントがデバッグするのは、化石なしで恐竜の研究をするくらい難しいです。そういうことで、今回はLaravelでAPI / Ajax のエラーレスポンスをJSONで返す方法について書きたいと思います。(※2)(※2)・・・無理やり話をつなげた一つ目の方法は、$request->headers->set('Accept','application/json'); を追加して、APIのいかなるリクエストに対しても Accept:application/json を加えるという方法です。こうすることで、$request->expectsJson() が true になり、Illuminate\Foundation\Exceptions\Handler 内でエラーレスポンスをJSON形式で返してくれるようになります。しかし、この方法の場合、abort(404) をしたときなどに投げられる HttpException や内部エラーを返すときに、ファイル名などの膨大な情報がJSONに含まれてしまい、とてもキレイなエラーレスポンスとは言えません。(そもそも、ファイル名などはクライアントに教えたくないです)参考:Laravel APIで常にJSONをリクエストするミドルウェアというわけで、下記方法がオススメです。Illuminate\Foundation\Exceptions\Handler を継承している app\Exceptions\Handler.php(※3)を実装します。(※3)・・・このクラスは、Laravelのバージョンによって中身が微妙に違います。本記事はLaravel 8.x系です。<?php namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Validation\ValidationException; use Symfony\Component\HttpFoundation\Response as HttpResponse; use Throwable; class Handler extends ExceptionHandler { /**  * A list of the exception types that are not reported.  *  * @var array  */ protected $dontReport = [ // ]; /**  * A list of the inputs that are never flashed for validation exceptions.  *  * @var array  */ protected $dontFlash = [ 'current_password', 'password', 'password_confirmation', ]; /**  * Register the exception handling callbacks for the application.  *  * @return void  */ public function register() { $this->reportable(function (Throwable $e) { // }); $this->renderable(function (Throwable $e, Request $request) { if ($request->is('api/*') || $request->ajax()) { Log::error('[API Error] '.$request->method().': '.$request->fullUrl()); if ($this->isHttpException($e)) { $message = $e->getMessage() ?: HttpResponse::$statusTexts[$e->getStatusCode()]; Log::error($message); return response()->json([ 'message' => $message ], $e->getStatusCode()); } elseif ($e instanceof ValidationException) { Log::error($e->errors()); return $this->invalidJson($request, $e); } else { return response()->json([ 'message' => 'Internal Server Error' ], 500); } } }); } } 投げられたすべての例外がこのクラスを通ります。やっていることは下記です。・API / AJax リクエストの時だけ、例外処理のレンダーを変える・abort(401), abort(404, 'Record not found.') などの HttpException のエラーメッセージをJSONで返す・$request->validated()実行時のバリデーションエラーをJSONで返す(ここは、Illuminate\Foundation\Exceptions\Handlerの処理をそのまま使う)・内部エラーの場合、'Internal Server Error'というエラーメッセージをJSONで返す・HttpException, ValidationException はデフォルトでログを吐かないようになっているので、API / Ajaxのときはログを吐くようにするこれで、無事クライアントに理解しやすいエラーレスポンスを返すことができるようになりました。こんな感じで、恐竜も意図的に化石になる部分を決めていたらおもしろいですね。(※4)(※4)・・・おもしろくない以上、わいでした。健闘を祈る!!

  • 雑記

    摂りすぎ禁物

    どうも、5月に入社したばかりのkabuです。お手柔らかにどうぞよろしくお願いします。突然ですが皆さん、運動出来てますか?テレワークの増加やジムに行きづらい…などの理由から国民全体の肥満率が上がっているんじゃないでしょうか。そんな自分もフルリモートでの業務に移行し、運動不足のためお腹周りがパツパツに…なのでダイエットを始めました!就業前と後にウォーキングを1時間ずつやり、自重トレーニングも行い食事面でも低糖質高タンパクを意識し、牛乳を一切飲まず豆乳を飲むようにしていました。実際に体重は減っていったのですが、効果があることをいいことに豆乳を箱買いし、のどが渇けば豆乳!という感じでジャンジャン飲んでるとある日からニキビが増えてきました。まさか、と思い豆乳の過剰摂取について調べると 豆乳の過剰摂取はホルモンバランスを崩しニキビができたり、体の女性化が進んでいくとのことでした。イソフラボンにそんなデメリットがあるとは・・・何事もバランス良く!、ですね。と言いつつ今は麦茶の過剰摂取マンになっております。。。

  • テクログ

    めぐる式二分探索

    ▼はじめにみなさん、二分探索しているでしょうか。(?)二分探索とは、ソート済み配列に対する探索アルゴリズムの一つで、膨大なデータに対しても高速に動作するのが魅力ですよね。しかし、いざ二分探索をプログラムで書こうとすると、度々バグが発生したり、応用の仕方がわからなかったりといったことが起こります。(私は起こりました。)そこで、バグが起こりにくく、応用も簡単にできる、「めぐる式二分探索」というものをご紹介します。▼二分探索の応用その前に二分探索の応用のついてお話しします。二分探索には「ソート済み配列から目的の値を見つける」という使い方の他に、「ある条件を満たす範囲の最大値 or 最小値を見つける」ということもできます。例えば以下のような配列を考えます。1 2 3 4 7 8 9ここで「ある条件」を「値が6以上」と設定すると以下のように色分けをすることができます。1 2 3 4 7 8 9青い部分が「ある条件」を満たす範囲(値が6以上)で、赤い部分が「ある条件」を満たさない範囲(値が6未満)となります。後は二分探索を用いてこの境目を見つけることさえできれば、青い部分の最小値と赤い部分の最大値を見つけることができます。この例だと、値が6以上かつ最小の値は7、値が6未満かつ最大の値は4であることがわかります。これが二分探索の応用になります。▼めぐる式二分探索二分探索には様々な実装方法が存在するのですが、その中の一つが「めぐる式二分探索」になります。めぐる式二分探索を使用すると以下のようなメリットがあります。・バグが発生しにくいこと・先ほどの「応用」の考え方を踏襲していること終了条件や更新時の値もテンプレ化されているため、バグに気をつける必要性があまりないことが利点です。そのテンプレートは以下のようになっています。ok = N; ng = -1; while(abs(ok - ng) > 1) {   mid = (ok + ng) / 2;   if(solve(mid))   {     ok = mid;   }   else   {     ng = mid;   } }   ただし、Nは配列の要素数、absは絶対値を返す関数、solveはmidが条件を満たすかを判定する関数です。midが条件を満たす場合はokの値をmidで更新し、midが条件を満たさない場合はngの値をmidで更新するような、非常にシンプルな仕組みになっています。また、探索終了時には必ずokとngの位置が隣り合うようになるため終了条件も明確です。▼具体例最後に具体例を通して「めぐる式二分探索」の動きを見ていきます。2 3 5 6 7 8 9このようなソート済み配列から3の位置を調べたいとします。ここである条件を以下のように設定します。・条件を満たす(OK):3以上・条件を満たさない(NG):3未満これで実際の動きを見てみます。 - 2 3 5 6 7 8 9 -青色がOK、赤色がNGの場所を指しています。はじめはOKとNGの位置は配列外としておきます。 - 2 3 5 6 7 8 9 -OK=7とNG=-1の平均は3なので、6が条件を満たすかどうかを調べます。 - 2 3 5 6 7 8 9 -6は3以上であるため条件を満たします。よって、6より右側はすべて条件を満たすことがわかりました。 - 2 3 5 6 7 8 9 -OK=3とNG=-1の平均は1なので、3が条件を満たすかどうかを調べます。 - 2 3 5 6 7 8 9 -3は3以上であるため条件を満たします。よって、3より右側はすべて条件を満たすことがわかりました。 - 2 3 5 6 7 8 9 -OK=1とNG=-1の平均は0なので、2が条件を満たすかどうかを調べます。 - 2 3 5 6 7 8 9 -2は3以上ではないため条件を満たしません。よって、2より左側はすべて条件を満たさないことがわかりました。OK=1とNG=0の差の絶対値が1以下となったため探索終了です。OKの位置を見ると値が3であることが確認できます。(厳密には3以上の要素の中で最小のものが求まります。)▼終わりにいかがだったでしょうか。二分探索でバグが発生する、応用がなかなかできないという方は是非めぐる式二分探索を活用していただけたらと思います。名前の由来↓https://twitter.com/meguru_comp/status/697008509376835584

  • テクログ

    Flutterはじめました(3)

    お久しぶりです。のりさんです。Flutter第3弾を書きたいと思います。前回のブログでは、Flutterの動きをざっくりと理解するためデモアプリのソースコードをみていきました。【過去Flutter関連記事】・第1回:開発環境構築・第2回:デモアプリのソースコードについて今回はFlutterのAssets(アセッツ)という仕組みを使ってアプリ内からファイルを利用するプログラムを書いてみたいと思います。【開発環境】・Windows10・Android Studio ArcticFox 2020.3.1・Flutter 2.2.2それではデモアプリのソースコードを修正して進めていきたいと思います。①ファイルの準備 アプリ内で利用したいファイルは、プロジェクトに置いておく必要があるようです。 プロジェクト配下にassetsというフォルダを作成し、そこへファイルを置いてみました。  上記のようなこんな感じですね。②プロジェクトの設定 プロジェクト配下に「pubspec.yaml」というファイルがあります。 こちらのファイルにプロジェクトの設定が書かれているようです。 ①のファイルをAssetsに登録することでアプリ内から利用できるようになるようなので 「pubspec.yaml」にある「assets:」の部分にファイルパスを設定していきます。  書き終わったら右上の「Pub get」ボタンを押すことで適用されるようなので ボタンを押してみます。 exit code 0 となったので問題なく登録できたということのようです。 ③アプリ内から利用してみる プロジェクト作成時のデモアプリから以下を変更していきます。  【変更内容】 A.画面タイトルを変更する  ⇒「Assets画像の表示」へ変更 B.中央のカウンターテキストが表示されている箇所  ⇒画像が中央に表示されるようにする C.右下の丸いボタン(+)  ・アイコンを(+)から画像のものに変更  ・ボタン押下時、状態によって画像表示を切り替える   ⇒画像が表示されていない状態:画像を表示する   ⇒画像が表示されている状態:画像を非表示にする 【ソースコード】   「A」はタイトルの内容を変更するだけとなります。  画像の表示状態を管理するために_showImageプロパティを用意しました。 「B」では三項演算子を使って現在の表示状態によって画像を表示するか判断しています。 _showImageがtrueの場合は画像を表示し、falseでは空のテキストを表示しています。 「C」の右下の丸いボタンでは ボタンを押すたびに画像の表示と非表示が切り替わるように OnPressedで_showImageの値(true/false)を設定しています。 ここでは値変更後の再描画をするためsetState関数も呼び出しています。 またchildの部分ではアイコンをデモアプリのものから変更しました。①~③が完了したものをAndroidエミュレータで実行してみます。 おお、こんな感じで表示されました!左が初期表示で、右下のボタンを押すと画像が中央に表示されもう一度押すと非表示になりますね。今回はAssetsを使って画像ファイルを表示できるようにしてみました。Assetsを使うことで画像以外のファイルも利用できるようなので他のファイルでも試していきたいと思います。それではまた!

  • 画像:ブログサムネイル

    雑記

    モンステラ

    はじめまして!4月に新卒入社しただいすけと申します!突然ですが、観葉植物を育てたことはありますか?観葉植物は置いているだけで素敵なインテリアになります。またリラックス効果もあり、仕事から帰ってきた時、在宅で仕事をした時等に疲れた心身を癒してくれます。僕は農学部出身なのですが、大学生活最後の半年になるまで自分で植物を育てたことはありませんでした。本日は、そんな僕でも枯らさずに育てることができている観葉植物をご紹介したいと思います!僕が育てているのはモンステラという植物で、僕はIKEAで買いました。結構メジャーな観葉植物なのでネットや観葉植物店、インテリア店で買えると思います。迫力があり大きくなる種や可愛らしい小さい種までいくつかあり、斑模様の葉をつける個体や白い葉をつける個体と個体差もあります。自分好みのものやインテリアに合わせてどういったものを買うか選べるのも良い点です。夏は毎日たっぷり水をやり、冬はほとんど水をやらず、日光に当てていると夏の間にすくすくと成長してくれます。僕の育てているものは買った時から20cmくらい大きくなりました!育っていく姿を見ると変化のある楽しい生活になるかもしれません。コロナウイルスで休みの日も家を出ないような生活をしたりして、毎日が単調で疲れてしまった人は是非、観葉植物を育ててみてください!