nakaoka3の技術ブログ

2023年中に52本なにか書きます

2023-01-01から1年間の記事一覧

年末なので今年使ったプログラミング言語を振り返り、最新バージョンの様子をチラ見する(2)

年末なので今年使ったプログラミング言語を振り返り、最新バージョンの様子をチラ見するの続き。スマートフォンアプリの開発ではKotlinやSwiftを触っていた。 Kotlin Androidアプリの開発で触った。思い返してみればKotlinよりも、Javaのほうが多かったよう…

年末なので今年使ったプログラミング言語を振り返り、最新バージョンの様子をチラ見する

年末なので今年使ったプログラミング言語を振り返り、最新バージョンの様子をチラ見した。 Perl 仕事でwebサービスのサーバーサイドの用途に使っている。 プライベートでは使うことはあまりない。と思ったが、BSD版とGNU版のsedの違いを調べるのが面倒になり…

年末なのでカメラのファイルをバックアップした

年末なのでデジカメのファイルをバックアップした。rsync と aws CLI を使って、DropboxとS3にバックアップを行った。更にタスクランナーに追加して、簡単にバックアップを実行できるようにした。 SDカードからDropbox Dropboxの2TBプランを使っていて、空き…

Task(go-task)を使い始めた

Goで書かれているTaskという名前のタスクランナーを使い始めた。仕事でMakeをタスクランナーとして使っていたところを、Taskに置き換えようという動きがあったので、仕事で使いつつプライベートでも使って慣れようとしている。 Taskでは Taskfile.yml という…

macのショートカット.appでやってること

macにはショートカット.appというアプリが入っている。「アクション」を組み合わせた一連の処理をショートカットとして登録しておくとワンクリックで実行できるという機能だ。複雑なロジックをショートカットで組み立てるのは大変そうだが、トリガーや入出力…

『証明の読み方・考え方』が面白い

本屋にいくと『証明の読み方・考え方』という本が目に入った。数学の証明の本だ。手にとって眺めると面白そうなので買ってみた。中学や高校の数学でも証明問題は苦手だった。苦手というよりちゃんと証明の仕方を教わったり、勉強した覚えがない。『証明の読…

Raycastから勤怠管理システムの打刻を行う

勤怠管理システムのWebページの反応が遅い。ボタンをクリックしたけど打刻できていませんでした、ということがよくある。そのため後で修正する作業が必要になっている。本来必要のない仕事が発生してるのでなんとか減らしたい。勤怠の修正には承認フローが走…

タスクの細かいスケジュール管理は避けたほうがいいかもしれない

最近仕事をしていて、日単位で細かくスケジュールを立てることでやりにくくなって、かえって進捗がでないと感じることがあった。 一般的に、大きなプロジェクトを小さなタスクに分解して、それぞれのタスクにスケジュールをつけることで、全体のスケジュール…

オブジェクト指向プログラミングでなくてもドメイン駆動設計できるらしい

ドメイン駆動設計(DDD)というと、オブジェクト指向プログラミング言語というイメージが強かった。 Javaのようなクラスベースのオブジェクト指向プログラミング言語で、業務をモデリングするときの設計手法という印象だった。 Scott Wlaschin は 『Domain Mod…

Swiftで代数的データ型とパターンマッチング

以前の記事でKotlinで代数的データ型(Algebraic Data Type, ADT)とパターンマッチングの使い方を確認した。同様にSwiftでも確認する。なお本記事で使っているSwiftのバージョンは5.9である。 nakaoka3.hatenablog.com 直和型 Sum Type 直和型にはenumを使う…

週末趣味プログラミングでObsidianプラグイン開発

思い立ってObsidainのプラグインを作り出す 土曜日の午前に歯医者から帰ってきて、何がきっかけだったか思い出せないけど、Obsidianでクイズが書けるプラグインを作りたくなった。 Obsidianに残っていたメモ ObsidianはElectronベースのアプリケーションなの…

Kotlin で 代数的データ型(ADT) を使ってモデル化

関数型プログラミングでは、型を組み合わせて作る型に直和型(sum type)と直積型(product type)が存在する。直和型と直積型のことを代数的データ型という。 『なっとく!関数型プログラミング』では、Scala、F#, Haskell で代数的データ型によるモデル化の例…

アプリ開発が一段落して、新体制になりつつある

最近やっていたアプリの開発がようやく一段落ついてきた。機能開発については完了していて、あとはリリースを待つだけだ。 開発メンバーが増えた! チーム内にアプリエンジニアがいなかったので、ひとりでアプリの改修を進めていたが、先月からiOS・Android…

Vivaldi の好きな機能 ブックマークにタイトルとは別にニックネームを付けることができる

Vivaldi にはブックマークにニックネームを付ける機能があって便利だ。 VivaldiはChromiumベースのWebブラウザだが、Chromeにはない便利な機能や細かい設定ができる。ブックマークにニックネームをつける機能もVivaldi独自の便利な機能だ。 使い方 例えば Am…

『なっとく!関数型プログラミング』はScalaで説明されている本だけど読んだらHaskellのdoもわかるようになった

関数型プログラミング言語については、以前にHaskellの本を読んでみたりして、興味はあったのだが正直あまり理解できてなかった。 『なっとく!関数型プログラミング』はScalaのコードで関数型プログラミングを説明している本だ。最近邦訳が発売されて話題に…

