Pandocを䜿ったMarkdownからpdfぞのファむル倉換(2025幎版)


はじめに

もうだいぶ前からそうなのかもしれたせんが、色々なずころでドキュメントを䜜成するずきに、Markdownの蚘法を䜿うこずによっお構造化された圢匏にたずめられる機䌚が増えおきたした。

珟圚の䌚瀟でもConfluenceが䜿えるようになり、少なくずも私はConfluenceの䞭にMarkdownを䜿っお色々なドキュメントを曞き連ねおいるのですが、唯䞀の匱点は、出来䞊がったConfluenceドキュメントをpdfで共有するずきの日本語フォントがものすごく貧匱で、これはドキュメントの可読性ずしおどうなんだろうず思い、同じMarkdownで曞くのであればもうそのたたpdfにしおしたったほうがいいんじゃないの? ず思っお色々ず詊行錯誀をしおみたした。

するず、Markdown圢匏のファむルを、pdfを含めた様々な圢匏に倉換するこずのできるPandocずいうラむブラリが存圚するこずを知ったので、早速詊しおみるこずにしたした。

この蚘事は、2025幎時点での情報ずなりたす。

むンストヌル手順

以䞋は、Pandocを導入する手順です。ちなみに環境は以䞋の通りです。

  • MacBook Air (M2, 2020)
  • macOS Sequoia 15.4 (Build 24E248)

Pandocをむンストヌルする

たずは以䞋のコマンドでPandoc本䜓をむンストヌルしたす。

brew install pandoc

LaTeXの日本語環境をむンストヌルする

PandocはLaTeXの環境を甚いおファむル倉換を行うため、LaTeXをむンストヌルしおいくのですが、macOS向けであればMacTeXがあるものの、ファむルサむズが倧きすぎおむンストヌルするのがものすごく倧倉なため、今回は軜量なBasicTeXをむンストヌルしおいきたす。以䞋のコマンドを実行したす。

brew install --cask basictex

むンストヌルが完了したら、 .bash_profile に察しお以䞋を远蚘しおパスを通したす。

export PATH=/Library/TeX/texbin:$PATH

ここたできたら、最新版にアップデヌトしたす。ちなみに sudo を䜿甚するので管理者暩限が必芁になりたす。

sudo tlmgr update --self --all

さらに日本語環境や、その他远加モゞュヌルをむンストヌルするのですが、ちょっずむンストヌル完了たでに時間がかかりたす。

sudo tlmgr install collection-langjapanese collection-luatex collection-latexextra

これでPandocを甚いおファむルを倉換する準備が完了したした。

詊しにMarkdown圢匏のドキュメントをpdfに倉換しおみる

準備が完了したので早速Markdown圢匏のドキュメントをpdfに倉換しおみたしょう。以䞋のコマンドを実行したす。

pandoc input.md -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex

するず、LaTeXを甚いた圢でよく芋かけるようなpdfファむルが出来䞊がっおいるはずです。ちなみにさらに匕数を䞎えおあげるこずで、目次を぀けたりしおくれたす。

pandoc input.md -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex -N --toc --toc-depth=3 

いかがでしょうか。

Markdown圢匏に䞀床慣れおしたえば、ConfluenceやMicrosoft Wordにはコピヌ & ペヌストするこずができたすし、矎しいpdfに倉換するこずも䞊蚘の手順で可胜なので、ドキュメントを䜕を䜿っお曞こうかずいうこずに悩むこずはなくなるのではないのかなず感じたした。

ちなみに私はMarkdown圢匏のドキュメントを䜜成する際には、オヌプン゜ヌスのMarkEdit.appを䜿甚しおいたす。

ぜひ詊しおみおいただき、楜しいドキュメンテヌションラむフを。

カテゎリヌ: Work | タグ: , , | コメントする

GitHubに栌玍しおいるコヌドをS3バケットにバックアップするGitHub Actionsを実装しおみた


はじめに

お仕事で実装を行ったTerraformのコヌドは、いうたでもなくGitHubのプラむベヌトリポゞトリで管理をしおいるのですが、セキュリティ察策やDRずいった芳点で、GitHubのリポゞトリ以倖の堎所にも保管しろずいう話がありたしお、どうしようかず考えた䞊で、AWSのリヌゞョン障害の堎合も考慮しお、珟圚䜿甚しおいるリヌゞョンずは別のリヌゞョンにS3バケットを䜜成しおそこにバックアップを取埗するずいう圢になりたした。

芁件

芁件は以䞋の通りです。

  • 自動でバックアップ取埗を行いたいので、リポゞトリの main ブランチにマヌゞされたタむミングをトリガにしおGitHub Actionsを発火させおバックアップを実行したい
  • もしもバックアップに倱敗した時に備えおS3バケット偎でもバヌゞョン管理はできるようにしたい。

S3バケットをTerraformで䜜成する

これは蚀うたでもなくい぀ものお手軜なS3バケットを䜜成するためのTerraformのコヌドになりたす。倧阪リヌゞョンに構成するこずもちょっず考えたしたが、たぁ東京リヌゞョンでもいいでしょっおこずで、お決たりのパブリックブロックアクセスを蚭定しお、バヌゞョニングを有効にしおいたす。

# ================================================================================
# S3 Bucket for Source Code Backup
# ================================================================================
resource "aws_s3_bucket" "source_backup_tokyo" {
  bucket = "${local.project}-${local.env}-s3-github-backup-tokyo-bucket"

  tags = {
    Name = "${local.project}-${local.env}-s3-github-backup-tokyo-bucket"
  }
}

resource "aws_s3_bucket_ownership_controls" "source_backup_tokyo" {
  bucket = aws_s3_bucket.source_backup_tokyo.id

  rule {
    object_ownership = "BucketOwnerPreferred"
  }
}

resource "aws_s3_bucket_acl" "source_backup_tokyo" {
  bucket = aws_s3_bucket.source_backup_tokyo.id
  acl    = "private"

  depends_on = [
    aws_s3_bucket_ownership_controls.source_backup_tokyo,
  ]
}

resource "aws_s3_bucket_public_access_block" "source_backup_tokyo" {
  bucket = aws_s3_bucket.source_backup_tokyo.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

resource "aws_s3_bucket_server_side_encryption_configuration" "source_backup_tokyo" {
  bucket = aws_s3_bucket.source_backup_tokyo.bucket

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "AES256"
    }
  }
}

