Kaigi on Rails 2023の登壇資料です!
はじめに現代のWebアプリケーションにおいて、ユーザが写真や動画などのファイルをアップロードする機能は、しばしば求められます。 本記事では、ファイルアップロードを実現するための一手段として、「署名付きURL」を利用した方式を取り上げ、その設計について詳しく解説します。 今回は、Amazon Web Services(AWS)を利用する前提のもと、このアプローチを探求していきます。 前半部分は署名付きURLをそもそもよく知らない方向けの導入部となっていますので、要点だけ抑えたい方は設計上のポイントから読まれることをお勧めします。 ファイルアップロードの実現方式パターン署名付きURLの話をする前に、ファイルアップロード機能をWeb APIとして実現する方式について、いくつか代表的なものを紹介します。 Pattern 1. multipart/form-datamultipart/form-da
はじめに こんにちは。カミナシでソフトウェアエンジニアをしている佐藤です。 みなさんは、アプリケーションのフロントエンドから、Amazon S3 にファイルをアップロードするときに、どのような方法を用いているでしょうか? 「バックエンドのサーバーにファイルを送信し、バックエンドのサーバー経由で S3 にアップロードしている」「Presigned URL を払い出して、フロントエンドから直接 PUT している」など、いくつかの方法があると思います。 弊社で提供しているサービス「カミナシレポート」でも、用途に応じて上記の方法を使い分けて S3 へのファイルのアップロードを行っています。 特に、Presigned URL は、手軽に利用できる上に、バックエンドのサーバーの負荷やレイテンシーの削減といったメリットも大きく、重宝しています。 一方で、その手軽さの反面、アップロードに際して様々な制約を
NFCではそのまま「パ」として表されますが、NFDでは「ハ」(基底文字)と「゜」(結合文字)の組み合わせとしての「パ(UTF-8でe3 83 8f e3 82 9a)」(合成文字)で表されます。試しにNFDで正規化された「パ(e3 83 8f e3 82 9a)」を任意のテキストエリアに貼り付けて削除してみると、半濁音のみが取れて「ハ」のみになると思います。 このように文字列の正規化形式が異なる場合、単純な比較演算子での評価は困難であり、文字列によっては想定外の挙動を引き起こす可能性があります。 特にMacファイルシステムではNFDを正規化方式と採用しているため、NFC/NFD問題が度々引き起こされています。先日(2023年03月27日)リリースされた「macOS 13.3 Ventura (22E252)」では、ファイル名に濁音や半濁音が含まれるファイルがFinderから開けなくなる
はじめに こんにちは。株式会社Flatt Securityセキュリティエンジニアの村上です。セキュリティ・キャンプ卒業後、新卒入社組としてFlatt Securityでセキュリティエンジニアをしています。 本稿では、Webアプリケーション上で実装される「ファイルアップロード機能」の実装パターンをいくつか示し、「開発者が設計をする上で気をつけるべき脆弱性」とその対策について解説していきます。 「ファイルアップロード機能」の脆弱性は特定の言語やサービスによって発生する脆弱性だけでなく、特定の拡張子のファイルでのみ発生する脆弱性など非常に多岐にわたります。そのため、本稿では全ての脆弱性を網羅する事は目的としておりません。しかし、「ファイルアップロード機能」のセキュリティについて考えるための基本となる知識と対策観点を本記事で知って、今後の開発に応用していただければ幸いです。 はじめに ファイルアッ
Scrapboxにファイルアップロード機能を追加。さまざまなファイル共有が可能に。画像データ、各種ファイルなどさまざまなデータをScrapboxにアップロードすることが可能になりました。 Nota, Inc.(ノータ)はナレッジ共有ツール「Scrapbox(スクラップボックス)」にファイルアップロード機能が追加されたことをお知らせします。 本機能の追加により、画像データ、各種ファイルなどさまざまなデータをScrapboxにアップロードすることが可能になりました。 Scrapboxを社内ナレッジ共有ツールとしてご利用いただいている皆様にはファイルのやりとりや管理などがより便利に、また教育機関でご利用の皆様におかれましても、資料の添付などが以前よりも簡単になります。 ファイル権限に関して アップロード先のProjectの設定に準じます。 <Public Project> ファイルの表示・ダウン
はじめに セキュリティエンジニアの齋藤ことazaraです。今回は、オブジェクトストレージに対する書き込みに関連するセキュリティリスクの理解と対策についてお話しします。 本ブログは、2024年3月30日に開催された BSides Tokyo で登壇した際の発表について、まとめたものです。 また、ブログ資料化にあたりオブジェクトストレージを主題とした内容の再編と、登壇時に口頭で補足した内容の追記、必要に応じた補足を行なっています。 なぜ今、この問題を取り上げるのか? 近年のクラウドリフト、クラウドシフトにより、クラウドを活用する場面が多くなってきていると思います。その中で、多くの場面で利用されるオブジェクトストレージにおいて、データの書き込み時に気にすべきセキュリティリスクが存在するのをご存知でしょうか? 近年、オブジェクトストレージの不適切な利用に起因する情報漏洩が多く発生しています。そのよ
はじめに あけましておめでとうございます。CX事業本部の吉川です。 年末年始連休は全体的にダラダラとした寝正月を過ごしていましたが、ちょっとくらい何かやろうということで自由研究として「Haskell+AWS」に取り組んでみました。 ずっとHaskellに興味があり、すごいH本と『入門Haskellプログラミング』は買ったのですが、すっかり積んでしまっていました。 そんなわけで、勉強しようしようと思いつつ手を出せていなかったのでこの機会にえいやで始めました。 今回は手頃なところでS3へのファイルアップロードを行います。 GitHubリポジトリ まずは完成物から。 stack run でS3バケットに10MBと100MBのダミーファイルをアップロードします。 https://github.com/dyoshikawa/amazonka-s3-playground S3バケットとIAMユーザ作成
CC0 Публичен домейн via Pxhere ユーザや研究者が ChatGPT の性能が時間とともにどのように変化したかを議論し続けている間でも、OpenAI はその特徴的なジェネレーティブ AI チャットボット製品に新機能を追加する手を緩めていない。 8月第1週、OpenAI 初のデベロッパーアドボケイトがあり、デベロッパーリレーションのエキスパートである Logan Kilpatrick 氏は、X(旧 Twitter)に、「ChatGPT の大規模アップデートが来週にかけて展開されます」と投稿した(編注:現在のところ、まだ大規模なアップデートは未確認)。 Kilpatrick 氏が強調した新機能の中には、プロンプトの例(以下のスクリーンショットを参照)、返信とフォローアップ質問の提案(Kilpatrick 氏は「疲労を軽減するのに非常に役立つ」と書いている)、GPT-4
本記事は AWSアワード記念!夏のアドベントカレンダー 12日目の記事です。 🎆🏆 11日目 ▶▶ 本記事 ▶▶ 13日目 🏆🎆 はじめに こんにちは、西本です。AWSアワード記念!夏のアドベントカレンダー 12日目を担当させていただきます。 2024 Japan AWS All Certifications Engineersに選出 昨年に引き続き、「2024 Japan AWS All Certifications Engineers」に選出いただきました。受賞者数も激増、試験も新しいものが増えてきていますが、引き続き頑張っていきたいと思います。 今回のテーマ AWS Key Management Service(以降、KMS)は使われていますでしょうか?多くのシステムで利用しているサービスかと思います。 例えば、「Amazon S3の暗号化に使用している」、「AWS Syst
【イチから学ぶ! 初めての Azure と生成 AI】Azure App Service / Container Apps を用いた生成AIアプリケーション開発 - ファイルアップロード編AzureAppServiceWebJobsAzureContainerAppsAzureContainerAppsJobs はじめに 本シリーズでは、Azure を活用した生成 AI アプリケーション開発の際に役立つポイントをご紹介します。実装時に直面しがちなハマりどころやその解決策を、全 5 回に分けてお届けします。 本記事は、App Service (Web App for Containers) / Container Apps それぞれを使ってファイルアップロードを行う方式について解説します。 本記事でご紹介するサンプルアプリケーションのソースコードは、以下のリポジトリで公開しています。 シナリ
WordPressのファイルアップロードサイズ上限が低く設定されていると、大きなサイズのファイル、プラグイン、テーマをアップロードできないことがあります。メディアを多用したサイトを構築する場合、これが大きな障害となるかもしれません。そのような場合、WordPressまたはサーバー(もしくはその両方)のファイルアップロードサイズ上限を引き上げなければなりません。 ご利用中のサーバーサービスやサーバーによってこの問題の解決方法は様々です。今回はそれら全てをご紹介し、WordPressで素早くファイルアップロードサイズを増やす方法を解説します。 それでは、早速詳しく見ていきましょう。 動画での解説もご用意しています。 WordPressのファイルアップロードサイズ上限とは 大きなファイルのアップロードは、サーバーのリソースを大量に消費します。サーバーのタイムアウトが発生するのを防ぐために、Wor
技術開発部で主にバックエンド開発をしている浜田(@hamchance0215)です。 現在開発中のプロダクトのバックエンドはRails + graphql-rubyを使っています。 今回、ファイルアップロードが必要な機能を実装しようと思ったのですが、graphql-rubyにはファイルアップロード機能が実装されていません。 そこで、GraphQLにファイルアップロードを実装するための方法を検討&実装したので紹介します。 どのように実現するか?案1: ファイルアップロードはREST APIにするREST APIでファイルアップロードさせる方法については検討の余地もなくすでに確立されています。 ただ、今回のプロダクトはGraphQLで実装しているので、できれば全てのエンドポイントをGraphQLに集約したいと考えています。 GraphQLで実装する手段が見つからない or 手段は見つかったが工
この記事は福島高専アドベントカレンダー5日目の記事です。 この記事ではGoでファイルアップロードの処理を作成していきます。 主に以下の記事を参考にさせていただきました。ありがとうございました。 How to process file uploads in Go 内容は私を含む初学者向けです! プログラムの書き方などで気になる点があったらお教えください。 もっと色々面白いこと書くつもりだったのですが忙しくて内容が薄くなってしまいました 目標 Goでのファイルアップロードの処理の書き方が分かる ioパッケージやosパッケージの基本的な使い方が分かるようになる 前提条件 Go1.11以上かつGoが自分のパソコンにインストール済みであること はじめに まず最初に、作業する新しいディレクトリを作成します。私は**file-img-secret/**とします。
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 社内システムからS3にファイルをアップロードする機能を開発することになり、Presigned URLを利用して開発を試みたものの、想定以上に時間がかかってしまいました。 S3の設定からバックエンド、フロントエンドと一気通貫での情報がまとまっていないことが課題として浮かんできたので、備忘録として残しておくことにしました。 ゴール クライアント側(Angular)のフォームで選択したファイルをS3にアップロードできること S3にアップロードする際は Presigned URL を利用すること アップロードされたオブジェクトは 読み込みのみのパブリックアクセス のアクセス許可が付与されていること Presigned URLとは AWSのドキュメントの署名付きURLの使用を抜粋
Webサービスに何かしらのファイルをアップロードしたい場面は多い。需要がある処理なのでやりようは幾らでもある。 幾らでもあると逆にどうするのがいいのか迷ったりする。 そんなわけでどのようなファイルアップロードの構成があるのか整理しておく。 前提条件 整理した構成 レンタルサーバ、1サーバ時代 オブジェクトストレージ直列 オブジェクトストレージアップロードだけ切り出し オブジェクトストレージイベント伝播 整理まとめ 前提条件 要件はざっくり以下のようなもので考える。 ユーザーは任意のファイルをWebサービスにアップロードできる ユーザーはアップロードが完了したことを知ることができる Webサービスはアップロードされたファイルを公に提供したり、限られたユーザーに提供したりする Webサービスはアップロードされたファイルに何かしらの保存前処理を行う 今回はファイルのアップロードに関心を置くので、
はじめに 本記事では、Amazon Cognitoユーザープールを使用したユーザー認証の実装方法と、とCognito IDプールを使用した認証済みユーザーによるS3へのファイルアップロード方法について解説します。 本実装で使用するAWSサービスと各役割は次のとおりです。 Amazon Cognito ユーザープール:ユーザー認証基盤 Amazon Cognito ID プール:一時的なAWS認証情報の発行 Amazon S3:認証されたユーザーがファイルアップロードするストレージ AWS IAM:Cognito ID プールで設定したIAMロールを利用し、認証されたユーザーがファイルアップロードする権限を付与 認証からファイルアップロードまでの処理フローは以下の通りです。 ユーザープールを利用しユーザー認証をします。 認証が成功すると、クライアントへIDトークンが払い出されます。 IDトー
Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。 Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
#アーキテクチャ大全 ここでは画像やPDFなどの文書ファイルをアップロードし、別のWebページで画像を表示するのに使ったり、別のユーザにアップロードした文書ファイルを見せたりダウンロードさせたりする用途を考える。 ExcelやCSVなどのデータをシステムに取り込むためのアップロードに関しては、別途記す。(至高のファイルアップロード みたいなやつ) 設計のポイント アップロードさせるファイルの種類 ファイルアップロードダイアログで拡張子制限できる。 バリデーションとしては、Mime-typeだけでなく、ファイルに含まれるマジックナンバーをチェックしておくとだいぶ安心感がでる(もちろん完全ではないので、ウイルスチェックも併用すること)。 https://medium.com/the-everyday-developer/detect-file-mime-type-using-magic-num
はじめに 2021/7/17現在、GraphQL APIを通じてファイルをアップロードする方法は規定されていない。そのため、GraphQL APIでファイルアップロードを行いたい場合は何らかの工夫を行う必要がある。 GraphQL APIリクエストの変数中にファイルをエンコードして送信することで、ファイルをアップロードするという目的は達成できそうに見える。が、この方法では巨大なJSONをリクエストボディとして送信する必要があり、効率がよくない。また、各種APIサーバーがファイルアップロードのためにメモリを効率的に利用する実装*1を行っていても、その恩恵を受けづらい。 GraphQL multipart request specificationという仕様に則ると、リクエストの変数中にファイルをエンコードして送信する方法と比べて、効率的にファイルをアップロードすることができる。仕様の解説やA
AI 要約 この記事のポイント Google、「Gemini Advanced」メンバーシップ向けに提供していたファイルアップロード機能を、すべての「Gemini」ユーザー向けに開放し提供を開始 「Google ドキュメント」ファイル / PDF /(Word などの)スプレッドシート / そのほかテキスト系ファイルをアップロードすることで、そのファイルの分析や要約などを利用できる便利な機能 「Gemini Advanced」メンバーシップではテキストファイル約 1,500 ページ相当のファイルアップロードに対応していますが、無料ユーザーの場合は約 50 ページ相当のみの対応 Google は 2025 年 2 月 20 日(木)、Google AI「Gemini」にてこれまでプレミアムプラン「Gemini Advanced」メンバーシップ向けに提供していたファイルアップロード機能を、すべ
セキュリティ対策MW WP Formを使ったファイルのアップロードでは、ログインしていなくてもファイルを参照可能な状態となっています。 これは由々しき事態です。このままでは、個人情報漏洩なんてことにもなりかねません。 そこで、この事態を解決したいと思います。 具体的には、下記のようなコードとなります。 add_filter( 'mwform_upload_dir_mw-wp-form-〇〇〇', function ($path,$Data,$key){ $upload_dir = wp_upload_dir(); return "/mwform_upload_dir{$upload_dir['subdir']}"; }, 10, 3 ); add_filter( 'mwform_admin_mail_raw_mw-wp-form-〇〇〇',function($Mail_raw,$value
はじめに こんにちは、omkです。 今回はSSMセッションマネージャーでEC2に接続し、WindowsのマシンからSCPでファイルをアップロードします。 このときにCLIからアップロードするのではなく、WinSCPを用いてアップロードすることに挑戦します。 CLIで操作するよりもGUIの方が直感的で良い、GUIに慣れているという場合に本記事の内容が当てはまるかと思います。 セッションマネージャーでEC2に対してポートフォワーディングを行ってSCPの経路を作ることでこれを実現します。 セッションマネージャーとは セッションマネージャーはセキュアにサーバに接続するためのサービスです。 例えばこれを用いることでセキュリティグループを開けずにSSHで接続できます。 今回のケースにおいてもSCPでファイルを転送するので通常はSSHと同じく22番ポートを開けることになりますが、セッションマネージャーを
一番カンタンな方法 axiosの第3引数にoptionを渡す。コードはaxiosのgithubから抜粋 document.getElementById('upload').onclick = function () { var data = new FormData(); data.append('foo', 'bar'); data.append('file', document.getElementById('file').files[0]); var config = { onUploadProgress: function(progressEvent) { var percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total ); } }; axios.put('/upload/s
CX事業部Delivery部の新澤です。 S3バケットにファイルがアップロードされたタイミングでウィルススキャンツールのClamAVを用いてウィルススキャンを行う仕組みをCDKでサクッと作ってしまえるコンストラクトをConstruct Hubで見つけたので、使ってみました! 概要 S3バケットにファイルがアップロードされた際のPUTイベントでClamAVを実行するLambda関数を実行して、スキャン実行結果をSQSキューに投入します。 これらの仕組みを簡単に構築するためのCDKコンストラクト"cdk-serverless-clamscan"がConstruct Hubにて公開されていますので、活用してみます。 CDKの作成 まず、projenでCDKの雛形を作成します。 $ mkdir cdk-clamav & cd cdk-clamav $ npx projen new awscdk-a
ビジネスシーンにおいて、PDF、音声データ、画像ファイルなど、様々な種類のファイルを扱う機会は多いですよね。これらのファイルをもっと効率的に活用したいと思ったことはありませんか? 例えば、 会議の音声データから議事録を作成する 論文などのPDFを要約する、重要な項目を抽出する といった作業は、従来の方法では時間と手間がかかるものでした。 しかし、Difyのアップデートで追加されたファイルアップロード機能を使えば、これらの作業を効率化できます。 本記事では、Dify のファイルアップロード機能について、以下の内容を解説します。 アップロードできるファイルの種類と形式 具体的なアップロード方法 音声ファイルからの議事録作成自動化 複数のファイルの同時アップロードと処理 ファイルアップロード機能を使った応用例 ファイルアップロード機能の概要Dify のファイルアップロード機能は、様々な種類のファ
当エントリは『クラスメソッド CSアナリティクス Advent Calendar 2020』12日目のエントリです。 クラスメソッド CSアナリティクス Advent Calendar 2020 - Qiita クラスメソッド CSアナリティクス Advent Calendar 2020 | 特集カテゴリー | Developers.IO ビッグデータ分析支援のカスタマーストーリーアナリティクス|クラスメソッド|クラスメソッドのサービス 当エントリでは、クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト群の1つ、『Data Uploader』で"複数クラウドストレージ環境への出し分け"が出来るという点について紹介します。 目次 『Data Uploader』ではツール1つで複数クラウドストレージ・アカウントへのファイルアップロードが可能で
目的 s3のブロックパブリックアクセスとアクセスコントロールリスト(ACL)、バケットポリシー(Policy)の関連性がややこしくてイマイチピンとこない s3のドキュメントがカオス なので把握も兼ねて、実際のユースケースを元にセキュリティ的にダメなパターンと、どんな設定でできるのかを試す ユースケース awscliでサーバ等から画像をS3へアップロードさせて、S3のオブジェクトURL( https://[バケット名].s3-ap-northeast-1.amazonaws.com/[オブジェクト名] )でパブリックから画像を閲覧させたい場合 = パブリックからファイルアップロードや削除はできないが、パブリックからファイル閲覧できる という確認をダメパターンも含めて実際に試す 前提条件 s3リージョン:ap-northeast-1 パブリックからファイルアップロードされてしまうことの確認(ダ
データアナリティクス事業本部のしんやです。 弊社クラスメソッドでは、複数のデータウェアハウス(Amazon Redshift、Google BigQuery、Snowflake)に対応するデータ統合基盤サービス「CSアナリティクス」を提供・展開しています。 このサービスでは現在、データ統合基盤としてデータの取り込みからテーブル作成やジョブ管理等を行うプロダクトの他に、オンプレ環境からクラウド環境へのデータアップロードをサポートする「CSA Data Uploader」というプロダクトを提供しています。 この度、今月(2020年09月)にリリースされた新しいバージョン「v1.8.0」で、従来可能だったAmazon S3へのデータアップロードの他に「Google Cloud Storgae(GCS)へのデータアップロードにも対応」したことをお知らせします。 当エントリでは、この新しい機能につい
DockerでPHPをインストールした時、PHPのファイルアップロード上限サイズは、特に指定しなければ2MBに設定されます。 いくつかの方法で上限サイズを引き上げることができます。 例として500MBまで上げる方法を紹介します。 Dockerfileで設定する .htaccessファイルで設定する php.iniを編集する スクリプト内でini_set()を使う 設定値の意味 Dockerfileで設定する イメージ作成時にDockerfileに下記のように書き加えることで、ファイル上限を上げることができます。 RUN echo "file_uploads = On\n" \ "memory_limit = 500M\n" \ "upload_max_filesize = 500M\n" \ "post_max_size = 500M\n" \ "max_execution_time =
コンテンツマネジメントシステム(CMS)の「WordPress」向けに提供されているプラグイン「WordPress File Upload」に脆弱性が判明した。アップデートが提供されている。 「同4.24.11」および以前のバージョンに「パストラバーサル」の脆弱性「CVE-2024-9047」が明らかとなったもの。リモートより認証を必要とすることなく、ファイルの読み取りや削除が可能となる。 DefiantのWordfenceによると、特に「PHP 7.4」以下で同プラグインを使用している場合に影響を受けるという。 共通脆弱性評価システム「CVSSv3.1」のベーススコアは「9.8」、重要度は4段階中もっとも高い「クリティカル(Critical)」とレーティングされている。 最新版となる「同4.24.12」において同脆弱性は修正されており、アップデートが呼びかけられている。 (Securit
当エントリは『クラスメソッド CSアナリティクス Advent Calendar 2020』5日目のエントリです。 クラスメソッド CSアナリティクス Advent Calendar 2020 - Qiita クラスメソッド CSアナリティクス Advent Calendar 2020 | 特集カテゴリー | Developers.IO ビッグデータ分析支援のカスタマーストーリーアナリティクス|クラスメソッド|クラスメソッドのサービス 当エントリでは、クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト群の1つ、『Data Uploader』の入力に、任意のGoogle Cloud Storage(GCS)環境下のテキストファイルを指定する手順について紹介します。 目次 Google Cloud Storage(GCS)の接続設定の準備 C
当エントリは『クラスメソッド CSアナリティクス Advent Calendar 2020』6日目のエントリです。 クラスメソッド CSアナリティクス Advent Calendar 2020 - Qiita クラスメソッド CSアナリティクス Advent Calendar 2020 | 特集カテゴリー | Developers.IO ビッグデータ分析支援のカスタマーストーリーアナリティクス|クラスメソッド|クラスメソッドのサービス 当エントリでは、クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト群の1つ、『Data Uploader』の入力に、任意のAzure Blob Storage(Beta)環境下のテキストファイルを指定する手順について紹介します。 目次 事前準備:Azure Blob Storage(Beta) ストレージア
はじめに 先日、s5cmd と AWS CLI の aws s3 コマンドの転送速度を比較検証したところ、AWS CLI の転送速度が予想以上に遅いという結果が出ました。 この結果を受けて、AWS CLI のパラメータを調整することで改善できるか検証しました。具体的には並列度とキューサイズの 2 つのパラメータを変更し、小さなファイルを大量転送するシナリオでの最適化を試みました。 検証結果サマリ 最適な並列数:32(今回の検証環境において) キューサイズの影響:なし(1,000 → 10,000 に変更しても性能変化なし) 転送時間: 60 秒から 21 秒へ改善 パフォーマンス改善の結果 並列数 実行時間(キューサイズ 1,000) 実行時間(キューサイズ 10,000) 改善率
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く