『ちいさくはじめるデザインシステム』をざっと読んだ

本屋で『ちいさくはじめるデザインシステム』を見かけたので購入した。この本は労務管理のWebアプリケーション(SaaS)を作っているSmartHRが、デザインシステムを作成して導入した経験を書籍にまとめたものだ。 私は会社ではソフトウェアエンジニアとして働い…

Google Sheets APIを使ってデータを取得する

プライベートで、Google スプレッドシートにまとめたデータを APIを使って取得したいという事があった。 以下の手順でやることができる。 サービスアカウントを作って、鍵ファイルを取得する GCPでSheets APIを有効にする GCPでサービスアカウントを作る GCP…

XcodeでもGitHub Copilot を使ってみた

先日 Android Studio で GitHubCopilot を使ってみた。Xcodeでも使えるということを教えてもらったので、導入してみた。VSCodeやAndroid Studio と比べるとエディタへの統合度が低くて操作感が劣ると感じたが、すぐに慣れて便利に使えるようになった。 nakao…

Android Studio で GitHub Copilot を使い始めた

Android Studio でもGitHub Copilot を使えるという話を聞いたので、早速使ってAndroidアプリ開発をしてみた。プラグインを入れるだけなので何も難しいことはなかった。使用感はVSCodeでCopilotを使うのと代わりはない。体感だが、Javaのコード補完はそれな…

アプリに混在するReact Native と WebView:採用技術の見直しか、ドキュメンテーション強化か

最近あるサービスのスマートフォンアプリに新機能を追加している。 そのアプリではAndroidネイティブ、iOSネイティブ、WebView、React Nativeの4種類の画面から構成されている。APIはREST APIとGraphQL APIの2種類がある。一見するとどこでどの技術を使って…

『エンジニアのためのマネジメントキャリアパス』2章まで読んだ

1on1のときに id:miki_bene さんに オススメされた『エンジニアのためのマネジメントキャリアパス』を2章まで読んだ。 www.oreilly.co.jp なお、この本は副題に「テックリードからCTOまで」とあるが、3章からテックリードなので、2章までだとそこまで到達し…

週末にLangChainを使って遊んでみた / DocumentLoader / Jupyter code cells

週末にLangChainを使って遊んでみた。LangChainはLLMを便利に使うためのPythonライブラリだ。先日動画で使い方を学んだので、それを参考にLLMが外部のデータを参照して質問に答えるのを試した。 nakaoka3.hatenablog.com DocumentLoader LanChainにはLoader…

Android・iOSアプリ開発者からみた他職種とのコミュニケーションのポイント

要約 アプリ開発における複数の役職間でのコミュニケーションは、明確な資料や情報の共有を通じて行われ、そのプロセスは開発の完成度を高める役割を果たします。異なる視点からの情報の差異を最小限に抑えることが重要です。早期に重要な決定を下すことで、…

DeepLearning.AIのLangChainショートコースを受講した

DeepLearning.AIのLangChainのショートコースを受講した。ジムで走りながら動画をみた見たので、まだ実際にLangChainを使ったコードは書いていない。しかしLangChainが何であるのか、その概要を掴めてよかった。 www.deeplearning.ai LangChainとはLLMを使う…

今週は久しぶりにAndroidアプリの開発をした

今週はAndroidアプリの開発をした。久しぶりだったからだいぶ忘れていたけど、少しずつ思い出しながらやっている。 新規アプリではなく少し歴史のあるアプリの機能追加だ。Javaを書くのも久しぶりなので懐かしい。 RxJavaとRealm を使っているアプリなので、…

ChatGPTを使ってMarkdownをはてな記法に変換しようとしたが結構難しかった

ChatGPTを使って、Markdownをはてな記法に変換しようとしたが結構難しかった。 1つのプロンプトで正しく変換できなかったので、HTMLに変換するプロンプトを書いて、HTMLをはてな記法に変換するように指示をしたり、試行錯誤を重ねてようやくそれらしい変換…

Elastic Stack実践ガイド[Elasticsearch/Kibana編] を読んだ

もしクエリの結果が期待した通りでなかった場合には、Analyzerがどのようにテキストを処理しているのか、一度確認することをお勧めします。 (Elastic Stack実践ガイド[Elasticsearch/Kibana編] Kindle版, p176) Elasticsearchを使った検索の問題にたまたま遭…

形態素解析について調べた はじめての自然言語処理を読んだ

ElasticSearchを触っていて、形態素解析について基本的なことを知りたかったので、『はじめての自然言語処理』を読んだ。形態素解析については3章に書かれている。基本的なことがまとまっていてよかった。 初心者向けの本なので、以下のような基本的なことか…

PythonのNetworkXとMatplotlibを使って重み付きグラフを可視化する

PythonのネットワークグラフライブラリのNetworkXと可視化ライブラリのMatplotlibを使うことで、Pythonで簡単に重み付きグラフを可視化できます。具体的なコードとChatGPTとWolframプラグインを利用して作成したサンプルデータを使って、その方法を説明しま…

Go言語の型 構造的型付けと名前的型付け

最近 Go言語をよく触っていたので、Goの型について調べたことをまとめます。 Goのインターフェイス Goの インターフェイスは、構造的型付け structural typing の特性を持っています。 Goのインターフェイスはメソッドのシグネチャの集まりです。 // M() と…