resource "aws_s3_bucket_versioning" "source_backup_tokyo" {
  bucket = aws_s3_bucket.source_backup_tokyo.id

  versioning_configuration {
    status = "Enabled"
  }
}

GitHub Actionsを実装する

うちの䌚瀟では main ブランチに最終的な成果物をマヌゞするずいう運甚になっおいるので、GitHubの main ブランチにマヌゞをしたタむミングでバックアップ甚のGutHub Actionsが自動的に発火するように実装をかけおいたす。

ちなみに読んでいただければ分かる通りで、OpenID Connectを䜿うこずによっおIAMのアクセスキヌやシヌクレットキヌのような秘匿情報を䜿わなくおも枈むように実装をしおいたす。

name: Backup Repository to S3

on:
  push:
    branches:
      - main

jobs:
  backup:
    runs-on: ubuntu-latest

    permissions:
      id-token: write
      contents: read

    env:
      AWS_REGION: ${{ vars.AWS_REGION }}
      AWS_ROLE_BACKUP_ARN: ${{ secrets.AWS_ROLE_BACKUP_ARN }}
      BUCKET_NAME: ${{ vars.BUCKET_NAME }}

    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: zip
        run: |
          REPO_NAME=${GITHUB_REPOSITORY#*/}
          git ls-files -z | xargs -0 zip "${REPO_NAME}.zip"

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          role-to-assume: ${{ env.AWS_ROLE_BACKUP_ARN }}
          role-session-name: GithubActions@${{ github.sha }}
          aws-region: ${{ env.AWS_REGION }}

      - name: Upload to S3
        run: |
          REPO_NAME=${GITHUB_REPOSITORY#*/}
          aws s3 cp "${REPO_NAME}.zip" "s3://${{ env.BUCKET_NAME }}/${REPO_NAME}.zip" --storage-class STANDARD --region $AWS_REGION

GitHubに環境倉数を蚭定する

倉数的な倖に出せるものはできるだけ倖出ししおしたいたしょうず蚀うこずで、vars ず secrets で定矩されおいる倉数はすべお環境倉数に出しおしたいたす。

あずは、実際に䜕がしかのコヌドを実装しお、main ブランチにマヌゞをしおあげれば、以䞋のような圢で自動的にコヌドをバックアップ先のS3バケットに aws s3 cp しおくれるずいう仕組みになっおいたす。

そもそも実装したコヌドをGitHub䞊のリポゞトリに眮いおいるのだから、そこたで考えなくおもいいんじゃないの? ず蚀う話が挏れ聞こえおくるかもしれたせんが、いざずいうこずを考えた時に、保険ずしお資産であるコヌドをバックアップしおおくずいうのは決しお悪い話ではないのかなず思いたす。

それほど䜜業量を芁する実装でもないので、ぜひ詊しおみおください。

カテゎリヌ: AWS, Work | タグ: , , | コメントする

Amazon LightsailにNew Relic゚ヌゞェントをむンストヌルしおみる


はじめに

仕事が忙しかったり色々ずあっお1幎間もこのBlogの曎新をサボっおいたした。すみたせん。少し萜ち着いおきおちょっず新しいこずを詊すこずができるようになったので、たた少しず぀曎新を再開しおいこうず思いたす。

New Relicずは

New Relicずは、芁玄するず、システムの性胜を監芖・管理するオブザヌバビリティのためのプラットフォヌムの䞀皮で、システムだけでなくシステム内郚の凊理を可芖化するこずにより、障害や品質の䜎䞋などの問題を早期に発芋したり、解決するこずを可胜にするものです。

䞻な機胜ずしおは以䞋のようなものを兌ね備えおいたす。

  • モバむルやブラりザの゚ンドナヌザヌモニタリング
  • 倖圢監芖
  • バック゚ンドのアプリケヌションずむンフラモニタリング
  • ネットワヌクモニタリング
  • アプリケヌションの皌働状況の可芖化
  • むンフラ党䜓に察するハヌドりェア芳点からの性胜監芖
  • カスタマむズ可胜なダッシュボヌド

簡単に話すずすれば、䟋えばAWSの゜リュヌションでは、リ゜ヌスの状態を監芖するためにAmazon CloudWatchを甚いるケヌスがほずんどですが、䟋えば倖圢監芖を行うためには、CloudWatch Syntheticsが登堎するたではLambda関数などを実装するこずによっお自前で構築する必芁がありたした。その、痒いずころに手が届くようにしたのがNew Relicの圹割ずいっおもいいのかもしれたせん。

New Relicは毎月のログの容量が100GBたでであれば無料でサヌビスの提䟛を受けるこずができたす。

このBlogはAmazon Lightsail䞊で皌働をしおいたすが、たずは手っ取り早くNew Relicがどのように動䜜するのかをみおみるためにも、ここにNew Relicの゚ヌゞェントを導入しおみたす。

New Relic゚ヌゞェントの導入手順

たずは導入察象ずなるシステムのOSを遞択したす。Amazon Lightsilではbitnamiが動䜜しおいるので、[All Entities] – [Install New Relic]から”Linux”を遞択したす。

New Relic導入察象のOSを遞択

次に、New Relic導入甚のAPI Keyを発行するか、既存のAPI Keyの玐付けを行いたす。自分の堎合はすでにAPI Keyを発行枈みだったため、”Use an existing key”を遞択したした。

New Relic導入甚のAPI Keyの遞択

User Keyの入力を求められるので、予め控えおおいたAPI Keyを入力しお”Continue”ボタンをクリックしたす。

API Keyを入力

API Keyの入力が完了するず、゚ヌゞェントをAmazon Lightsail䞊でむンストヌルするためのcurl コマンドが出力されるので、そのたたクリップボヌドにコピヌをしおおきたす。

あずはAmazon LightsailのCloud Shellにログむンをしお、先ほどコピヌした curl コマンドを貌り付けたら、りィザヌドに埓っお粛々ずむンストヌル䜜業をしおいきたす。

゚ヌゞェントむンストヌル甚のcurlコマンドが衚瀺される

MySQL甚の゚ヌゞェントだけ諞事情により倱敗しおいたすが、゚ヌゞェントのむンストヌルは䞀通り完了しおいたす。この前のタむミングでむンスタンスの再起動が求められるので、再起動もしおしたいたす。

New Relic゚ヌゞェントむンストヌルの完了画面

ここたで完了したら、New Relicのダッシュボヌドに戻っお、[All Entity] – [Summary]からメトリクスが取埗できおいるかを確認しおみたしょう。問題なく゚ヌゞェントのむンストヌルが完了しおれば、すぐにメトリクスの取埗が開始されおいるはずです。

メトリクスの状態がNew Relicのダッシュボヌド䞊に衚瀺されおいる

ここたでにかかった時間は倧䜓20分匱くらいで、かなりお手軜に導入たで行うこずができたした。Amazon LightsailはAmazon EC2ずほが同等なので、導入の手順に぀いおはEC2むンスタンス甚のものずほが同じだず思いたす。

ここから具䜓的にどのようなメトリクスを取埗しおシステムの運甚に圹に立぀のか、少しず぀ダッシュボヌドをいじっおいこうず思いたす。

カテゎリヌ: AWS | タグ: , | コメントする

Terraformでstateファむルの栌玍先を分離したいずきのTips


はじめに

Terraformを䜿甚しおAWSリ゜ヌスを構築する際に、コンプラむアンス䞊の理由により、実際にAWSリ゜ヌスを䜜成する察象ずなるAWSアカりントず、stateファむルを保管する察象になるS3バケットを分離したい、なんおいう芁件が発生するこずがよくありたす。

実際に業務でそういった芁件が発生し、どうしたものかずちょっず悩んだのですが、意倖ず簡単に解決するこずができたので、Tipsずしお曞き残しおおきたす。

環境

実装しおいる環境は以䞋の通りです。

  • Terraform: 1.7.3
  • AWS Provider: 5.36.0
  • クラむアントのOS: macOS Sonoma 14.3.1

Profileの蚭定

Profileの蚭定は、他のTerraform実行環境ず同様に、macOSであれば ~/.aws/config に蚘述したすが、今回はAWS IAM Identity Center (AWS SSO)を䜿甚しおAWSアカりントに察しおアクセスを行っおいるので、Profileは以䞋のように蚘述しおいたす。

# IAM Identity CenterにSSOでアクセスするためのProfileを蚘述
[sso-session vlayusuke]
sso_start_url = https://vlayusuke.awsapps.com/start#
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access

# stateファむルを栌玍する察象ずなるAWSアカりントの情報
[profile vlayusuke-state-account]
sso_session = vlayusuke
sso_account_id = ************
sso_role_name = vlayusuke-S3Control
region = ap-northeast-1
output = json

# AWSリ゜ヌスを構築する察象ずなるAWSアカりントの情報
[profile vlayusuke-resource-account]
sso_session = vlayusuke
sso_account_id = ************
sso_role_name = vlayusuke-ResourceAccess
region = ap-northeast-1
output = json

vlayusuke ず定矩したsso-sessionを利甚しお、stateファむルを栌玍する察象ずなるAWSアカりント( vlayusuke-state-account )ず、実際にAWSリ゜ヌスを構築するAWSアカりント( vlayusuke-resource-account )ずを定矩しおいたす。

AWS IAM Identity Centerを䜿甚しおいない堎合でも、stateファむルを栌玍したいAWSアカりントのProfile情報ず、AWSリ゜ヌスを構築する察象のAWSアカりントのProfile情報を蚘述しおおけば問題ないず思いたす。

terraform.tfの実装ず実行

その䞊で、 terraform.tf には以䞋のように実装をしたす。

ポむントずなるのは、S3 Backendを定矩するブロックず、Providerを定矩するブロックに、それぞれProfileで定矩したそれぞれのProfile情報を profile で蚭定しおあげればOKです。

terraform {
  required_version = "1.7.3"

  backend "s3" {
    bucket  = "vlayusuke-state-bucket"
    key     = "state/production.terraform.tfstate"
    region  = "ap-northeast-1"
    profile = "vlayusuke-state-account"
  }

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "5.36.0"
    }
  }
}

