サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
tech-lab.sios.jp
はじめに こんにちは、tinaです。気が付けば新卒3年目となっていました。今回は、1年ぶりのブログ更新です。 この記事の内容はほぼ、2024/7/19(金)に行ったPS Live https://www.youtube.com/watch?v=NUu41GQ-G9g で話したものと同じです。 VMの自動起動を行う目的 今回は、Azure AutomationによるVMの自動起動の設定方法について紹介します。 AzureのVMは、自動停止の設定は簡単にできるのですが、自動起動の設定にはちょっとした手順を踏む必要があります。今回はそれについて説明していこうと思います。 例えば、テスト用のサーバーを特定の時刻だけONにしておきたい場合に、自動起動と自動停止の設定を組み合わせることで、常時サーバーを起動する場合に比べ、大幅なコストカットが実現できます。 以下は、2024年7月のAzureリソースの
こんにちは。サイオステクノロジーの橋本です。 今回、調べてもイマイチわからなかったので実際に動作検証してみました。 今回のテーマは Ansible のモジュール「ansible.posix.selinux」を用いて RHEL 9 の SELinux を変更すると正しく変更してくれるか です。 結論は…タイトルにある通りです。 前提として RHEL 9 から SELinux の無効化方法が変更となっています。 【参考】RHEL9 での SELinux の無効化方法について 今回 SELinux を無効化する PlayBook は以下の通りかなりシンプルになります。 - name: Disable SELinux ansible.posix.selinux: state: disabled RHEL 9 サーバは現状 SELinux 有効化 (Enforcing) されています。 RHEL 9
第1章: Difyとは? 生成AIが注目され始めて早数年。ChatGPTの登場が世間を賑わしたのは記憶に新しいですね。その後も、DALL-EやGPT-4など、様々な生成AIが登場しました。これらの生成AIは、それぞれの特徴を持ち、様々な用途に活用されています。ChatGPTなどの生成AIの技術は、LLM(Large Language Model)と呼ばれ、膨大なテキストデータから学習し、高度な言語理解を実現する技術であり、自然言語処理の分野で大きな注目を集めています。 そして、LLMを利用したアプリも登場しました。特に大きな注目を集めているのはRAGやAIエージェントでしょう。RAGは、外部のデータベースや文書から関連情報を取得して回答の精度を向上させる技術、そしてAIエージェントはLLMを活用してタスクの実行や意思決定を自律的に行う仕組みです。これらのアプリは、LLMを利用して、高度な自
設定ファイルに設定可能な情報 前回、デフォルトの設定からどのような設定項目があるかを見ていきました。 今回は、それ以外にどのような設定があるのか、よく使用されると考えられる設定項目からピックアップして解説します。 ローテートの頻度 – daily:毎日 – weekly:毎週 – mounthly:毎月 – yearly:毎年 圧縮の有無 – compress:圧縮する – nocompress:圧縮しない (デフォルト) 空のログファイルの扱い – notifempty:空のログはローテートしない – ifempty:空のログもローテートする (デフォルト) さらに、下記設定項目を使用することで、より詳細に動作を設定することができます。 delaycompress ローテート直後のログをすぐに圧縮せず、次回ローテート時に圧縮します。 【例】ローテート1回目 log → log.1、2回目
こんにちは、サイオステクノロジーの遠藤です。 今回は、WebフレームワークであるRemixとルーティングライブラリであるReact Routerが統合されたReact Router v7のルーティングについてまとめていきます。 ルーティング方法 React Router v7では、Configuring Routes、Component Routes、File Route Conventionsの3種類のルーティング方法があります。 Configuring Routes React Router v7のデフォルトで設定されるルーティングで、app/routes.tsに定義されたルーティング構成が反映されます。 Component Routes 以下のコードのような形で定義するルーティング方法。React Router v6で使用されていた定義らしく、v6から変更なく使用できるのが利点のよう
挨拶 ども!ノリでブログを書いていると、今週は月曜日から毎日ブログを書いている龍ちゃんです。最近は、Dify入門ガイドシリーズに力を入れています。 今回は、Azure OpenAI Serviceのお話になります。生成AIを活用したアプリを作成する際に、レスポンスがJSONで返答されるかどうかは重要な要素になります。DifyでもAOAIでも、方法を模索して実装していました。 Difyでの構造化:「Dify入門ガイド:LLM出力を構造化する!JSONデータ作成の具体的手順」 AOAIでの構造化:「AOAI:Gpt-4oでJSON出力に失敗する対症療法」 AOAIのバージョンアップに併せて「構造化出力」という機能がリリースされていました。こちらを用いてTypescript環境で構造化出力を行うサンプルの実装を行います。公式のサンプルでは、PythonとREST APIの記載があります。 今回は
こんにちは、サイオステクノロジーの織田です。 最近CMでよく見る話題の生成AI、Geminiを使ってみました!今回は、実際に使ってみた感想をブログ形式でまとめてみます。 Geminiとは? Geminiは、Google Workspaceに組み込まれた生成AI機能です。Gmail、Docs、SpreadSheetなど、普段使い慣れたアプリでAIの力を活用できるのが特徴です。同じ生成AIツールですとChatGPTがありますが、あちらはチャットボットとしてしか活用ができません。一方でGeminiは、Gmail、Docs、SpreadSheetといったGoogle Workspaceのツールと組み合わせて作業を行うことができます。 たとえば、Gmailでメールを作成する場合、Geminiはメールの下書きを作成したり特定のメールを抽出したりできます。ドキュメントでは、Geminiはドキュメントの要
URLからHTMLを取得して情報を圧縮する まずは、ソースコード全体を貼ります。こちらは「URLを引数として受け取り、HTML情報を取得し、特定のタグ情報内に含まれる情報を圧縮し、テキストで返答する:返答するサンプルとなります。 function testFunction(url) { // HTMLを取得 const html = UrlFetchApp.fetch(url) // HTMLを解析 const document = HtmlService.createHtmlOutput(html).getContent(); var content = ''; // 必要な部分を抽出(この記事の内容が <section class="entry-content"> タグ内にあると仮定します // 当ブログのコンテンツ部分になります const regex = /<section cla
今回は、React+TypescriptでNoSQLであるFirestoreを扱ってみる技術ログになります。新しい機能として、Typescriptの型を適応することができる【FirestoreDataConverter】を発見したので扱ってみようと思います。内容としてはTodoのCRUD処理を実装しています。 初めに 今回この記事で分かることは以下になります。 React+Typescript+Firestore(v9)環境ででのCRUD処理の基本 FirestoreDataConverterを用いてFirestoreのやり取りに型定義を導入する サンプルコードは下の方にあるので、このブログは下から読みましょう。心に余裕のある人だけは、上から読んでも問題ありません。 どもども、お疲れ様です。3月も折り返しに差し掛かりぬるっと生活をしている龍ちゃんです。前回は、認証基盤として【Firebas
挨拶 ども!久しぶりにブログを連続で執筆していて、日常の至るところでブログのネタを考えていますね。非常に便利な習慣が戻ってきている龍ちゃんです。 今回は「Dify上で、LLMからの出力から構造化情報(JSON)を作成して返答」となります。LLMからの出力をJSONに成型してアプリに組み込む方法に関しては、Azure OpenAI Serviceを活用していた際にもぶつかっていた問題になります。(AOAI:Gpt-4oでJSON出力に失敗する対症療法) LLMから構造化データを作成することができればアプリの表現の幅が大幅に広がります。方法としては、「コードブロックでオブジェクトを詰め替える」という力技で実現しています。 2025/02/17時点でのDify Cloudの情報となります。 おそらく、バージョンアップで「終了」ブロックで対応されるかなと予想中。 実現したいこと Dify(API)
はじめに ども!最近はDifyとGAS系のブログを執筆している龍ちゃんです。本職では、設計の作業をやっています。そちらも知見が貯まったらブログとして放出していく予定ですが、もう少し先ですね。 さて、今回は自分のブログ内でのコラボ企画となります。内容としては「DifyとLINE Botを接続」となります。LINE BotをGASで作成したことがある方であれば、10分程度で実装できる内容なのでぜひ試してみてください。 GASでLINE Botを作ってみたことがない方は、こちらのブログを参考に取り組んでみてください。全体感は1時間もあれば、作成することができると思います。 GAS×LINEで作るAIチャットボット 今回の実装ではGASとLINE Botの連携なので、GASパートとDifyパートに分かれています。全体の構成としては、以下のような構成になります。 GASの担当領域は、LINEからのW
こんにちは、サイオステクノロジーの遠藤です。 Reactでアプリを作っていると、「状態管理ってどうすればいいの?」と悩むことがありますよね。たとえば、useState を利用していると、コンポーネントの階層が深くなってきたときにpropsのバケツリレーで複雑になりうまく管理できなくなることがあります。 そんなときに便利なのが Jotai というライブラリです! Jotaiを使うと、シンプルな書き方で状態を管理でき、複雑なアプリでも扱いやすくなります。 この記事では、Jotaiの基本的な使い方を初心者向けにわかりやすく解説します。「Reactの状態管理をもっと簡単にしたい!」という方は、ぜひ最後まで読んでみてください! Jotaiとは? Jotaiは、Reactの状態管理をシンプルにするライブラリです。「Atom(アトム)」と呼ばれる単位で状態を管理し、それらを組み合わせることでアプリの状態
こんにちは、サイオステクノロジーの服部です。 Ubuntu公式で現在開発中のauthdを検証してみましたので、簡単に手順をまとめていきます。 authdはUbuntuにてEntra IDやOIDCに対応したIdPを使用したログインを実現するためのデーモンとなります。 Ubuntu 23.04、23.10では、aad-authというモジュールを利用してAzure AD(現Entra ID)を使用したログインを実現していましたが、Entra ID以外のOIDCベースのIdPなどへの対応を実現するために、authdの開発が開始されています。
こんにちは。サイオステクノロジー OSS サポート担当 山本 です。 今回は前回お話ししたソフトウェアのインストールや管理をいい感じにしてくれる “パッケージ管理システム” の RPM…をより容易に使えるようにしてくれる DNF (Dandified YUM)を見ていきたいと思います。 ■そもそもこれは何をするもの? DNF は先述のとおり、パッケージ管理システムである RPM による管理などをよりいい感じにできるようにサポートしてくれるものです。 DNF 自体もまた、パッケージ管理システムの一つと扱われたりもします。 その性質上、DNF は RPM を使用しているシステム上でのみ使用されます。 類似するソフトウェアとしては、dpkg に対する apt や、DNF の前身である YUM などがあります。 DNF は RPM に関連する様々な機能…特にインストールに関する機能を提供しますが、
どもども平社員の龍ちゃんです。今回も「Google Apps Script」第4弾!です。今回は、これまでの集大成ともいえる窓口づくりになります。簡単にAPIを構築する手法を紹介します。今回も登場「以下の図」です。こちらでAPIを構築することで、開発の幅が広がります。今回も初心者向けの記事になっています。それでは初めて行きましょう。 前提知識 まずは、Google Apps ScriptでAPIを公開するにあたって必要となる前提知識についてお話します。ここでのお話は読み飛ばしていただいてもかまいません。結論としては、「ウェブアプリでAPIを作ると、協力な制限が付くがお手軽でAPI作成ができる」ということになります。 ウェブアプリ・実行可能APIとの比較 さて!突然ですがGASでAPIを公開する方法は2通りあります。「ウェブアプリ」と「実行可能API」です。実行可能APIという名前のほうがA
はじめに ども!弊社X「sios-eng (SIOS Tech Lab)」の中の人もやっている龍ちゃんです。ブログのイベントの内容をつぶやいたり、時々企画をやっていたりします。企業SNSの運用って難しいですよね。 今回は、Difyを活用して「記事のURLを入力したら、ポスト内容を作成」するワークフローを作成していきたいと思います。 URLからXのPR文作成ワークフロー 作成から動作確認まで10分程度で完了するので、手元の環境で試してみてください。全体感は以下のようなシンプルな感じでまとまります。 ステップとしては、4つです。 開始:URL・文字数上限を入力 WEB SCRAPER:URLからスクレイピングを行ってくれるツール(Dify製ツール) LLM:記事の内容をXの投稿内容に成型 終了:LLMが作成したテキストを出力 開始:変数定義 変数としては、URLと文字数の上限を設定しています。
seq コマンドとは seq コマンドは、数字の列を出力するコマンドです。 よく for 文の繰り返し処理などで、連続した数字を簡単に出力したい場合に使用される事が多いですが、 連続した数字だけではなく、様々な条件で数字を出力する事ができます。 使い方・オプション 連続した数字を出力する 「seq 値」のように、引数に1つの数字のみ指定した場合は、1からその数字までの連続した数字を出力します。 $ seq 5 1 2 3 4 5 開始・終了の値を指定する 「seq 開始の値 終了の値」のように2つの数字を指定すると、開始の値から終了の値までの連続した数字を出力します。 $ seq 6 10 6 7 8 9 10 開始・増分・終了の値を指定する 「seq 開始の値 増分の値 終了の値」のように3つの数字を指定すると、開始の値 (1つめ) から終了の値 (3つめ) までを、増分 (2つめ) の
現在クラウドネイティブ技術が発展する中で、様々なアプリケーションの基盤としてKubernetesを中心としたプラットフォームが重要な役割を果たしています。 特に OpenShift、Rancher、VMware Tanzu などのソリューションは、企業のKubernetes環境を支える主要な選択肢として注目されています。 本記事では、それぞれの特徴や違いを分かりやすく解説します。 1. OpenShift(オープンシフト)とは? 概要 OpenShift は Red Hat が提供する エンタープライズ向けの Kubernetes プラットフォーム です。 Kubernetes の上に独自の管理機能を加えた「Red Hat OpenShift Container Platform」が代表的なソリューションです。 特徴 エンタープライズ向けの機能が充実 OpenShift は Kuberne
こんにちは、サイオステクノロジーの遠藤です。 今回は、生成AI開発でよく登場する「マルチモーダル」について解説します。このブログでは、まず概要を理解し、その後アプリケーションの作成を通じてより深い理解を目指していきます。それでは始めましょう! マルチモーダルとは? マルチモーダルとは 複数の形式(モード)を組み合わせて理解する仕組み のことです。 例えば、人間は普段からマルチモーダルな理解をしています。道を歩いていて信号機を見るとき、目で「赤信号だ」と認識し、同時に耳で信号機の音を聞いて、「今は渡っちゃダメだな」と判断します。これが「視覚」と「聴覚」という複数のモードを使った理解、つまりマルチモーダルな理解になります。 この考え方が生成AIにも使われています。 例えば、画像をアップロードして「これ何?」って質問すると、生成AIがその画像を見て説明してくれます。これは、生成AIが「画像」と「
模範回答ありの自動評価では、汎用的なモデルに対しては既存のデータセットが存在するため、評価指標を用いた自動評価が可能ですが、RAGの場合は独自のデータを用いた回答が期待されるため、データセットの準備にはコストがかかります。一方で、模範解答なしの自動評価は注釈(模範解答)をつける労力はかからないもののテストの再現性がやや低かったり、本当に人が期待している回答とは比較しないので乖離が発生する可能性があるというトレードオフがあります。現在、主流のRAGの評価では模範回答ありの自動評価のアプローチが提案されています。詳しくは後述しますが、RAGではコンテキスト(検索された文書)が利用できるため、なるべく注釈をつけないで評価できるような方法も提案されています。 評価のタイミング 評価方法は評価タイミングによっても2つに分けることができます。 オンライン評価 オフライン評価 オフライン評価 予め用意さ
はじめに サイオステクノロジーの塚田です。Rancher入門ブログシリーズとして、前回はRancherを使って複数のクラスターを管理する方法について解説しました。本記事では、Rancherを用いてKubernetesクラスターの監視を行う方法について解説します。具体的には、Rancher標準のモニタリング機能を有効化し、PrometheusやGrafanaと連携することでRancherのダッシュボードからクラスターのリソース消費状況をモニタリングしたり、アラート通知を実現する手順を紹介します。これにより、複数のクラスターを効率的に監視・管理できる仕組みを構築することができます。 概要 前提条件 Rancher Serverが構築済みであること Rancher Serverにログインできること Rancherから管理対象クラスターを連携済みであること 構築イメージ Rancherのダッシュボ
概要 ども!久しぶりにGoogle Apps Script(GAS)でプログラムを書いている龍ちゃんです。さくっとかけてGoogleのサービスと連携できるのが利点ですね。今回は、プログラムの実行日時が土日祝日か判定する必要が出てきたので執筆です。 今回の内容です。 土日の判定をDate型を活用して判定 Google Calendarを活用して祝日を判定 実行日から一番近い平日を取得 それぞれ関数化して共有していきます。 土日の判定をDate型を活用して判定 const isWeekend = (date) => { const day = date.getDay() if (day === 0 || day === 6) { return true; } return false; } こちらは、Date型の曜日情報を取得して判定しています。日曜日を0として曜日情報がカウントされています。
SIOS Tech Labの龍ちゃんです。2024年は「誰でも簡単に」AIツールが作れるDifyが登場して大いに沸いていましたね。弊社では、Azureを利用したサービス開発が多くあるため、Azure OpenAI Serviceがリリースしてそちらばかり触っていました。2025年はDifyなどのノーコード・ローコードツールを駆使して、AIサービスの開発・検証を進めていきたいと考えています。 いまから入門:Difyとは 生成AIアプリ開発ツール「Dify」の特徴については、おそらく皆さんなんとなくわかっているかと思います。実際触ってみた感想としては、手軽さに驚いています。 専門的なAIエンジニアやアプリエンジニアがいなくても、GUIの操作で簡単に生成AIアプリを作ることができます。また、豊富なLLMモデルと接続することができるので、異なる会社提供のLLMを同じ環境で動作するアプリなども自作す
ども!年末年始の検証結果を順次ブログ化している龍ちゃんです。思いついたらすぐ検証という流れで、いろんなことを検証していたので10本ぐらいはブログのネタに困らなさそうですね。反動が今から恐ろしいです。 今回の内容は、以下の二つになります。 ローカル開発環境をDevContainerで作成する(nest.js + postgres) nest.jsからPrismaを使用してpostgresに接続する 今回のゴールとしては、nest.js内でORMとしてPrismaを使用してpostgresへ接続して動作確認となります。 環境構築 前提条件としては、DockerとDocker Composeコマンドが使えれば大丈夫です。最終的なファイルとしては、こちらのリポジトリに上がっています。まだ、絶賛開発に使用する前段階なので、何の整備もしていなくてすいません。 参考GitHub – Ryunosuke-
こんにちは。サイオステクノロジー OSS サポート担当 山本 です。 今回は正規表現を実装するために使用されるライブラリ PCRE についてのお話です。 PCRE は 2015年に新バージョン PCRE2 へと移行しており、元々の PCRE を使用していたソフトウェアでは近年のバージョンで PCRE から PCRE2 への移行を行なっているもの、行おうとしているものもあります。 此度はそのあたりを軸にざっくりとお話ししてみようと思います。 ■正規表現と PCRE について まず正規表現、そして PCRE についてざっくりとお話しておきます。 正規表現 (Regular Expression) は元々は学術的なものですが、 コンピュータの分野においては一定のルールを持つ記号を用いて書かれた主に検索などに用いられる文字列パターン、またはその文字列パターンを使って行うパターンマッチ・検索などを指
こんにちは、サイオステクノロジーの佐藤 陽です。 今回はStripeのBillingを使って、Subscriptionの無償期間を実現する方法をご紹介します。 サブスクリプションの契約から一定期間を無償としたい 申し込みから一定期間経ってから金額の請求を開始したい という実装を行いたい方は是非ご覧ください。 はじめに Stripe Billing は、サブスクリプションなどの定期的な課金や請求書の発行を簡単に実現するためのツールです。 Billingを利用すると、月次や年次などの継続支払いののロジックを簡単に実装することができます。 日割り計算など、細かい部分までStripe側で全部やってくれるので非常に便利なツールですね。 今回は、このBillingを利用し、申し込み後一定期間を無償とする方法をご紹介します。 サンプルのリクエストコードも併せて紹介するので、是非ご活用ください。 無償期間
前置き サイオステクノロジーの中島です。Kubernetesで動かしているコンテナのデータを保存したりする場合は永続ボリューム機能を使用する必要がありますので、完全なローカルで使用する場合について、三パターン(hostpath、NFS、iSCSI)に分けて使用する方法について説明します。 永続ボリューム機能とは PersistentVolume(PV)とPersistentVolumeClaim(PVC)のAPIを使用して用意される機能のことで、これら2点を定義することで、Pod内で作成されたデータをコンテナの外に保存することができます。 詳細は、公式ドキュメント(https://kubernetes.io/ja/docs/concepts/storage/persistent-volumes/)を参照してください。本記事であげた、三つ以外で対応されているプラグインについて記載されています
今回は、StripeでCustomerにデフォルトの支払い情報を設定する方法についてまとめました。調べた限りだと、3つのパターンがありました。Checkout・Customer Portal・SetupIntentsのそれぞれの方法について、必要となるAPIをまとめています。Webhookを使用して設定する方法が特に見つけにくかったです! ご挨拶 急に寒くなったので大急ぎで衣替えをしたけども、冬服が思った以上になくて驚愕した龍ちゃんです。ついでにお気に入りのパーカーのファスナーが壊れたのでしょげました。 さて、今回は「Stripe」のお話になります。縁があってStripeの試験に合格しました。そこからStripeのAPIをこねくり回していたのですが、一つブログにまとめるまでに至ったので書いていきたいと思います。 今回は、「Stripe Customerにデフォルトの支払い設定として、カード
結論 AWS EC2 t4g.small インスタンスは東京リージョンで2025年も引き続き1台分無料で利用できそうです。 説明 昨年の記事にも書いたのですが、AWSで提供されている「AWS 無料利用枠」には記載がないものの、EC2では t4g.small インスタンスが無料で利用できます(t4gの「g」はGravitonのgです、Armアーキテクチャですね。ここが「a」ならAMD、「i」ならIntelで2つとも64ビットAMD/Intelアーキテクチャ)。 英語版 Amazon EC2 FAQを見てみると Q: How can customers get access to the T4g free trial? Until December 31, 2025, all AWS customers will be enrolled automatically in the T4g fre
次のページ
このページを最初にブックマークしてみませんか?
『SIOS Tech. Lab – エンジニアのためになる技術トピックス』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く