このエントリーは、GMOアドマーケティング Advent Calendar 2018 の 【12/2】 の記事です。GMOアドマーケティングとしては初のAdvent Calendar参戦です。はじめにこんにちは。18年新卒で入社いたしました、GMOアドマーケティングのK.Kです。新卒研修を終え、現在はゴリゴリ業務に取り組んでいます。今回の記事では、弊社のプロジェクトGMOSSPのPHPのバージョンを、PHP7.0からPHP 7.2にバージョンアップしましたので、バージョンアップの際の対応内容に関してご紹介させていただきます。(引用元|https://secure.php.net/download-logo... (引用元|https://secure.php.net/download-logos.php) 目次 PHP7.4に関して 新機能 2-1. 型付きプロパティ 2-2. アロー関数
本日リリースされたChrome 111で、CSSに関する新機能がけっこうたくさんサポートされたので、紹介します。 sin(), cos(), tan()などの三角関数をはじめ、親要素のスタイルに応じて子要素のスタイルを適用できるスタイルクエリ、:nth-child()で「of S」構文が使用できるようになったり、他にもいろいろ盛りだくさんです。 コンテナクエリは先月のFirefox 110ですべてのブラウザで使用できるようになりましたが、今度は三角関数がChromeでサポートされ、すべてのブラウザで使用できるようになりました。 sin()のサポートブラウザ CSSで使用できる三角関数は、sin(), cos(), tan(), asin(), acos(), atan(), atan2()です。すでに2022年にリリースされたSafari, Firefoxではサポートされています。 202
2019年9月16、17日、日本最大のPythonの祭典である「PyCon JP 2019」が開催されました。「Python New Era」をキャッチコピーに、日本だけでなく世界各地からPythonエンジニアたちが一堂に会し、さまざまな知見を共有します。プレゼンテーション「機械学習におけるハイパーパラメータ最適化の理論と実践」に登壇したのは、株式会社サイバーエージェント/産総研特定集中研究専門員の野村将寛氏。講演資料はこちら ハイパーパラメータ最適化問題 野村将寛 氏(以下、野村):簡単に自己紹介をさせていただきます。僕は今、サイバーエージェントのAI Labという研究組織に所属していまして、ハイパーパラメータ最適化の研究をしています。先ほどの午前中のセッションで、AutoMLのセッションがあったと思うんですけど、そちらで発表していた芝田のチームメンバーになります。 産総研でもハイパーパ
本記事ではGoのiter(イテレーター)についての「知らなくても良いけど知っていたらイザという時に助かるかもしれないこと」を紹介します。iterの基本的な使い方等は説明しませんので、以下のmattnさんによる記事を参照してください。 Goのiterの実現方法 では本題。Goのiterとはコルーチンです。Goにおけるコルーチンの導入はRuss CoxのCoroutines for Goという記事にその分析と設計が書かれています。同記事の日本語による拙作のメモがありますので気になる方はそちらもご参照ください。 Russ Coxはこの記事において、コルーチンとはコールスタックの分離と任意の場所への付け替えだ、と分析しました。またgoroutineとチャンネルを用いてコルーチンを実装し、満たすべき機能的要件を明らかにし、また性能的要件からGo言語本体に必要な変更を示しています。この機能と性能の要件
いきなりですが,「これ,なーんだ!?」のお時間です. 正解は,くまモンって眉毛あるんだ じゃなくて,私が研究室内に設置したトラップです. 見た人は当該ブログを読まなくてはなりません. それがこちらです. Pythonで疲弊しているそこのあなたも,読みましょう読みましょう. ただ,英語が母国語ではない人間に英語の記事を投げつけて「オラ読めぇ!!!」というのは横暴だなぁ,という気がしてきたので,ここで和訳を提供しようと思い至りました. 私の翻訳が不正確な場合もあると思いますので,是非Kobzolさんによる原文も読んでいただければ. では,失礼して, 邦訳「RustのようにPythonを書く」 私がRustによるプログラミングを始めたのは数年前のことだが,このことが他の言語(特にPython)での私のプログラム設計指針を徐々に変えていった. Rustを始める前は型ヒントも使わず,いつでも関数の引
EDOCODEでエンジニアをしているYutakaです。 こちらは社内勉強会で発表した資料を元にしています。 関数型言語の知識がほとんどないエンジニアがなっとく!関数型プログラミングで学んだ用語を一部まとめました。原著はGrokking Functional Programmingです。本書はScalaとJavaで説明がされていますが、できる限り社内で使われている言語(Go, JavaScript, TypeScript)でサンプルコードを記載しました。 書籍のソースコードはこちらに全て公開されています。 そもそも関数型プログラミングとは? プログラミングのパラダイムには大きく①命令型プログラミング②宣言型プログラミングがあります。 ①命令型プログラミングとは どのよう(HOW)に計算するかに焦点を合わせ、段階的なアルゴリズムを詳細に定義します。これは実際のハードウェアの計算処理の流れに沿っ
Array.prototypeのreduce()メソッド。 苦手な方や、ややこしいから使わないようにしているという方もいるかな、と。 確かに、他のmap()やfilter()、sort()などと比べるとちょっと難解な感じありますよね。 また、一方では、reduceマジ最強と思ってる方もいると思います。 確かに、集計することも新たな配列を作ることも何でもできますもんね。 そんな避けられたり奉られたりなreduce()について、本当はどんなメソッドなのか自分なりの解釈を書きたいと思います。 (追記:ありがたいことに色々と有益なコメントを頂いているのでそちらも是非ご参照ください。) reduce()とは reduce() メソッドは、配列のそれぞれの要素に対して、ユーザーが提供した「縮小」コールバック関数を呼び出します。その際、直前の要素における計算結果の返値を渡します。配列のすべての要素に対し
中学や高校で学んだ数学を題材にして、Pythonによる数学×プログラミングを学んでみよう。数学の教科書に載っている定理や公式だけに限らず、興味深い数式の例やAI/機械学習の基本となる例を取り上げながら、数学的な考え方を背景としてプログラミングを学べる連載。 第1回 中学・高校数学で学ぶ、数学×Pythonプログラミングの第一歩(2021/07/05) 1. 問題解決の方法を学ぶための最強のツールとは 2. 文法からアルゴリズムへ ・コラム 良いアルゴリズムと数学の知識 3. 数学×Pythonを学ぶことの相乗作用 4. 前提知識と目標 5. Pythonプログラミングの準備と便利なライブラリ 第2回 中学数学だけでフェルマーの小定理をプログラミングしてみよう(2021/07/26) 目標: フェルマーの小定理をプログラミングしてみる 1. サンプルプログラム(演算子の利用) ・【まとめ】演
先週、OpenAIから、APIでの返答に関数呼び出しのパラメータを返してくれるFunction Callingが発表されました。 試してみると結構たのしかったのでまとめてみます。 解説動画はこちら youtu.be とりあえず、こんな感じ。 OpenAIのFunction Callingでツール操作を試すやつ、GPT-4だとかなり文脈を理解してくれるし、位置関係も結構ただしく扱ってくれる。しかし遅い。 pic.twitter.com/nkijZpcnP6— きしだൠ(K1S) (@kis) 2023年6月19日 用意したのは3つの関数。 set_position(id, left, top) set_size(id, width, height) set_color(id, color) で、その割に、「中央に」だとか「隣に」だとか、コンテキストを踏まえて座標などを計算して関数を呼び出して
Excelで複数条件を指定する方法は大きく3つ 複数条件を指定できるSWITCH関数とは? SWITCH関数はどんな時に使える? SWITCH関数を使って、指定の曜日だけを抜き出す SWITCH関数を使って、部署に対応するコードを表示させる SWITCH関数を使って、スコアの順位付けをする IFS関数とSWITCH関数の違いは「判定する対象が複数か単数のどちらか」 IFS関数とSWITCH関数のもうひとつの違いは「条件に幅を持たせられるかどうか」 【まとめ】SWITCH関数は実務で効果的な関数のひとつ ※SWITCH関数はExcel2016で新たに追加された関数であるため、以下のバージョンを使っている方のみ利用可能です。「SWITCH関数が使えない」「SWITCH関数が機能しない」という場合には、バージョンが古いものである可能性もあるので、確認してみてください。 ・Excel2016以上
1行で 遷移を工夫した山登り法によって、強いデッキを高速に編成するアルゴリズムを構築しました。 はじめに はじめまして。9月の上旬に2週間、データサイエンティストコースのインターンに参加した長沢です。普段はKaggleや競技プログラミングにうつつを抜かしており、企業のインターンに参加したのは今回が初めてです。 この記事では、インターン中に私が取り組んだ内容について書きます。機械学習が流行ってるけど組み合わせ最適化も良いぞということが伝われば良いなと思います。 本記事の概要 デッキの良さを示す指標を作り、制約を整理して問題の定式化を行います。解の発見にMIPソルバが有効か確認をした後、山登り法を使って最適化を行い、現行手法と編成デッキの比較を行います。 取り組んだ課題 逆転オセロニア 逆転オセロニア 「逆転オセロニア(以下オセロニア)」というタイトルはどなたも聞いたことがあるのではないでしょ
業務でGoogleスプレッドシートを使っている方は多いと思います。しかし、自己流で使っていると、もっと効率化できる方法があるのに活用できていないことも。 リモートワークでは、できる同僚の仕事術が盗めないのも痛いところです。 そこで今回は、Googleスプレッドシートの簡単に使えて業務効率化のうえで欠かせない機能を、6つに厳選してご紹介したいと思います。 Chromeのアドレスバーに「sheets.new」と入力し、新しいシートを作ってご準備ください。 1.SUMIF関数で条件を設定して足し合わせScreenshot: 山田洋路 via Googleスプレッドシート値を合計するSUMは、最もよく使う関数なんじゃないでしょうか。ただ、なかには不要なデータが混ざっていることも。こういったものを取り除いて計算するためにSUMIFが使えます。 SUMIFでは、データの条件を設定して計算できて、例えば
導入 SQL文でNULL値を扱う際の便利な関数、COALESCEを紹介しようと思います。 SELECT句で、NULL値を置き換えることで、データの可読性を高めることができたり。 ORDER BY句で、NULL値のソートの条件分岐の複雑性を吸収したり。 と、SQL文の簡略化にぴったりです。 今回の記事では、簡単にCOALESCE関数の説明と実践例を2つご紹介します。 COALESCEについて リストの最初の非 NULL 値を返します。非 NULL 値がない場合は、NULL を返します。 つまり、欠損値(NULL)にデフォルト値を指定することができます。 例 SELECT COALESCE(`office`.`locale`, `office`.name`, `リモート勤務`); 上記のクエリを例にすると...。 office.locale(オフィスの場所)を出力。 office.locale
Haskellプロジェクトの「良い習慣」と考えられるやつをまとめてみます。あくまで私の個人的な意見です。 プロジェクト固有のPrelude Prelude に相当するモジュールをプロジェクト独自に持っておくと便利ではないか、という話をします。代替Preludeの話ではありません。 プロジェクト固有のPreludeがあると便利な理由 理由の一つは、標準 Prelude の変化です。直近では次のような変化がありました: GHC 9.4: ~ 型演算子が追加(これまでは構文だった) GHC 9.6: liftA2 が追加 GHC 9.10(見込み): foldl' が追加 もっと昔に遡ると、Semigroup((<>)) が増えるやつなどがありました。 この帰結として、 新しいGHCで名前の衝突が起きやすくなる 新しいGHCで「冗長なインポート」の警告が出やすくなる ことが言えます。これらの問題
普段Go書いているときにそこまで気にしてなかったが、ふと気になったので色々パターンを挙げてみる。なおこの記事には「答え」が書かれてないので、みなさんの意見を聞かせてください。 複数の引数を取るパターン一覧 そのまま引数を羅列する 複数の引数をまとめたstructを取る Functional Options Pattern そのまま引数を羅列する 例えばHTTPリクエストを行うような関数があったとして、 func Request(ctx context.Context, method http.Method, _url string, query url.Values, formValues url.Values) error { // do something } というシグネチャが考えられる。 実際にnet/http.NewRequsetWithContext は func NewReq
前回の続き。将棋AIで最初に大規模機械学習に成功させたBonanzaの開発者である保木さんのインタビューがちょうどYahoo!ニュースのトップ記事として掲載されたところなので、今回はBonanzaの機械学習について数学的な観点から解説してみたいと思います。 Bonanzaの保木さんのインタビュー記事 プロ棋士に迫ったAI「Bonanza」 保木邦仁「将棋を知らないから作れた」 https://news.yahoo.co.jp/feature/1712 BonanzaのGPW発表スライド とは言え、Bonanzaで使われている機械学習の技法は、いまどきの機械学習とは少し毛色が異なるので心の準備が必要です。 まず、保木さんのGPW(ゲームプログラミングワークショップ)での発表スライド、以前はBonanzaの公式サイトからダウンロードできたのですが、Bonanzaの公式サイトがジオシティーズにあ
SORT関数 使い方 関数の説明はこちらです。 ※記事内の画像はGoogleスプレッドシートで作成し、数式の表記もスプレッドシートをメインとしています。Excelでも部分的に同じように利用することができます。 関数 Googleスプレッドシート =SORT(範囲, 並べ替える列, 昇順(TRUE)or降順(FALSE) [ , 並べ替える列2 , 昇順or降順2 , …] ) ※[ ]は条件を2つ以上指定する場合です。カッコは入力しません。 Excel(Excel for Microsoft 365以降で対応) =SORT(範囲, 並べ替える列, 昇順(1)or降順(-1) ) ※Excelの場合、指定できる条件は1つです。 SORT関数は、指定した範囲のデータを、指定した列で昇順もしくは降順で並べ替えて、別の場所に表示することができる関数です。スプレッドシートでは複数の条件を指定すること
JavaScriptのスコープチェーン・変数参照の仕組み、グローバルスコープ、ローカルスコープ、ブロックスコープについてGIFアニメーションで分かりやすく解説された記事を紹介します。 ⚡️⛓JavaScript Visualized: Scope (Chain) by Lydia Hallie 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 JavaScriptのスコープチェーンの仕組みをGIFアニメで分かりやすく解説 JavaScriptのスコープチェーンについてこの記事では解説します。 私は視覚学習者なので、GIFアニメで視覚的に説明することで、あなたの手助けをしようと思います😃 まずは、下記のコードを見てみましょう。 const name = "Lydia" const age = 21 const city = "Sa
はじめに forEachでawaitを使おうとしたら、エラーになり、どうやったらループでawaitを使えるか調べたので、簡単に記載します。 await とは? awaitは非同期処理が終わるまで処理を止めておいてくれる便利なもの jsはawaitやpromiseを使わないと、処理が終わる前に他の処理を実行してしまうので、直列に処理を実行したいときなどは利用すると良い // 非同期関数 async function asyncTask(name) { console.log(`Task ${name} started.`); await new Promise(resolve => setTimeout(resolve, 2000)); // 2秒間スリープ console.log(`Task ${name} completed.`); } // メイン処理 async function m
カリー化と部分適用 先日同僚にカリー化を説明する機会がありました。その際に、簡潔に説明に適した自分用の資料があるといいなと思いましたので、こちらの記事を書くことにしました。 この記事ではカリー化と部分適用について解説します。歴史等には触れずにただその内容について述べます。 混同しやすいという情報があるのですが、割と違うレイヤの話なのでなぜなのかは不明ですが、関連性に関する私見も末尾に書いておきます。 カリー化 カリー化 (Currying)[1]とは 複数の引数を取る関数を、単一の引数を取る関数に翻訳する手法 のことです。 簡単な例を見ます。以下のような2つの引数を持つ関数を考えます。 const add = (a: number, b: number) => a + b; console.log(add(1, 3)); // 4 関数を値のように返す関数のことを高階関数と呼びます。 カリ
Union Types 2.0というRFCが投票中です。 提案者はまたまたのNikita。 2019/10/25開始、2019/11/08終了で、受理には2/3+1の賛成が必要です。 2019/11/04時点で賛成55反対5であり、ほぼ導入確定です。 PHPのunion型って何かというと、TypeScriptのunion型とだいたい同じです。 int|string $aと書いたら$aはint型もしくはstring型ですよ、ということです。 ちなみに別途RFCをGitHubで管理しようという実験が進行中で、このRFCの詳細はGitHub上に存在します。 このRFCはまだNikitaの個人GitHub上にしかないのですが、本決まりになったらPHP公式に移動になると思います。 まあGitHubのほうが管理とか更新とか楽ですからね。 ただGitHubはURLがすぐ404になるのだけはどうにかしてほ
Java 8からJava 15までの道のりには、朗報がたくさんだ。 はじめに この記事ではJava 7以降に追加された素晴らしい新機能を紹介します。2020年秋にリリースされたJava 15まで、Javaのバージョン毎に大きな改善点を見ていきます。Javaは今や、ラムダ式、関数型プログラミング、varによる型推論、単純なコンストラクタによる不変コレクション、複数行文字列を、完全にサポートするようになりました。さらに、データクラス(record)やsealedクラスなど、新しくて面白い実験的な機能があります。そして、時間対効果の高いJava REPLについて説明します。 1. 関数型プログラミング (Java 8) Java 8は、関数型プログラミングとラムダ式を言語機能として追加しました。関数型プログラミングの2つのコアパラダイムは、不変の値と関数の重要性向上です。データは変換処理のパイプ
自作Goコンパイラ babygo でマルチスレッドを動かすこと(=子スレッドの作成)に成功しました。 実は以前に挫折していた 1年半前に 一作目のGoコンパイラ minigo でもマルチスレッドに挑戦したことがあるんですが、そのときは子スレッド生成後すぐに Segmentation Faultが起きてしまい、解決方法わからずあきらめたのでした。(動かなかった syscall cloneの残骸 https://github.com/DQNEO/minigo/blob/5ab7420fbca2f65d81bc761d5cbe51a2b28953a8/internal/runtime/runtime.s#L41-L61 ) (当時は gdb でステップ実行すると他のスレッドも処理が進むということを知らなかったので、ただただ謎の挙動にしか見えなかった) 今回やったこと 今回は以下のように要素技術を
MP3ファイルをダウンロード 内容紹介 hey CTOの藤村さんに、プログラミングにおける命名規則、heyのエンジニア組織設計・戦略などについて語っていただいたエピソードです。 出演者 話したネタ プログラミングにおける命名規則になぜこだわるのか? 名前のないプログラミング言語 WEB+DB PRESS Vol.110 もしくは WEB+DB PRESS総集編[Vol.1~120] 入門 名前 命名規則における「良い」とは何か? CODE COMPLETE 第2版 上 完全なプログラミングを目指して 名前の意味と挙動が一致していること parse という関数命名における例 primary と primal 全体の名前のルーツになる命名は丁寧につける 日本語を、命名規則に使うのはどうか? 関数・変数名を短くすべきか?長くすべきか? Clarity over brevity in variab
人気シリーズの第4弾。今回のテーマは強化学習です。実際のコードを提示し動かしながら学ぶという本シリーズのスタイルを踏襲し、外部ライブラリに頼らず、強化学習を支える基本的な技術やアイデアをゼロから実装しながら学びます。本書では読者が強化学習独特の理論を確実にマスターできるように、強化学習という難解なテーマの構成要素の一つひとつを「理論」と「実践」の双方から丁寧に解説します。数式だけで説明する理論書とは異なり、読者はコードを通してハッとする気づきを数多く得られるでしょう。 関連ファイル サンプルコード 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご
TechFeed Experts Night Pick up Rustの非同期デバッグツールを使いこなせ! ~TechFeed Experts Night#9講演より 本記事は、2022年11月に開催された「TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る」のセッション書き起こし記事「Rustの非同期デバッグツールを使いこなせ! by κeen」を転載したものです。オリジナルはTechFeedをご覧ください。 「Rustの非同期デバッグツールを使いこなせ!」というタイトルで発表していきたいと思います。 κeenと申します。Twitterなどで騒がしくしている人なので、見たことある人も多いのではないかなと思います。仕事は、Idein Incという会社にいて、しばらくRustを書いている期間がありました。 今日は非同期の話をしていきますが、
これは「FOLIO Advent Calendar 2023」6日目の記事です。 ニューラルネットワークで取り扱う数値を実数とは異なる数に拡張することは、機械学習や計算科学の発展における魅力的な課題の一つです。実数を用いた数値表現は多くのタスクにおいて十分な結果をもたらしてきましたが、新たな数値体系を導入することで、今までとは異なる問題が解決できるようになったり実数では見られなかった新たな現象が起こる可能性に期待することができるでしょう。例えば数値が取れる値を±1に制限したBinalized Neural Networksはハードウェアとの相性が良くメモリ効率の良い実装が可能であったり、拡大実数\bar{\mathbb R}={\mathbb R}\cup\{-\infty,\infty\}を用いた5層のReLUネットワークには任意の深さのReLUネットワークを埋め込むことができたりします
$ npm install @mizchi/declass $ npx declass input.ts # -o output.ts export class Point { x: number; y: number; constructor(x: number, y: number) { this.x = x; this.y = y; console.log("Point created", x, y); } distance(other: Point) { return Math.sqrt(Math.pow(this.x - other.x, 2) + Math.pow(this.y - other.y, 2)); } } export class Point3d { constructor(public x: number, public y: number, public z:
はじめに お久しぶりです。セキュリティエンジニアの桑原です。 近年、Go 言語によって作成されたマルウェアが増加しています。 Go 言語の特徴として開発の容易さや任意の環境に向けてビルドを行うクロスコンパイルが可能であるといった点があります。 攻撃者も Go 言語を使用することで、手早く、複数の環境を攻撃できるマルウェアを開発できることが増加要因の 1 つとして挙げられます。 また、以前の記事でも紹介した通り、Go 言語製の実行ファイルは C/C++ 等で作成された実行ファイルとは大きく異なるバイナリ構造をしています。 このため、Go 言語を使用するだけでパターンマッチングによる検出を容易に回避できる可能性があることも増加要因として考えられます。 私たちセキュリティエンジニアは最新の攻撃者の動向に対応するため、Go 言語製マルウェアの解析も必要になってくることでしょう。 そこで、私は先日、
ビジネスエリートのためのExcelデータ分析の教科書 仕事のやり方を劇的に変えたマイクロソフトの表計算ソフトExcel。だが、Excelに対する思いは人それぞれだ。本特集では、ショートカットキーの解説を含めた基礎編に始まり、データ分析や決算書をExcelで読み解く実践編、財務モデルを作るといった応用編まで、それぞれのスキルに応じてビジネスエリートになるためのExcelを学べるようにした。 バックナンバー一覧 とっつきにくいExcelの関数だが、一度使ってみるとその簡単さと時間短縮効果に驚くはずだ。特集『ビジネスエリートのためのExcelデータ分析の教科書』(全10回)の#3では、「SUM」や「VLOOKUP」に加えて、脱・初心者の一歩となる関数「IF」「REPLACE」「COUNTA」など、押さえておくべき「8大関数」を伝授。さらに、「関数入力の基本7カ条」と「ショートカットキー一覧」もお
この記事はHRBrain Advent Calendar 2022の19日目の記事です。 qiita.com はじめに HRBrainではタレントマネジメントシステムHRBrainを提供しています。 社員名簿機能では、運用に合わせて自由に社員情報に紐付く項目を作成・編集することで、あらゆるデータを管理できます。 項目には種類があり、文字列や数値、カスタムプルダウン、計算式など項目の種類も選ぶことが可能です。 レイアウト編集画面(このレイアウト編集画面も一年半ほど前に自分が実装を担当しました。) 計算式項目はさまざまな用途に利用されています。 例えば生年月日から年齢を算出したい場合の計算式は下記の通りです。 ISBLANK({生年月日}) ? '' : DATEDIF({生年月日}, NOW(), 'Y') 計算式の言語仕様は下記をサポートしています。 ISBLANKやDATEDIFなどの関
この記事では2022年03月28日~31日に開催された TC39 meeting 89th で議題に上がったプロポーザルを紹介します。 For Stage 4 For Stage 4 の提案はありませんでした。 For Stage 3 RegExp set notation + Unicode properties of strings Stage 3 に到達しました このプロポーザルは正規表現に新しくvフラグを導入し、その中で set notation と Unicode properties of strings を使えるようにします。 (翻訳するとしたら set notation は「集合の表記」、properties of strings は「文字列プロパティ」でしょうか。定訳がわからないのでこの記事ではこれらの用語を英語のまま表記します。) まず、set notation とは次
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く