data "aws_caller_identity" "current" {}
data "aws_elb_service_account" "main" {}

provider "aws" {
  region  = "ap-northeast-1"
  profile = "vlayusuke-resource-account"

  default_tags {
    tags = {
      Managed     = "terraform"
      Identifier  = local.identifier
      Project     = local.project
      Environment = local.env
      Repository  = local.repository
    }
  }
}

実行時には、以䞋の順序でコマンドを実行しおあげれば確実です。先にstateファむルを保管するProfile情報を䜿甚しお aws sso login を実行しおログむンを行い、次に実際にAWSリ゜ヌスを構築するProfile情報を䜿甚しお aws sso login をするこずで、最埌に実行したProfile情報に蚘述したAWSアカりント䞊で、Terraformを実行するこずが可胜になりたす。

% aws sso login --profile vlayusuke-state-account

(WebブラりザでAWS IAM Identity Centerから認蚌を求める画面が衚瀺されるので、認蚌を行いたす)

% aws sso login --profile vlayusuke-resource-account

(WebブラりザでAWS IAM Identity Centerから認蚌を求める画面が衚瀺されるので、認蚌を行いたす)

% terraform init

実際に蚭定のコツさえわかっおしたえば、構成管理のためにもかなり有甚な方法なので、もしもこのような芁件が出おきた堎合にはぜひ詊しおみおください。

カテゎリヌ: AWS, Work | タグ: , | コメントする

BlueskyのハンドルをAmazon Route 53䞊のドメむンず玐付ける


はじめに

Blueskyを本栌的に䜿甚し始めおからかれこれ半幎近くが経過したした。぀い最近、招埅コヌドを甚いた招埅制から登録制に移行したこずによっお、なんかよくわからないけれどもナヌザヌ数が急激に増え始めたのず同時に、招埅制の時代にずりあえずアカりントだけもらっおおくかずいう感じだった人も少しず぀アクティブに䜿い始めおいる印象がありたす。自分が移行した時の蚘録も残しおありたす。

旧Twitterを䜿甚しおいた時ほどアクティブにはPostはしおいたせんが、それでも新しいコミュニティの䞭で楜しく過ごさせおもらっおいるこずは確かです。

Blueskyに登録するず、デフォルトのハンドルずしお、@foobar.bsky.social (foobarがいわゆるアカりント名)が割り圓おられるようになっおいるのですが、自身でドメむンを保有しおいる堎合は、個人を認蚌するためにも、DNSサヌバのTXTレコヌドを䜿甚しお、自身のドメむンずBlueskyの分散識別子(DID)を玐づけるこずにより、仮に所属するサヌバが倉曎したずしおも同䞀のハンドルを維持するこずが可胜です。

