Shintaro's Laboratory

SEの徒然日誌です。気ままに更新していきます。

「かんばん」タスク管理クライアントアプリ~機能説明編

reactとjava、electronを用いてかんばんアプリを作成したので、
本日は機能の紹介をしたいと思います。

特徴

  • データの保存をローカルのファイルに実施しているため、
    クラウドやアプリ側へデータがアップロードされない


  • クライアントアプリであるため、ユーザー登録や認証は不要。

  • ポータブル版で作成しているため、ダウンロードして展開するだけで利用可能
    (インストールや、javaのインストール等環境セッティングも不要)。

  • データ更新時に書き込みを行っているため、保存操作は不要。

  • データ通信に8080番ポートを利用しております。
    予期しない動作が発生した場合は、ポートの重複もご確認ください。

  • 趣味の一環で作ったものなので無料で全ての機能を利用可能です
    (現状利用している限りはデータ消失等は確認しておりませんが、
    不具合等でのデータ消失等はご容赦ください。。)。

  • 現状windowsのみ動作確認済み。

 

事前準備

  1. 下記URLからzipファイルをダウンロード
    https://github.com/Shintaro-lab/taskManagementApp-product/releases


  2. ダウンロードしたzipファイルを任意の場所で展開



  3. config.txtに配置したパスを記載し保存


    注意:区切りは「\」を2つにすること

  4. start.batをダブルクリックで起動
  5. 10秒ほどでアプリケーションが起動する

基本操作

  • タスクカードの追加
    オレンジ色の下記ボタンを押下することでタスクカードを新規に追加可能です。



  • タスクカードの削除
    タスクカード上部のゴミ箱アイコンを押下することで削除可能です。
    削除されたデータは復元不可となりますので、ご注意ください。




  • タスクカードの移動
    下図のようにタスクカードを選択してドラッグアンドドロップすることで、
    タスクカードの順番を入れ替えることが可能です。




  • タスクカードの名前変更
    タスクカードの名前を選択することで修正可能となります。



  • タスクの作成
    下記に入力しEnterキーを押下することでタスクが作成可能です。



  • タスクの削除
    タスク上のゴミ箱アイコンを押下することで削除可能です。
    削除されたタスクは復元不可となりますので、ご注意ください。



  • タスクの移動
    下記のようにタスクカード内の移動、タスクカード間の移動の双方が可能です。




  • タスク名の変更
    タスクカードと同様、名前を選択することで編集可能です。


  • タスクの色の変更
    1.下記のボタンを押下します。
    2.
    色を選択します。白を含めて、4色選択可能です。



  • サブタスクの作成
    1.下記のボタンを押下します。



    2.サブタスク名を入力します。



    3.サブタスクが作成されます。



  • サブタスクの削除
    タスクの削除と同様になります。

ヘルプ

  1. 起動時に以前保存したデータが表示されません

    読み込みのタイミングの可能性があります。下記の通り、再読み込みをお試しください。

最後に

配布側の企業に依存しない形でタスク管理をしたかったので、趣味の一環としてアプリを作ってみました。適宜改善を実施する予定です。改善要望等ありましたら、コメントやGithub上のIssue等でいただけると嬉しいです。

 

ソースコードもまだまだ汚いので、プルリクエストもお待ちしております。

(更新してもらうことも想定してリポジトリを作成したのは始めてなので、
OSS構築のアドバイス等もあればぜひ)

 

https://github.com/Shintaro-lab/taskManagementApp-frontend

https://github.com/Shintaro-lab/taskManagementApp-backend







SQLServerの監査ログ機能でフィルターを使ってみた

SQLServerで監査ログを取ろうと思ったが予想以上にログが出てしまったので、削減手法の1つであるフィルターという設定を試してみた。以下その知見をまとめる。

 

まず設定は監査->右クリック->プロパティ->フィルタで設定できる。



右の中の枠に実際の条件を記載していく。下記の中でWHERE句や述語と書いてあったので、WHEREから記載するのかと思ったが、条件だけを記述しないとエラーになるので注意してほしい。

 

サーバー監査およびサーバー監査の仕様を作成する - SQL Server | Microsoft Learn

 

括弧などは勝手に登録すると補完してくれる。

下記のように登録ができたら、OKを押下して監査を有効化すれば完了である。



確かに、object_nameがcodeとmasterしか監査ログに出力されなくなっていることが確認できる。

 

記述方法は一見するとSQL文と同様に見えるが、in句などは利用できないので注意してほしい。

 

特定のobject_nameを出力したくない場合は下記のように記述する。

 

windowsのバッチファイルの困ったを解決する(echoとforループ編)

windowsのバッチファイルで簡易ツールを作成する機会があったが、いくつかハマってしまった点があったので、知見として整理する。

 

1.echoコマンドの使い方

