サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
掃除・片付け
rightcode.co.jp
はじめに個人・チームの開発で Git を使ったバージョン管理を行っている人が多いと思います。 GitHub・GitLab・Bitbucket などの Git 管理サービスも充実していますよね。 今回はよりスマートに Git 運用を行なっていくための ブランチ戦略 についてお話ししていこうと思います。 ブランチ戦略って?Git では、複数人が並行して作業を行うための ブランチ という機能が用意されています。 このブランチの運用規約をあらかじめ定めておき、その運用に則った開発を行うことを ブランチ戦略 と呼びます。 なんでブランチ戦略が必要なの?ブランチを切ることで、他の人の作業に影響を与えず、また影響を受けずに実装を行いマージする、ということが可能になります。 しかし、Git ではブランチを切る際の制限が全く設けられていません。 そのため、誰でも自由に切ることができるという気軽さがある反面、
はじめにフロントエンドでの開発中、API がデプロイされていない状況でも、API 通信の挙動を確認したい! そんな状況は開発を行っている中でよく遭遇します。 特に新規開発では、フロントエンドとバックエンド同時に開発が進むことが多いため、フロント側で動作確認したい API がまだ開発中...というパターンが多いです。 そこで、そんな時に手軽にローカルで API の挙動が確認できるモックサーバーの作り方と使い方を今回紹介していきます。 環境構築json-server という Node.js のパッケージを使用するため、Node.js をインストールする必要があります。 json-server は手軽に REST API のモックサーバーを作ることのできるパッケージです。 https://github.com/typicode/json-server 基本的な GET メソッドの REST AP
参考:https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html クリーンアーキテクチャで調べるとよく出てくる例の円ですね。 ざっくり説明すると、円の中の各項目は矢印の向き(内側)に依存(参照)するようにして、特定の項目の仕様変更が他の項目に影響を及ぼさないようにしています。 それによってそれぞれが外部の項目を気にすることなくテストできたり、仕様変更の影響範囲が少なくなったりといった利点があります。 実装:クリーンアーキテクチャ化では早速、クリーンアーキテクチャ化を進めていきましょう! Entities外側は内側の参照を持つため、内側から順に実装していきます。
第1回目~Brainfuckを実装しながらC++学ぼう 本連載では、「Brainfuck」の特性を理解しながら、実際に Brainfuck インタプリタを作成していきたいと思います! 実は、Brainfuck を理解するということは、C/C++ でつまずきがちな「ポインタの概念を理解する」ということにつながります。 つまり、Brainfuck インタプリタの実装は、プログラミング言語を深く学習するのに、もってこいの題材だということ。 今まで、C/C++ を避けていたプログラマの皆さん! これを機に、C/C++ をマスターしながら、Brainfuck もマスターしていきましょう! BrainfuckとはBrainfuck (またはBrainf*ck) は、実用性を無視した、難読プログラミング言語 (通称 Esolang ) に分類されます。 単なるユーモアプログラミング言語でありながら、チュ
「Vue.js」で無限スクロールする方法とは? 「無限スクロール(Infinite Scroll)」は、ページを切り替えることなくページネーションするテクニックです。 ページの一番下までスクロールすると、表示するコンテンツがなくなるまで、続きを自動的に読み込んでくれます。 スクロール操作が基本のモバイル端末で、「最もスマートなページネーション」とも言われています。 今回は、人気の「Vue.js」で無限スクロールを実装する方法と、無限スクロールに必要な SEO対策について解説していきます。 無限スクロールの実装パターンと SEO 対策無限スクロールには、2つの実装パターンがあります。 同一URLで、ページ内にコンテンツを読み込ませる方法読み込むコンテンツ単位にURLを割り当ててページを分割する方法それぞれの実装パターンを、SEOの観点で見ると次のような特徴があります。 1.同一URLで、ペー
Vue.jsでサジェストを実現するライブラリ3選 Google検索で、キーワードの一部を入力すると、そのキーワードを含む候補をその下に表示する機能があります。 この機能の名前を「サジェスト」と言います。 スマートフォンからのネット利用が、PCからのネット利用を超えているモバイルファーストの時代において、サジェストは、スマホでもサクサク入力できる有力な手段になります。 今回は、JavaScirpt フレームワークの「Vue.js」で、サジェスト入力を実現するライブラリを 3つ 紹介したいと思います! サジェストを実現するライブラリ1『vue-simple-suggest』1つ目は、「vue-simple-suggest」を紹介します。 名前の通り、シンプルなサジェストライブラリで、npm でダウンロード数が一番多いライブラリです。 インストールCDN 版の Vue.js アプリの場合、htm
最適化手法の更新過程や性能を比較検証してみよう! 機械学習では、学習を行う際に、「損失関数の値」と「勾配」からパラメータを更新し、「モデルの最適化」を行います。 この時の「モデル最適化手法」は様々な方法が考案・活用されていますが、それぞれ最適化される過程は異なってきます。 今回は、Pytorchに用意されている各種最適化手法(torch.optim.Optimizer)の学習過程がどのように異なるのかについて、「損失関数」や「精度の比較」により検証します。 本記事は「前編」「後編」でお届けいたします。 各種torch.optim.Optimizerの紹介と挙動 今回検証する「最適化手法」は、次の6つです。 SGD : torch.optim.SGDAdagrad : torch.optim.AdagradRMSprop : torch.optim.RMSpropAdadelta : tor
Tesseract とは? Tesseract は、オープンソースの OCR エンジンです。 「OCR」とは、画像ファイル中の文字を、テキストファイルとして読み込む技術のことです。 Tesseract は、コマンドラインのインターフェースを実装しているため、パソコンへインストールするだけで、OCR ができます。 Tesseract と Python で画像処理するメリットは?Tesseract を Python と組み合わせて利用すれば、画像を前処理してから Tesseract へ渡すことができます。 これにより、OCR の精度が向上し、Tesseract が読み取った文字列を任意の形に処理できます。 例えば、紙に印刷された文書も、Tesseract を利用すれば、テキストデータとして保管できるのです。 さて、今回は、Tesseractを使って、画像処理でOCRを試してみたいと思います!
LightGBMとは? LightGBM は、2016年に米マイクロソフト社が公開した勾配ブースティングに基づく機械学習手法です。 公開されてまだ3年足らずですが、「Kaggler」の上位6割以上が LightGBM を用いているという集計結果が報告されています。 これは、データサイエンティストとして、「知らなかった」では済まされません。 LightGBM を実装できるようになり、ステップアップしていきましょう! それでは、計算原理から実装まで、順を追って説明していきます。 LightGBM の計算原理LightGBM 公開前の勾配ブースティングは、「XGboost」が主流でした。 勾配ブースティングには、「予測精度は高いが、計算時間が長い」という特徴があります。 当時、勾配ブースティングの主流であった「XGboost」に対し、LightGBM の「予測精度を保ったまま計算時間を大きく削減
PyAutoGuiとは? 「PyAutoGui」は、Python のモジュールの一つです。 近年流行している RPA(Robotic Process Automation) の機能を、Python で実装することが可能になります。 人間が操作しているのと同様に、マウス・キーボードの操作を画像認識と組み合わせて自動化することができます。 うまく活用すると、繰り返しの単調な作業などを簡単に自動化させることができます。 非常に魅力的なモジュールで使い方はアイデア次第で無限大の可能性があり、使い方も簡単です。 本記事では、そんな「PyAutoGui」の使い方をご紹介したいと思います。 PyAutoGuiの導入方法PyAutoGuiのインストール「PyAutoGui」は Python のモジュールなので、お馴染みの pip コマンドを使ってインストールします。
Storybookとは? 「Storybook」とは、UIコンポーネントの開発を手助けするオープンソースツールです。 Storybookを導入することで、下記のようなことが可能になります。 アプリケーションから分離された環境で、コンポーネント単位の挙動を確認できるコンポーネントを一覧できるスタイルガイドとして利用し、チーム内で共有する「Storybook」は、元々、Reactアプリケーション向けに開発されたツールでした。 現在では、「Vue」や「Angular」などのフレームワークや純粋な html など、様々なフロントエンドに対応しています。 今回は、シンプルなアプリケーションを例に、「Vue」アプリに「Storybook」を導入する流れを体験しましょう! 【 Storybook 公式ページ】 https://storybook.js.org/ VueプロジェクトにStorybookを導
iOSアプリ開発で必要なプロビジョニングプロファイルを作成をするiOS開発をしていると遅かれ早かれ辿り着く、「証明書周りの設定」。 頻繁にする作業ではないので、ついつい忘れてしまいがちです。 せっかく自分でアプリを開発しても、iPhoneにアプリをダウンロードできなかったら、寂しい気持ちになりますよね。 それでは、Xcode で作ったアプリを、iPhone にダウンロードするのに必要な、「プロビジョニングプロファイル」。 この「プロビジョニングプロファイル」の作成を、ご紹介したいと思います! 前提条件前提条件として、下記の内容は済んでいるものとして、話を進めていきます。 MacへのXcodeダウンロードiPhone開発端末の準備Apple developer programへの登録プロビジョニングプロファイルとは?「プロビジョニングプロファイル」とは、「証明書」+「App ID」+「端末の
後編:物体検出モデル YOLOv3 を自前画像で学習させよう この記事では、物体検出する機械学習モデル「YOLOv3」を、Windows 10 上で動かす方法を解説しています。 前回は、YOLOv3 を動作させる環境を構築しました。 今回は、YOLOv3 を自前画像で学習させたいと思います! どんなものができるの?最終的に目指すのは、以下のようなイメージです。 2つの本が、別々のものとして検出されています。 「物体検出編」では、いよいよ、これを目指します。 前回の記事はこちら
SHAPを用いた木構造モデルの解釈機械学習モデルの解釈性については、しばしば問題になります。 「モデルの精度が高いが、なぜモデルが、その予測を行ったのかを説明できず、実用に至れなかった…。」 といった事を、多くの方が経験しているのではないでしょうか? 今回は、複雑なモデルの解釈を行うための手法「SHAP(SHapley Additive exPlanations)」を紹介します。 そして、実際に「木構造モデル」に適用したいと思います。 この記事で紹介すること複雑なモデルにおいて、各特徴量の寄与の解釈を行うモデル「SHAP」を解説。「SHAP」を、実際に「木構造モデル」に適用してみた結果を、特徴量重要度の指標と比較する。モデルの解釈性についてまず、機械学習モデルの解釈性について説明します。 一般的に、「モデルの複雑性」と「解釈性」は、トレードオフの関係にあります。 例えば、 「重回帰モデル」
損失関数とは?ニューラルネットワークの学習フェーズでは、的確な推論を行うために最適な各パラメータ(重みやバイアス)を決定します。 このとき、最適なパラメータに近づくための指標となるのが「損失関数(loss function)」になります。 これは、「目標」と「実際」の出力の誤差を表すものです。 損失関数をイメージで例えるともし、スイカ割りをする人を、ニューラルネットワークにより制御できるとした場合で考えてみます。 目的は、今いる地点からスイカのある場所に移動し、スイカを割ることです。 この場合、スイカからどれだけズレているか?を表すのが「損失関数」であるということができます。 この、「スイカからのズレ(損失関数)」が、最も小さくなるようなパラメータを探索していく事で、最終的にスイカのある地点に辿り着き、見事スイカを割る事ができるでしょう。 このように、ニューラルネットワークの学習では、損失
TensorFlowによって生成されるモデル・ファイルの「.pb」は、大きく分けて上記のようなパターンで「.tflite」に変換可能です。 公式ドキュメントでは、一番下の「クラス:tf.lite.TFLiteConverter」の使用を推奨しています。 3種類のクラスそして「クラス:tf.lite.TFLiteConverter」では、モデルに応じて3種類のクラスが用意されています。 TFLiteConverter.from_saved_model(): SavedModel ディレクトリ を変換、MobileNetなどで。TFLiteConverter.from_keras_model(): tf.kerasモデルを変換、MNISTなど。TFLiteConverter.from_concrete_functions(): 具象関数を変換。そして各クラスの記述方法は違って、予め定められた方
(株)ライトコードでモバイルアプリケーション開発をしている笹川(ささがわ)です! いきなりですが、スマホアプリ開発に飽きちゃいました! なので、ライブラリを作ってみることにしました!(ドドーン) どんなライブラリ?最近のAndroidアプリ開発では、言語に「Kotlin」を利用することがスタンダードになってきました。 Kotlinで書くことで、Javaよりも記述が減るのが嬉しいですね! さらに「Kotlin Extension(拡張)」をすることで、より簡素に記述できるようになります よく使うロジックや、ちょっと面倒なロジックを「Kotlin Extension」で用意されていたら、みんなの「DevelperExperience」は素敵なことになるのでは? ってことで、そんなライブラリを作ることにしました! それがこちら! 【common-ktx】 https://github.com/s
ResponderとFastAPIの共通部分についてまずは、今回比較する2つのフレームワークについて、簡単にご紹介したいと思います。 実は、この2つのフレームワークは共通している部分がいくつかあります。 Starletteベース Responder と FastAPI は、Starlette (スターレット: フランス語で”小さな星”) がバックで動作しています。 つまり、どちらのフレームワークも Starlette をラップしたフレームワークということです。 Starlette は、あまり日本では流行っていませんが、このフレームワークは様々な機能が詰め込まれており、拡張性に長けています。 Responder と FastAPI を使う場合は、Starlette の機能も使おうと思えば使用可能です。 また、Starlette におけるサーバーの起動は、Uvicorn と呼ばれるフレームワー
はじめに~同期処理と非同期処理について~本記事では JavaScript の非同期処理を扱うための Promiseという仕組みについて取り上げます。 JavaScript、とくにサーバーサイドで利用されるNode.js では非同期処理を利用するAPIが多数出てきます。 Promise の仕組みを理解しておくとプログラムの作成がはかどるはずです。 まず本題へ入る前に『同期処理』と『非同期処理』について説明させていただきます。 JavaScript の同期処理同期処理とは上から順番に処理されていくことです。 処理が終了するのを待ってから、次の処理を実行します。
WebスクレイピングについてWebスクレイピングは、HTMLから自分が欲しいと思うデータを取得すること。 これを行うプログラムをスクレイパとも呼びます。 Web上のデータを取得する上では、欠かせない技術となっています。 クローラにより、自分が欲しいと思うデータのあるWebサイトにアクセスし、スクレイパによって情報を取得していくという流れです。 スクレイピングをする前に スクレイピングは、HTMLとCSSを知っておかなければ、何もできません。 そのため、自信のない人は「Progate」などで復習、または学習しましょう。 また、Selenium(セレニウム)を使ってのスクレイピングやDOM解析には、JavaScriptの知識が必要になる事がよくあります。 JavaScriptについてよく知っておくのも、スクレイピングに役立ちます。 スクレイピングを行う際の注意点スクレイピングは、禁止しているサ
トライ木で高速な辞書を作りたい! トライ木(英: trie)というデータ構造を知ってますか? トライ木はテキストを扱う際に良く用いられているデータ構造で、文字列を非常に高速に検索することができるため、辞書の実装などに利用されています。 本記事では、トライ木の特徴の紹介と構築方法の解説・実装を行っていきます。 最終的に単語とその読み方を入力としたトライ木を構築し、単語を入力することでその読み方を出力する辞書システムを作成します。 トライ木とは トライ木とは、上の図のようなデータ構造で、順序付き木の一つです。 この図は、例として「a」「ab」「abc」「ac」「bc」という5単語が入ったトライ木です。 ノードの左上の数字は、ノードidを表します。 id0のノードの <s> というのは先頭文字を表していて、検索の際はここからスタートします。 丸が二重になっているノードは、そのノードが単語の終端文
GraphQL とは GraphQL をご存知でしょうか? API の仕様なのですが、こいつがなかなか結構すごいやつなのです。 クライアントとサーバー間の通信を行うときに利用するクエリ(query)言語です。 クエリ(query)とは?クエリ(query)とは、「質問する」「紹介する」「問い合わせる」などの意味をもつ英単語です。 SQL データベースに要求するときは、 SQL クエリとか言いますよね。 Graph を要求するクエリ言語GraphQL は、 Graph を要求するクエリ言語という意味になります。 グラフ……といえば、おそらく「折れ線グラフ」や「円グラフ」「棒グラフ」といったものを連想すると思います。 ですが、GraphQL が指すグラフは、グラフ理論を元にしたもので、点(ノード)と線(エッジ)の集合で構成されたグラフのことを指しています。 よくみてみると、GraphQL のロ
FlaskアプリをHerokuへとデプロイするまでの手順Pythonによって動かすことができるFlaskですが、Djangoほど大規模なアプリを開発する必要はなく、簡単なAPI処理などを考えれば一つのアプリ開発の選択肢として考えられると思います。 この記事では、話題のFirebaseをデータベースとしてFlaskアプリをHerokuへとデプロイするまでの手順を紹介します。 モダンな技術を使っているので、今風の実装方法といって良いでしょう。 本題に入る前に、「Firebase」と「Heroku」について軽くご説明したいと思います。 Firebase(ファイアーベース)とは Firebaseとは、アプリケーションを運用する土台となるソフトウェアとなります。 データベース作成から何かエラーが起きたときのレポート作成までさまざまな機能が搭載されており、バックエンドエンジニアの役割を担っているといっ
そうじゃ、パソコン以外の組み込み用OSには、日本発のOS「TRON(トロン)」が広く利用されておるのじゃ! TRONの夢「どこでもコンピュータ」 TRONプロジェクトとはTRONプロジェクトは1983年頃、坂村健教授(当時は東京大学助手)が提唱し、開始された日本独自のOS開発プロジェクトです。 TRONとは「The Real-Time Operating System Nucleus」の略です。 日本語でいうと「リアルタイム(実時間)で機器を作動させるOSの中心部分」という意味です。 TRONプロジェクトの出発点坂村教授は、電球から人工衛星まであらゆるモノにコンピュータが入り込み、ネットワークでつながると予想しました。 それぞれの機器に組み込まれたコンピュータの動きを統一するために、OSを標準化させるというビジョンを提示しました。 それがTRONプロジェクトの出発点となったのです。 このよ
(株)ライトコードの笹川(ささがわ)です! 引き続き、ツイートを猫語に変換する「にゃイッター」作っていきます! 簡単なTwitterアプリです。 詳しくは、前回の記事をご覧ください。 それでは、早速進めていきます!
Docker(ドッカー)とは 多くのエンジニアは、環境構築に時間を費やしています。 そのような状況の中で、Dockerが近年存在感を増しています。 Dockerは、コンテナ型のアプリケーションの一種であり、プログラムを実行する全ての情報を含めることができます。 また、ユーザーは、ハードドライブに全てのデータを広げることをせず、最小限のメモリを使うことでコンピュータ全体の速度が落ちるのを避けることが可能になります。 Dockerの仕組みDockerは、Dockerがインストールされているコンピュータの全てでプログラムが問題なく実行されることを保障します。 実際、エンジニアが使うコンピュータは、WindowsやMac、Linuxなど様々な種類のOSが存在します。 これまでは、PrallelsやVMwreFusionなどでMac上に仮想Windowsを用意してプログラムを実行するなどの必要があり
async/await という仕組み 本記事では、 JavaScript の非同期処理を扱うための async/await という仕組みについて取り上げます。 async/await は、 Promise を利用した非同期処理をよりわかりやすく記述できます。 本題へ進む前に Promie の復習をしておきましょう! Promise の復習async/await は、 Promise の仕組みを利用しているため、Promise への理解が大切だからです。 非同期関数を作成するときに Promise が利用できます。
はじめまして、(株)ライトコードのエンジニアでは最年少の鈴木です! 2019年、10月に入社ました。 10月はITの全体的な研修をした後、11月から研修でAndroidアプリの作成を開始しました。 最後にそのアプリを「Google Play ストア」に公開したので、その感想をまとめてみようと思います。 それでは、いってみます! 書籍の管理をするアプリを公開しました!私が、今回作ったのは、書籍の管理をするアプリです! 【書籍管理アプリ】 https://play.google.com/store/apps/details?id=io.github.takayan40.bookapp このアプリの機能はこんな感じです。 Androidで書籍の裏表紙にあるバーコードを読み込む公開APIを使って、書籍の表紙とタイトルを取得購入日や感想を登録登録した内容の一覧表示現在は、まだ「登録」と「削除」以外の
どんなアプリ作るの?修了に際して、どのようなアプリを作ろうか考えました。 色々悩んだのですが、過去の記事でTwitterAPIを利用したのを思い出し、TwitterAPIを使ったTwitterアプリケーションを作ってみようと思いました。 ツイートしたい内容の一部を、猫語(「にゃ」とか「にゃん」)に変えるという簡単なアプリです! その制作過程を、今回と次回で書かせていただいて、Go言語(Golang)入門は一旦修了とさせていただきます! どう進めていくのか?まずは、TwitterAPIの登録その後、Go言語(Golang)の実装最後に、HTMLの実装今回のメイン言語は、Go言語(Golang)となります。 そのため、画面の実装はFWなどを利用せずに進めます。 ちなみに、TwitterAPI の登録方法は、今回は割愛させていただきます。 それでは、作っていきましょー! Twitter認証の実装
次のページ
このページを最初にブックマークしてみませんか?
『株式会社ライトコード – WEB・モバイル・ゲーム開発に強いIT企業 – - 株式会社ライ...』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く