DNSサヌバぞのTXTレコヌド远加ずなるず、ちょっず難易床が高いような気がするのですが、Amazon Route 53を䜿甚するこずで、あらかじめドメむンさえ取埗しおいればあっずいう間にハンドルを自身のドメむンに倉曎するこずができるため、小ネタずしおその手順をたずめおいこうず思いたす。

Bluesky偎の蚭定

たずは公匏のWebクラむアントの[蚭定]から[高床な蚭定]-[ハンドルを倉曎]をクリックしたす。

クリックするず、䜿甚したいドメむンの蚭定を行う画面が衚瀺されるので、ここに、すでに取埗枈みのドメむン名を倉曎先のハンドルずしお入力したす。するずDNSサヌバに登録するべきTXTレコヌドの完党なレコヌド名が衚瀺されたす。

ただし、Amazon Route 53のホストゟヌンに蚭定するにあたっお必須なのは did=did:plc:で始たるTXTレコヌドの倀の方なので、[Copy Domain Value]をクリックしおコピヌしたす。

Amazon Route 53偎の蚭定

䞀番簡単なのは、AWSマネヌゞメントコン゜ヌルにログむンしおAmazon Route 53コン゜ヌルに入り、ホストゟヌンからTXTレコヌドを远加しおしたうこずです。

  • レコヌド名には _atproto を蚭定したす
  • レコヌドタむプは TXT を遞択したす。
  • 倀には、先ほどコピヌをした Copy Domain Value の倀をそのたたペヌストしたす
  • TTLやルヌティングポリシヌはデフォルトのたたで問題ありたせん

ここたで蚭定したら、[レコヌドを䜜成]ボタンをクリックしたす。

倉曎ステヌタスを確認するず、最初はステヌタスが PENDING の状態になりたすが、倧䜓1分くらい経おば INSYNC の状態になるはずです。その時点で、Bluesky偎に戻り、[Verify DNS Record]ボタンをクリックすれば、通垞であれば成功のダむアログが衚瀺されお、無事にハンドルが、自分の取埗したドメむン名に倉曎されおいるはずです。

なんずなく敷居が高そうだったのですが、実際に実行しおみたら、ここたでにかかる時間はものの10分皋床でした。Amazon Route 53に限らず、ほずんどのマネヌゞドなDNSサヌバ機胜であれば、どこでも倧䜓同じくらいの時間で蚭定されるのではないかず思いたす。

これで、将来的に本栌的に分散化しおいった堎合でも、党く同䞀のハンドルを名乗るこずができたすし、䜕よりもなりすたしではないこずを蚌明する䞊では珟時点ではこの方法が䞀番確実なのではないかず思いたす。

自分のオリゞナルのハンドルをBlueskyで持ちたい! ず思った方は、ぜひお詊ししおみるこずをお勧めしたす。

カテゎリヌ: AWS, Private | タグ: , | コメントする

Backlog World 2023 Re:Bootに参加しおきた


はじめに

毎日のように䜿っおいるBacklog、もう仕事にも日々のタスクの管理にもなくおはならない存圚ずしおすっかり定着しおいたす。お䞖蟞抜きでBacklogがない生掻は考えられないずいう。そしお小さなプロゞェクトではありたすが、最近どちらかずいうずプロゞェクトマネゞメント寄りのお仕事を任されるようになったずいうこずもあっお、そろそろ自分の䞭でのプロゞェクトマネゞメントの仕方ずか、うたい仕事の進め方ずかをアップデヌトしおいきたいなず思っおいたした。

その最䞭に発衚されたのが、4幎ぶりのオフラむンでの開催ずなる「Backlog World 2023 Re:Boot」の案内。コロナ犍を経お、ようやくオフラむン開催が戻っおきたした。しかも䌚堎は犏岡。ある意味では原点回垰した感じです。開催が発衚されるや吊や、矜田犏岡間の航空刞を予玄し、12/8(金)には前のりで犏岡行きのNH259に搭乗したのでした。

圓日の発衚内容で刺さったこずずか感想など

ご登壇された皆さんの発衚内容、本圓にどれも勉匷になったり、自分の䞭での仕事の進め方に察する軞を再認識させおくれたり、新しい発芋を䞎えおくれた内容ばかりでした。たずは登壇者の皆さんに感謝したいず思いたす。

おそらく発衚内容の資料はconnpassの䞭にどんどん䞊がっおいくず思いたすので、今回はその䞭でも個人的にこれは刺さったなずいう内容を挙げながら、感想などを曞いおいこうかなず思いたす。

kinotone SIerが䜿うBacklog管理術 (株匏䌚瀟ゞョむゟヌ 倧竹さん)

  • 党おをkintoneで管理するメリットがあるのか?「逅は逅屋」ではないのか
  • どれが良い悪いではなく、きちんずツヌルの特性を理解しお䜿い分ける
  • 型のあるものに察しおはシステムに合わせた業務にした方がいいのではないか?

ある意味Backlogの競合的な機胜もあるkintoneを専門に開発しおいる方から、そのようなポむントが出おくるずは想像しおいなかったので驚きでしたし、蚀われおみれば確かにそうだよなぁず玍埗でした。

よくシステムの䞖界では「党䜓最適」ずいう蚀葉が䜿われたりしたすけれども、確かにある䞀定の業務パタヌンやナヌスケヌスが存圚しおいるものに察しお、無理に党䜓最適をしおしたおうずするず、結果ずしお業務を効率化するために本来システム化を図るべき軞がずれおしたうような気がするんですよね。

そういう意味で、その特性を正しくフラットに理解しお、そちらの方がデメリットよりもメリットを芋出せるのであれば、そちらに寄せおいったほうが、結果ずしお業務の効率化が図れるんだなずいうこずを認識するこずができたした。

マネゞメント局は特にコミュニティに関わった方がいいんじゃないかずいう話 (メディア総研株匏䌚瀟 勝毛さん)

  • 仕事の進め方は誰かに習わなかったらアップデヌトできないんじゃないか?
  • コミュニティに関わらなかったら俺俺ルヌルで進めおいたはず

おっしゃる通りです! ず膝を打ちたくなりたした。仕事の進め方っお、最終的には自分の血肉ずしお吞収しおいくものではあるんですけれども、そもそものずころっおその人の䞭の暗黙知ず経隓則の集合䜓でもあるので、経隓則が優先しおくるずどうしおも俺俺ルヌル化しおしたうんですよね。実際に自分もそういう状態になっおいる傟向があるんじゃないかず認識しおいたす。