echoコマンドだが、後ろにコマンドを記載しても特に解釈されることはないようだ。

つまりechoの文字列の中にコマンドになりうる箇所があっても、わざわざダブルクォーテーションでくくる必要はない。

 

次にechoの中にダブルクォーテーションや、括弧「(」や「)」がある場合は、「^」を使用すると特殊文字として解釈されずそのまま文字として利用可能。echoを使用している箇所で「~の使い方が誤っています」というようなエラーが出る場合も、このあたりを疑うと良い。

 

またecho内において文字列を結合したい場合も、pythonなどのように「+」を使う必要はなく、そのまま繋げればよい。

 

2.forで順番にリストファイルを処理する際に、先頭1行だけスキップしたい。

オプションにskipというものがあるがあるので、こちらを利用するとよい。わざわざ前処理をするより、簡単にできる。

 

3.for文でカウントアップを利用したい。

遅延環境変数を利用するとよい。遅延環境変数にしないと、ループの中ではずっと1のままとなってしまうので注意。

 

GPTs使ってみた

最近はOpenAIのAPIにハマってしばらくブログの更新ができてなかったですが、11/6に行われたOpenAI DevDayにて発表されたGPTsを触ってみたのでどんなことができるのかを共有します。

 

GPTsは特定の目的にカスタマイズしたChatGPTを簡単に作成できるサービスで、現状ChatGPT Plusのユーザーとエンタープライズユーザーが使えるとのことです(GPTs作成後に他のユーザーに共有できる機能がありますが、他のユーザーもChatGPT Plusやエンタープライズのユーザーでないと、現状は使えないようです)

 

下記のような記載がOpenAIのサイトに書いてあったので、そのうち他のユーザーでも使えるようになるかもしれません。

Example GPTs are available today for ChatGPT Plus and Enterprise users to try out including Canva and Zapier AI Actions. We plan to offer GPTs to more users soon.

https://openai.com/blog/introducing-gpts

 

 

では使い方を簡単に解説します。

まずChatGPTを開き、上図のようにExploreを選択し、Create a GPTを選択します。

 

 

次に上記のようにGPTから目的や、名前、アイコン、ふるまい等の質問を受けるので、それに答えていくだけという流れです(慣れて来ると、configureというタブを直接編集する方が早いと思われる)。

 

 

一通り設定すると右側にあるプレビューで試すことができ、想定と違うふるまいをする場合は追加の指示を左側で入力すると設定が更新されます。

 

 

最後に共有方法を選択して、完成です。

上記の例では知識を直接入力しましたが、PDF等で与えることもできました。

 

 

気になるところは知識がモデルの学習に利用されてしまわないかという点ですが、設定で選択できるので大丈夫そうです。

 

実際に使ってみましたが、自分でAPIを利用してコーディングした方が細かい設定を入れやすいので精度が出るようです。なので「インターフェースを作らなくてよい点」「他のユーザーへの共有が容易になる点」「エンジニア以外でも簡単にアプリが作成できる点」がメリットだと感じました。

 

結局のところEmbeddingでは出せない細かい意味の違いを正確に捉えられる技術の登場が次のブレークスルーのポイントだと考えています。

 

apple watch series8を買ってみた

運動量や水分摂取量などヘルスケアについての情報が取りたかったこと、そしてダルビッシュ選手がラプソードという測定器を使ってブルペンでの1球1球の回転数・軸などの情報を基に改善を図っていたのを見て集中力・無駄な時間の削減等にデータを利用できないかと考え、apple watchを購入してみた。

 

今回は1日利用してみて分かったことをまとめてみる。

 

購入時点の落とし穴としては、充電器のコンセント側がただのUSBではなくtype c(オス)となっていたことだ。したがって、充電するにはマストで別売り(2000円くらい)のtypeCとコンセント変換機が必要なので注意してほしい(店員さん普通のUSBで大丈夫と言っていたのに。。)。

 

購入時の設定はかなり簡単であった。自身の所有しているiphoneとペアリングし、基本的にiphone側のwatchというアプリで機能制限やヘルスケア情報の設定を選んでいくだけであった(設定後にapple watchに反映する時は15分ほど時間がかかったので注意)。

 

手に何かがついている感覚が嫌いで時計は避けていたが、apple watchのスポーツバンドはあまり気にならなかった。またバンドの穴を1つ分緩く設定しても時計部分が大きいのでくるくる回転してしまうこともないため、おすすめである。

 

通知の状況についても、特に気にならなかった。ヘルスケアの情報を取得する用途で使用したいので無駄な通知は極力減らしたかったが、上述するwatch上で通知を消しておけば問題なかった。

 

充電についてだが、お風呂に入っている1時間ほどで20%→80%くらいまでは回復していた。また一日の消費量だが使い方には依存するとは思うが20%程度だったので、入浴中に充電しておくのでよさそうである。

 