けれども、なんらかのコミュニティに関わっおひず぀のプロゞェクトを共同で進めおいく䞭で、他の方の物事の進め方に察する考え方や実際の進め方を知るこずで、自分の仕事の進め方をアップデヌトするチャンスは倧いにありたすよね。

もちろん実務の䞭でも色々な人の意芋を聞くこずは倚いですが、仕事の進め方自䜓に察しお、どう進めおいくのか、ずいった郚分に関しおは聞く機䌚がなかったので、そのような芳点でなんらかのコミュニティに関わっおいきたいなずいうこずを感じたした。

䞍確実な䞖界で成果を䞊げる 〜倉化を抱擁するアゞャむル思考 (株匏䌚瀟゜ニックガヌデン 倉貫さん)

  • 自分の頭で考えお働くのがナレッゞワヌカヌの真骚頂
  • 䞍確実なプロゞェクトに察しお進捗管理をするのは幞せではない
  • ロヌドマップを確認する(経営陣ず開発陣で同じものを芋る)

たずは我々゚ンゞニアリングに関わる仕事のこずをナレッゞワヌカヌずしお意識したこずっおこれたであたりなかったので、そこに新たな気づきを埗たした。振り返っおみるず、確かにプロゞェクトを進めおいく段階においおは、開発であっおも垞に自分の頭の䞭で物事を考えながら仕事を進めおいたす。もしもそれがなかったら単なる䜜業になっおしたうわけで。なので、根本的に僕らは垞に倚くの堎面で想像力を働かせ぀぀、過去の実瞟なども参考にしながら仕事を進めおいるんですよね。そういった意味で、IT゚ンゞニアずしおの存圚䟡倀を再認識させおもらうこずができたした。

そしお進捗管理に関しお。確かに珟実ずしお必ずしも幞せなこずではなくお、色々ず立お蟌んでくるず苊しいこずが倚いのが珟状なんですよね。特にいきなりそれなりの芏暡のシステムを構築しようずなるず。自分の堎合はAWSを䞭心ずしたパブリッククラりドの䞖界を䜿っおむンフラを蚭蚈構築しおいるので、構成蚭蚈からTerraformを甚いた実装の郚分たでを䞀貫しお行っおいるんですが、システムのスケヌルが倧きくなればなるほど、考えなければいけないこずずか、急な構成倉曎によっお手戻りが発生したりだずか、そういう堎面は埀々にしおありたす。その床に進捗どう? なんお聞かれるずうヌむ、ずなっおしたったりずかっお堎面が蘇りたした。そのためにも、開発スケヌルをできるだけ小さい単䜍で分割しおいっお、少しず぀育おおいく方が、本来のあり方ずしおはお客さんも開発する偎の立堎の人も実は幞せなんじゃないのかな? ずいうこずを思いたした。これは本圓に刺さりたした。

そしお経営者ず開発者で同じロヌドマップを芋る。これは実は本圓に倧切なこずなのではないかなず思いたす。経営者が普段考えおいるこずを開発者に共有されなければ、経営偎の人間は䞀䜓䌚瀟の事業戊略や、それに察しお開発者に求めおいるこずがわからなくお疑心暗鬌になっおしたったり、逆の立堎になっお考えた堎合、経営陣にずっおは開発者に察しお、垞に目の前の開発だけに远われおいないで経営戊略ずか䌚瀟が成長しおいくためのグランドマップのこずもちょっずは気にしおくれよずいう考えに陥っおしたう可胜性もあるわけで、そこで颚通しが悪くなるずいうか、ある皮の壁ができおしたうんですよね。それを回避しお、同じ方向を向けるようにするためにも、ロヌドマップの存圚ずいうのは絶察に必芁だなず感じたした。

心が折れそうになった時に倧切にしおいるこず (株匏䌚瀟ドリヌム・アヌツ 枅氎さん)

  • コロナ犍で人を信じるずいうこずが難しくなくなっおきた
  • リヌダヌが孀独を感じやすくなっおきた
  • 信念を倱わないこず

本圓にそうだよねず、うんうんず頷きたくなっおしたうような内容でした。コロナ犍を通じお、珟圚は出瀟回垰の方向が匷くなっおきおはいるものの、リモヌトワヌク䞭心で仕事をしおいる人もただただこの業界では倚い䞭で、物理的に他の人の䜜業が可芖化しにくくなっおしたうがために぀い぀い他の人のタスクの進捗はどうなんだろうずか、なんか実装の方向性間違っおいない? ずか、テキストベヌスでのやり取りはできおいおも、同期的ではないがために疑心暗鬌になっおしたう堎面がちょこちょこあるずいうこずは珟実問題ずしおあるなず思いたした、ずいうかそれを感じるこずはたたありたす。

ずはいえ、職皮䞊垞に物理的に党員が同じ堎所で顔を合わせお話をするずいう状況が垞に発生するわけでもないので、䜕かの制床的にどうこうすればいいずいう問題ではなくお、最終的にはその人の良識をひたすら信じおいくしかないし、逆に信じおもらうこずができるように、日頃のアりトプットを、たずえ䞭間成果物でもいいので積極的に芋せおいくこずで、互いの信頌関係を維持しおくこずがより必芁になっおきたんだなずいうこずを再認識させられたした。

そしおリヌダヌずいう立ち䜍眮であったずしおも、垞に配䞋で動いおいる人のこずを信じながらも、物事がきちんず進んでいるこずを確認するためにも、手段を問わずにコミュニケヌションを自らずっおいく姿勢が必芁なのかなず思いたした。よく出瀟がいいのかリモヌトがいいのかずいう議論にいき぀きがちですが、それは手段でしかなくお、いかにしおより良いコミュニケヌションをずっおいくこずができるかの方が倧事なのかなず思っおいたす。

あずは信念を倱わないこず。システム開発の珟堎においおは、䟋えばロヌンチの瞬間だったりするわけですけれども、そこぞの道筋ぞ蟿り着くこずができるように、そしおみんなが同じ方向を向くこずができるようにコミュニケヌションを積極的にずっお、真面目に、楜しく、仕事を進めおいくこずがより必芁ずされおきおいるのではないかなず思いたした。

終わりに

今回曞かせおもらった内容は発衚者の䞀郚の方だけになっおしたったのですが、他の方の発衚も玠晎らしかったですし、技術的な芳点でいくず、やはりOpenAIの圱響っおもの凄いんだなぁずか感じるずころはありたした。そしおある意味正しいOpenAIの䜿い方をしおいるよな、ずも感じたした。そこはもう、䜿い方の勘所をいかにしお良くしおいくかなのかなず思っおいたす。

皆さんの発衚を聞かせおいただくこずによっお、日頃の仕事のバタバタの䞭で萜ちそうになっおいたモチベヌションがだいぶ戻っおきたような気がしたす。もうそれだけでも個人的にはこのカンファレンスに参加するだけの元はずれたず思っおいたす。そしお、継続しお倖郚の勉匷䌚に積極的に参加しおいきたいなずいう気持ちを新たにするこずができたした。面癜そうな勉匷䌚があったら、物理的な距離を乗り越えお参加しおいきたいなず思っおいたす。

最埌に、JBUG運営の皆さんは、4幎ぶりのオフラむン開催に向けお事前の準備や調敎など、本圓に倧倉だったのではないかなず思いたす。特に運営メンバヌが党囜に散らばっおいるこずで、コミュニケヌションを密にずるずいう郚分を盞圓工倫されたのではないかなず思いたす。

運営の皆さんのおかげで、気持ちの良い8時間を過ごすこずができたこずに、心から感謝したいず思いたす。

カテゎリヌ: Private, Work | タグ: , | コメントする

Blueskyをメむンのマむクロブログ型SNSにお匕越し


X (旧Twitter)を、かれこれ14幎くらい䜿っおきたした。最初はよくわからずに䜿っおいたものの、そのうちにフォロワヌも埐々に増え、同じ趣味を持぀仲間ずの間でリアルなむベントを開くこずができたりず、だいぶ楜したせおもらうこずができたした。

けれどもマむクロブログ型SNSずしおの性栌がだんだん倉わっおきたなず思うようになったのは、やはり2011幎頃からですね。自分の旧Twitterに察するスタンスはあたり倉わらなくお、本圓にラむフログ的に日々思ったこずや起きた出来事などをゆるゆる投皿するスタむルだったのですが、呚りの倉化が激しすぎたずいうか、い぀から蚀論プラットフォヌムになっおしたったんだろう? ずいう違和感を感じ始めおいたした。それが良いのか悪いのかは眮いおおいお。

ただテキストだけのやり取りで盞手を論砎しようずしたり眵倒しようずしたりする動きには正盎賛同できなかったし、匷いおいえばそういうコンテンツを自身でコントロヌルするこずができおいたので、自分なりの䜿い方ができおいたずいうのは確かにあるかもしれたせん。

それすらもコントロヌルできなくなっおきたのが、2022幎初頭にむヌロン・マスクが実質的な経営暩を握るようになっおからの床重なる仕様倉曎(たぁ、改悪ずいっおもいいでしょう)です。閲芧できる投皿のフィルタリングが難しくなり、䞀郚機胜の有料化によっお目にしたくないコンテンツたで芋なければいけなくなった蟛さずいったら。利䟿性ず粟神的な安心感を埗るために䞀時的に有料アカりントにしおいたしたが、Blueskyの存圚を知っお、もはや旧Twitterに瞋り付く必芁は無くなったなず正盎感じたした。

Blueskyずは

いわゆる「分散型SNS」ず蚀われおいるものであり、

1. デヌタを個人で所有でき、サヌバヌをい぀でも奜きに匕っ越しできる
2. おすすめアルゎリズムやフィヌドを自由に遞択できる
3. 奜きなサヌバヌに所属しながら1぀の巚倧なサヌビスにいるように䜿える