1日使用した時点でよかったことを整理すると下記である。

・エクササイズの合計時間、立ち上がった回数、消費カロリー、心拍数、自宅にいる間も含めたトータル歩数、酸素レベル、より正確な睡眠時間等が測定できるため、生活改善にかなり役立ちそう

・誘惑が多いiphoneを開かなくても2タップくらいで水分補給量を記録できる。そして数値化すると意外と水分をとれていないことが発見できる。

スタンドアップと、水分補給の通知はかなり役立つ。

・デフォルト表示の文字盤が多数種類があり、アクティビティ(エクササイズ、スタンドアップ等)の情報を一目でわかるデザインが便利

 

上記が1日経過時点で分かったことだが、今後apple watchで得られたヘルスケア情報をもとに集中力やだらだらした時間の削減等の改善ができるか検討を続け、成果を報告しようと思う。

ChatGPTにコーディングを学ぶ

堀江さんのメルマガで下記ニュースが紹介されていた。ChatGPTにgoogleのコーディング試験を受講させると、採用されるレベルにあるとのこと。

 

https://gigazine.net/news/20230206-chatgpt-passed-google-coding-interview/

 

ChatGPTをコーディングの教師として利用できるのではないかと仮説を持った。今回は簡易検証に伴いChatGPTを触ってみたので、その結果分かったことを紹介する。

 

ChatGPTとは、インターネット上の大量のデータによって文字推定のトレーニングを積んだ対話型のAIのことを言う。ChatGPT自身に紹介させると下記のようになる。

 

「OpenAIによってトレーニングされた自然言語処理技術を使用して、ユーザーと対話をします。私は、自然言語の生成、文章の分類、言語翻訳、自然言語理解などのタスクに利用されます。

 

私は、様々なトピックについて質問や会話をすることができます。私は、言語モデルとして設計されており、大量のテキストデータをトレーニングして、人間のように自然な応答を生成するようになっています。私は、誰でも利用することができ、24時間365日、いつでもどこでも利用可能です。」

 

アカウント登録方法は検索で多くヒットするので、そちらを参照してほしい。まず手始めに流行りのスポットを聞いてみた結果が下記となった。最近というようなデータが少ないものの回答には適していないようである。

 

 

次にpythonのメソッドの利用方法について聞いてみた。かなり正確に回答が得られるようである。つまり確かな回答があり、データも蓄積されている問いには十分利用可能と思われる

 

 

次に実際にソースコードを書かせてみた結果が下記である。下記だと先頭と末尾のみを判定してしまっている。

 

 

指摘を出して修正してもらった結果が下記である。今度は正しく、かつリスト内包表記を利用した美しいプログラムが作成された。

 

 

上記以外にもいくつかプログラムを生成させた結果、AIが一意に推定可能な指示を出すことができればコーディングの教師になり得ることがわかった。自身がプログラムを書き終わった後にChatGPTにもプログラムを生成させ、より美しいプログラムを検討することで、自身のエンジニアとしてのスキルが向上することができるのではないか。今後自身で検証を重ね、結果を報告したい。

SQLServerの基礎(ユーザーと認証)

今回はSQLServerの基礎であるユーザーと認証について整理する。

 

通常SQLServerと呼ばれるものは、OS上で動作するインスタンスのことを指す。

インスタンスは下記2つに大別できる。

規定のインスタンス・・・デフォルトのインスタンスMSSQLSERVERという名前となる。ログインする際にインスタンス名を省略できる。1つのインスタンスしか必要ない場合はこちらでよい。

名前付きインスタンス・・・1台のOSに複数面のSQLServerを構築したい場合等に利用する。

 

なお複数インスタンスを作成した場合は、ポート番号で接続を分けるという手法がよく使われる。ポート番号はSQLServerConfigurationManagerで確認可能となっている(規定のインスタンスのデフォルトポートは1433である)。

 

話を戻す。先ほどのインスタンスに対して、下記2つの認証方法を設定できる。

windows認証・・・OSの認証と同じ。

SQLServer認証・・・SQLServerに作成したログインユーザー(sa等)で認証する。

 

そしてインスタンスの中に複数のデータベース(テーブルの集合体)を構築できる。例えば従業員テーブル、役職テーブルをまとめて人事データベースとするように。

 

このデータベースには、データベースユーザーを作成できる。データベースユーザーは、配下のそれぞれのテーブルに対して、db_owner(最高権限)のような操作の権限(ロール)を付与することができる。ここで権限を設定したデータベースユーザーとログインユーザーをマッピングさせることで、特定のログインユーザーでログインした際に個々のテーブルに対して何ができるかというのを規定することができる。

 

例:test_loginというログインユーザーに対してtestデータベースのtestというデータベースユーザーができる操作をマッピングする。