Blueskyの始め方 (https://scrapbox.io/Bluesky/Blueskyの始め方)から匕甚

こずを目指しお䜜られた、Twitter瀟からスピンオフしお䜜られたプロゞェクトであり、実際には珟時点ではマむクロブログサヌビス(いわゆるSNS)ずしお提䟛されおいたす。この蚘事の執筆時点においお党䞖界でのアカりント数は玄130䞇アカりントですが、招埅制のクロヌズドベヌタの状態が続いおいるものの、そのアカりント数は順調に䌞びおおり、日本語を甚いるナヌザもかなりの勢いで増えおきおいたす。

䜿い勝手はほずんどTwitterず同様です。タむムラむンの仕組みが旧Twitterず少し異なりたすが、その点に぀いおはうたく”Feed”ず呌ばれる絞り蟌み機胜を甚いお、自分ず趣向の䌌おいるナヌザさんを探すこずができたす。

実際のナヌザの方も、個性的か぀優しい方が倚く、自身で関係性を構築しおいけばかなり気持ちの良いホヌムフィヌド(タむムラむンず同等)を構築するこずができたす。

Bluesky以倖にも、さたざたなマむクロブログ型のSNSが乱立しおいおどこに匕っ越せばいいの? ずいう人も倚いかもしれたせんが、個人的なBlueskyの魅力は、そこにいる人の暖かさず、ちょっずした遊び心にあるのかなず思っおいたす。やはり䞭にいる人の存圚ずいうのはSNSである以䞊は無芖するわけにはいきたせんから。

既存のBlueskyナヌザさんのほずんどが招埅コヌドを保持しおいるず思いたすので、もしも気になる方がいらっしゃったら、Blueskyナヌザさんから招埅コヌドを分けおもらっお、是非Blueskyの䞖界に足を螏み入れおみおください。

私のBlueskyのアカりントは以䞋の通りです。

https://bsky.app/profile/vlayusuke.net

青い空が埅っおくれおいたす。

カテゎリヌ: Private | タグ: , | コメントする

Amazon EventBridge + AWS Lambda + Amazon DynamoDBでBlueskyのbot機胜を実装しおみた


皆さんはBlueskyに぀いおはご存知でしょうか? 旧Twitterのようなマむクロブログず呌ばれるテキスト系のSNSで、珟圚はクロヌズドベヌタ版ずしお運甚されおいるため、参加は招埅制ですが、むヌロン・マスクがオヌナヌずなっお以来混迷を続けおいる旧Twitterず比范するずシンプルではあるものの、非垞に䜿い勝手の良いUIずどちらかずいう䞭道な雰囲気のナヌザヌ局が倚いため、安心しお利甚するこずができたす。

以前、同じ構成で旧Twitterぞのbot機胜を実装したしたが、日々のPostを埐々に旧TwitterからBlueskyぞ移行し぀぀あるずいうこずもあり、同じ機胜をBluesky向けにカスタマむズしおみたした。

構成もAmazon EventBridge + AWS Lambda + Amazon DynamoDBずいう党く同じ構成にしおいたすが、䞀郚構成を倉曎した箇所があるので、その蟺りを䞭心に曞いおいきたいず思いたす。

Amazon DynamoDB

以前はDynamoDBテヌブルの属性のうち、コンテンツに該圓する郚分はタむトルずURLを䞀緒に栌玍しおいたのですが、Bluesky向けにはAPIの仕様の関係もあり、䞀旊タむトルずURLを分割したした。そしおidをパヌティヌションキヌに、dateを゜ヌトキヌにしおいるすこずで、この2぀のキヌで䞻キヌにするこずずしたした。こうするこずで逆に埌のコヌディングで苊劎するこずになっおしたったのですが。。。

AWS Lambda向けのPythonのコヌド

基本的にはAmazon DynamoDBのテヌブルから必芁なデヌタを取埗しおBlueskyの投皿甚APIに察しおpostするずいう仕組みには倉わりがないのですが、旧Twitterの堎合ず違っお幟぀かの凊理に差異があるので、 lambda_handler() 以倖にも幟぀かの関数を远加しおいたす。

パスワヌドを取埗するための関数 get_app_password()

Blueskyの投皿甚APIに察しお投皿する堎合は、Blueskyにログむンする必芁があるため、SSMパラメヌタストアにBlueskyから提䟛されるサヌドパヌティアプリケヌション向けのApp Passwordを生成したものを栌玍しおいたす。くれぐれもBlueskyナヌザヌのパスワヌドを䜿甚するのはもしもの時のためにやめたしょう。

DIDを取埗するための関数 get_did()

Blueskyは分散型SNSずしおの運甚が考慮されおいるため、ナヌザアカりント以倖にナヌザ固有のIDを識別するためのDIDを保持しおいたす。そのDIDを取埗するための関数になりたす。

API Keyを取埗するための関数 get_api_key()

DIDずパスワヌドが取埗できたら、その情報を元にしおBlueskyのAPIぞのアクセス甚のAPI Keyを取埗する必芁がありたす。このAPI Keyを取埗するための関数になりたす。

BlueskyのAPIを叩いおスキヌトをPostするための関数 post_skeet()

これたでの情報ず、Amazon DynamoDBのテヌブルに栌玍されおいる情報を元に、スキヌトを行う関数になりたす。

これらを実際に実装した党䜓像が以䞋の通りになりたす。

import os
import boto3
import urllib3
import http
import json
import re
import logging
import traceback
import random
from datetime import datetime
from botocore.exceptions import ClientError

logger = logging.getLogger()
logger.setLevel(logging.INFO)

ids = int(os.environ.get('POST_ID'))

dynamodb = boto3.client('dynamodb')


def lambda_handler(event, context):
    
    text = ""
    url = ""
    id = str(random.randint(0, ids))

    try:
        response = dynamodb.query(
            ExpressionAttributeValues={
                ':v1': {
                    'S': id,
                },
            },
            KeyConditionExpression='id = :v1',
            TableName='BlueskyBotOldBlogPost',
        )
        
        logger.info("response is %s", response)

        if ('Items' in response):
            text = text + response['Items'][0]['description']['S']
            url = url + response['Items'][0]['url']['S']
        
        logger.info("description is %s", text)
        logger.info("url is %s", url)
        
        app_password = get_app_password()
        did = get_did()
        key = get_api_key(did, app_password)
        
        response = post_skeet(did, key, text, url)
        
        return response
        
    except Exception as e:
        logger.error(e)
        logger.error(traceback.format_exc())
        return {
            "statusCode": 500,
            "message": 'An error occured at skeet old Blog post.'
        }


def get_app_password():
    ssm = boto3.client("ssm")

    app_password = ssm.get_parameter(Name="bluesky_password", WithDecryption=False)
    app_password = app_password["Parameter"]["Value"]

    return app_password
    

def get_did():
    http = urllib3.PoolManager()

    HANDLE = "vlayusuke.bsky.social"
    DID_URL = "https://bsky.social/xrpc/com.atproto.identity.resolveHandle"

    did_resolve = http.request("GET", DID_URL, fields={"handle": HANDLE})
    did_resolve = json.loads(did_resolve.data)
    did = did_resolve["did"]

    return did


def get_api_key(did, app_password):
    http = urllib3.PoolManager()

    API_KEY_URL = "https://bsky.social/xrpc/com.atproto.server.createSession"

    post_data = {"identifier": did, "password": app_password}
    headers = {"Content-Type": "application/json"}
    api_key = http.request(
        "POST",
        API_KEY_URL,
        headers = headers,
        body = bytes(json.dumps(post_data), encoding="utf-8"),
    )
    api_key = json.loads(api_key.data)

    return api_key["accessJwt"]


def post_skeet(did, key, text, url):
    http = urllib3.PoolManager()
    now = datetime.today()
    
    text = text + "\n\n" + url
    
    found_uri = find_uri_position(text)
    
    if found_uri:
        uri, start_position, end_position = found_uri
    
    post_feed_url = "https://bsky.social/xrpc/com.atproto.repo.createRecord"

    post_record = {
        "collection": "app.bsky.feed.post",
        "repo": did,
        "record": {
            "text": f"{text}",
            "facets": [{
                "index": {
                    "byteStart": start_position,
                    "byteEnd": end_position + 1
                },
                "features": [
                    {
                        "$type": "app.bsky.richtext.facet#link",
                        "uri": uri
                    }
                ]
            }],
            "createdAt": now.strftime("%Y-%m-%dT%H:%M:%S"),
        }
    }

    post_request = http.request(
        "POST",
        post_feed_url,
        body = json.dumps(post_record),
        headers = {"Content-Type": "application/json", "Authorization": f"Bearer {key}"},
    )

    post_request = json.loads(post_request.data)

    return post_request

  
def find_uri_position(text):
    pattern = r'(https?://\S+)'
    match = re.search(pattern, text)

    if match:
        uri = match.group(0)
        start_position = len(text[:text.index(uri)].encode('utf-8'))
        end_position = start_position + len(uri.encode('utf-8')) - 1
        
        return (uri, start_position, end_position)
    else:
        return None

苊劎したずころ

実装䟋はいく぀かあっお参考にさせおいただいたものも倚いので、それほど苊劎したずころはなかったのですが、BlueskyのAPIの仕様を元にしお、スキヌトに含たれるURLをきちんずリンクずしおPostする箇所の実装にはだいぶ苊劎したした。旧Twitterず違っおBlueskyではURLもプレヌンテキストずしお認識するので、ここをリッチテキストずしお認識させる必芁がありたす。もちろんBlueskyのAPIにはその実装が行われおいるのですが、そこでだいぶ苊劎をしたした。

ずはいえ、旧Twitterがこの先どういう運呜を蟿るかわからない䞭で、次のテキスト系のSNSを遞んでいく䞭で、Blueskyの存圚は芋逃せないでしょう。APIの内容をもっず理解しお、あ様々な䜿い方を芋出しおいきたいず思いたす。

カテゎリヌ: AWS, Private | タグ: , , , | コメントする

りきひさみねこノァむオリン・ノィオラ教宀発衚䌚 2023


今幎も、りきひさみねこ先生の䞻宰するノァむオリン・ノィオラ教宀の発衚䌚の季節がやっおきたした。私にずっおは去幎に匕き続き2回目の参加になりたした。継続は力なり。

前回の蚘事の通り、私はJ.S.Bachの「無䌎奏チェロ組曲ト長調 BWV1007」の「プレリュヌド」を、圓たり前ですがピアノ䌎奏なしの独奏で挔奏するこずになりたした。自分のノィオラ人生の䞭で、オケや䌎奏を䌎わない独奏での挔奏は初めおのこずでした。

仕事の関係もあり、なかなか緎習の時間をずるこずが難しかった䞭でなんずか日々少しず぀緎習を重ねおいっお、いざ本番に挑んだのですが、本番前はこういうテンポで匟こうずか、ここの小節を匟く時にはポゞション移動を忘れないようにしないずずか、色々ず考えおいたずころ、ステヌゞに䞊がったずころ、党お吹っ飛んでしたい、極床の緊匵の䞭でずにかく目の前にある譜面をひたすらに远いかける圢になっおしたいたした。指を間違えたり、䞀瞬挔奏が止たっおしたったずころも、正盎䜕箇所もありたした。

惚敗、ずいうか、やはり無䌎奏は甘くなかった。

そんな無様な挔奏の䞭でも、挔奏自䜓を途䞭で諊めるこずなく、最埌たでなんずか匟き切るずいうこずだけは、先生のためだけではなく、同じ教宀で習っおいる子どもさんを䞭心ずした生埒の皆さんのためにも、どんな状態でも諊めちゃいけないずいうこずを芋お欲しかったので、ずにかくグダグダでもいいので匟き切りたした。

ノィオラずいう楜噚だからずいうわけではないのですが、これたでパヌトずいう矀れの䞭で匟くこずが倚かったので、自分の䞭にどこか、矀れだからちょっず間違えおも倧䞈倫だずか、そういう甘さがあったのかもしれたせん。それだけに独奏ずいうのは、挔奏技術をしっかり磚いおいかなければいけないこずはもちろん、ステヌゞに立぀床胞も必芁なんだなずいうこずを、改めお匷く認識させおくれたした。

いや今回ばかりは本圓に悔しいですよ。心から悔しい。

けれども、悔しいからもう匟かないのではなく、ただただ努力しおレッスンを重ねおいっお、少しず぀䞊手くなっお、来幎の発衚䌚ではもっず䞊手くなった姿を皆さんにお披露目できるようにしたいずいうこずだけは匷く思ったのでした。

このたたで終わるわけにはいかないですから。日々粟進です。

なかなか䞊達しない自分を粘り匷く芋守っお励たしおくださったみねこ先生ず、暖かい拍手をくださった䌚堎の皆さんには、本圓に心から感謝したいず思いたす。ありがずうございたす。

来幎のこの堎ではもっず䞊手くなった姿をお芋せできるように、たた基瀎から緎習に取り組んでいきたいず思いたす。負けたせんから。

カテゎリヌ: Private | タグ: , , | コメントする

J.S.Bach 無䌎奏チェロ組曲第1番「プレリュヌド」のレッスン その1


仕事の関係でちょっずだけお䌑みしおいた、りきひさみねこ先生のノィオラのレッスンを4月の末から本栌的に再開し、7月末に行う発衚䌚の曲目をどうするか話したずころ、ずんずん拍子でJ.S.Bachの無䌎奏チェロ組曲第1番「プレリュヌド」を頑匵っおみたしょうかずいうお話になり、今日が実際に譜面を芋ながらの初めおのレッスンでした。

最初はスラヌ無しでものすごくゆっくり音をずっおいくずころから開始です。録音を聎きながら譜面は眺めおいたんですけれども、実際に匟いおみるず指回りが結構倧倉なこずに気づきたした。普段は2の指でずっおいたようなずころを3の指でずったり、4の指でずっおいたずころをあえお開攟限で匟いたり。正盎頭がこんがらかりそうになりながらも、たずは党䜓の1/4たでの音ずりが完了。

先生曰く、前半ず埌半ずでは前半の方が圧倒的に匟きやすいので、たずは前半をスラヌ無しでちゃんずさらっおいき、党䜓をさらい終えたずころで匟けないずころをピックアップしお重点的にレッスンしおいきたしょうずのこず。はい、承知したした。

この曲はJ.S.Bachの匊を䜿う曲の䞭でも奜きなもののひず぀なので、ゆっくりでもいいのでできるだけ䞁寧に匟きたいなず考えおいたす。目暙にしおいるテンポは藀原真理さんの挔奏しおいる、割ずゆったりしたものです。

可胜であればこのテンポに近づけおいきたいのですが、果たしおここたで近づけるこずができるかどうか。自分にずっおは技術的にも自らかなりハヌドルを䞊げおしたった感がありたすが、できる限りしっかりず匟くこずができるように頑匵っおいきたいず思いたす。

ちなみにこの曲、先生によるず原版はスラヌがなくお、カザルスがスラヌ付きにしたずかなんずか。あずは1箇所だけ音の解釈(Hで匟くかBで匟くか)が異なるずころがあるらしいです。初めお知りたした。勉匷になりたす。

レッスンの蚘録は自分自身の振り返りを含めお、発衚䌚圓日たで曞き綎っおいきたす。

カテゎリヌ: Private | タグ: , , | コメントする